Python学习第二周总结
Python学习第二周总结
第二周主要学了python中几种常见的数据结构,分别是列表、元组、字符串、集合、字典重点就是怎么创建和使用这些数据结构,操作方法更是一定要掌握的。
一、列表
1.1 定义
列表是由一系元素按特定顺序构成的数据序列,这样就意味着定义一个列表类型的变量,可以保存多个数据,而且允许有重复的数据
1.2列表的创建
- 字面量语法
list1 = ['apple', 'orange', 'pear']
print(list1)
- 构造器语法
list2 = list(range(1, 10))
print(list2)
- 生成式(推导式)语法
list3 = [i ** 2 for i in range(1, 10)]
print(list3)
1.3列表的相关操作
[:] 表示从头到尾全部取完
[::n] 表示从头到尾,间隔为n依次取完
[m:n] 表示从m到n,但是取不到n
[::-1] 表示从尾到头倒着依次取完
append 表示从最后添加元素
items = ['banana', 'pear', 'apple']items.append('blueberry') items.insert(1, 'strawberry') print(items)
pop() 删除对应下标位置的元素,不输入下标时默认删除末尾元素
clear() 表示清空列表里的所有元素
remove 从列表中删除指定元素,从左到右删除第一个,可以通过循环删除全部
items = ['banana', 'pear', 'strawberry', 'apple', 'blueberry'] items.pop() items.pop(2) items.remove('apple') print(items)
反转
这是直接用切片的方法从最后往前输出,得到反转的效果
items = ['banana', 'pear', 'apple'] print(items[::-1])
我们也可以用reverse来达到一样的效果
items = ['banana', 'pear', 'apple']
items.reverse()
print(items)
排序
sort()对列表进行排序,字符串会按照字母表排序,默认从小到大(升序)排序,即reverse = False, 而reverse = True会按照从大到小(降序)排序。
对于字符串类型的数字,按照首位的数字进行排序,如果相同就比较下一位。
items = ['banana', 'pear', 'apple']
items.sort() # 默认是False升序
print(items)
nums = ['1', '10', '234', '2', '35', '100']
nums.sort(key=int)
print(nums)
需要说明的是,上面列表的里的元素是字符串,而不是数字。如果只是sort()直接排序,得到的应该是[‘1’, ‘10’, ‘100’, ‘2’, ‘234’, ‘35’]。我们用了一个key=int让它把列表里的元素当成数字来排序。
二、元组
2.1定义
元组也是多个元素按照一定的顺序构成的序列。元组和列表的不同之处在于,元组是不可变类型,这就意味着元组类型的变量一旦定义,其中的元素不能再添加或删除,而且元素的值也不能进行修改。定义元组通常使用()
字面量语法,且元组类型支持的运算符跟列表是一样
一个元组中如果有两个元素,我们就称之为二元组;一个元组中如果五个元素,我们就称之为五元组。需要提醒大家注意的是,()
表示空元组,但是如果元组中只有一个元素,需要加上一个逗号,否则()
就不是代表元组的字面量语法,而是改变运算优先级的圆括号。下面用代码演示一下
nums = ('100',)
print(type(nums))
nums = ('100')
print(type(nums))
看,如果没有逗号,计算机认为我们输入的是字符串,而不是元组。所以不能忘记
2.2 元组的相关操作
fruits1 = ('apple', 'banana', 'grape',)
print(type(fruits1))# 重复运算
print(fruits1 * 3)# 成员运算
print('apple' in fruits1)
print('grape' not in fruits1)
fruits1 = ('apple', 'banana', 'grape',)
print(type(fruits1))# 合并运算
fruits2 = ('pitaya', 'litchi')
fruits3 = fruits1 + fruits2
print(fruits3)# 索引和切片
print(fruits3[4], fruits3[-1])
print(fruits3[1:4])
print(fruits3[1:4:2])
print(fruits3[::-1])
三、字符串
3.1 定义
所谓字符串,就是由零个或多个字符组成的有限序列,如果我们把单个或多个字符用单引号或者双引号包围起来,就可以表示一个字符串。字符串中的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等。
3.2字符串的运算
Python为字符串类型提供了非常丰富的运算符,我们可以使用+
运算符来实现字符串的拼接,可以使用*
运算符来重复一个字符串的内容,可以使用in
和not in
来判断一个字符串是否包含另外一个字符串,我们也可以用[]
和[:]
运算符从字符串取出某个字符或某些字符。
a = 'hello,world'# 获取字符串的长度
print(len(a))# 循环遍历字符串每个字符
for i in range(len(a)):print(a[i])for i in a:print(i)# 重复运算
print(a * 5)# 成员运算
print('or' in a)
print('ko' in a)b = 'hello,World'
# 比较运算(比较字符串的内容)
print(a == b)
print(a != b)c = 'goodbye,world'
print(b > c)d = 'hello,everybody'
print(b >= d)# 字符串的拼接
e = '!!!'
print(d + e)f = ' goodbye'
print(d + e + f)
3.3大小写相关操作
a = 'i LOVE you'# 转大写
print(a.upper())# 转小写
print(a.lower())# 首字母大写
print(a.capitalize())# 每个单词首字母大写
print(a.title())b = 'abc123'
# 判断字符串是不是数字
print(b.isdigit())# 判断是不是字母
print(b.isalpha())# 判断是不是字母和数字
print(b.isalnum())# 判断是不是ASCII码字符
print(b.isascii())c = '你好呀'
print(c.isascii())
print('-' * 5)# 判断字符串是否用指定内容开头
print(c.startswith('你好'))# 判断字符串是否用指定内容结尾
print(c.endswith('啊'))
3.4查找操作
在字符串中查找有没有某个子串的操作
~index / rindex
~find / rfind
a = 'Oh apple, i love apple.'
# index - 从左向右寻找指定的子串(substring),可以指定从哪开始找,默认是0
# 找到了返回子串对应的索引(下标),找不到直接报错(程序崩溃)
print(a.index('apple'))
print(a.index('apple', 10))
print(a.rindex('apple'))# find找到了返回子串对应的索引(下标),找不到不会报错(返回-1)
print(a.find('apple'))
print(a.find('apple', 10))
print(a.rfind('apple'))
print(a.find('banana'))
print(a.rfind('banana'))
3.5字符串的拆分和合并
content1 = 'You go your way, I will go mine'
content2 = content1.replace(',', '').replace('.', '')
words = content2.split()
print(words, len(words))
for word in words:print(word)# 用空格拆分字符串,最多允许拆分3次
words = content2.split(' ', maxsplit=3)
print(words, len(words))# 从右往左进行字符串拆分,最多允许拆分3次
words = content2.rsplit(' ', maxsplit=3)
print(words, len(words))# 用逗号拆分字符串
items = content1.split(',')
for item in items:print(item)content3 = ['请不要相信我的美丽','更不要相信我的爱情','因为在涂满油彩的面孔下','有着一颗戏子的心'
]
# 将列表中的元素用指定的字符串连接起来
print(','.join(content3))
四、集合
4.1定义
集合的定义是“把一定范围的、确定的、可以区别的事物当作一个整体来看待”,集合中的各个事物通常称为集合的元素。集合应该满足以下特性:
- 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。
- 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。
- 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
4.2集合的运算
set1 = {1, 2, 3, 4, 5}
set2 = {2, 4, 6, 8}
# 成员运算---确定性(元素要么在集合中,要么不在集合中)
# 集合的成员运算在效率上是远远高于列表的成员运算
print(1 in set1)
print(1 not in set1)# 交集
print(set1 & set2)# 并集
print(set1 | set2)# 差集(前有后没有)
print(set1 - set2)
print(set1.difference(set2))
print(set2 - set1)# 对称差
print(set1 ^ set2)
print((set1 | set2) - (set1 & set2))
print(set1.symmetric_difference(set2))set3 = {1, 2, 3, 4, 5, 6, 7, 8, 9}
# 判断真子集(<)
print(set1 < set3)# 判断子集(<=)
print(set2 <= set3)# 判断超集(>)
print(set3 > set2)
4.3集合的操作
set1 = {'apple', 'banana', 'pitaya', 'apple'}
# 添加元素
set1.add('grape')
print(set1)# 删除元素
set1.discard('pitaya') # 指定删除
print(set1)
print(set1.pop()) # 随机删除
print(set1)# 清空
set1.clear()
print(set1)# 用集合给列表去重
nums = [1, 10, 1, 4, 4, 5, 6, 6, 1]
set2 = set(nums)
list1 = [set2]
print(list1)
4.5简单的总结
Python中的集合底层使用了哈希存储的方式,对于这一点我们暂时不做介绍,在后面的课程有需要的时候再为大家讲解集合的底层原理,现阶段大家只需要知道集合是一种容器,元素必须是hashable
类型,与列表不同的地方在于集合中的元素没有序、不能用索引运算、不能重复。
五、字典
5.1字典的创建
在Python中创建字典可以使用{}
字面量语法,这一点跟上一节课讲的集合是一样的。但是字典的{}
中的元素是以键值对的形式存在的,每个元素由:
分隔的两个值构成,:
前面是键,:
后面是值,代码如下所示。
# 字面量语法
student1 = {'id': 1034,'name': 'zhou','sex': True,'birthday': 1998-5
}
print(student1)# 构造器函数
student2 = dict(id=1034, name='zhou', sex=True)
print(student2)
5.2字典的运算
student1 = {'id': 1034,'name': 'zhou','sex': True,'birthday': 1998
}
print(student1)# 遍历字典中的键
for key in student1.keys():print(key)
print('-' * 20)# 遍历字典中的值
for value in student1.values():print(value)
print('-' * 20)# 遍历字典中的键值对
for key, value in student1.items():print(key, value)student = dict(id=1034, name='zhou', sex=True, birthday=1998)
# 字典的索引运算放在赋值运算符的左边,且索引对应的键是存在的,就更新它的值
student['name'] = '小黄'
student['sex'] = False
# 字典的索引运算放在赋值运算符的左边,但字典中没有对应的索引,就增加一组新的“键值对”
student['address'] = '重庆'
print(student)print('name' in student)
print('age' in student)
print('address' in student)# 使用get函数通过key获取value时,如果key不存在,不会发生keyError错误,
# 而是得到一个None(空值)或者是你指定的默认值。
print(student.get('age'))
print(student.get('age', 20))
print(student.get('name'))# 删除键值对--->键必须存在,如果不存在会产生KeyError错误
# del student['name']
print(student.pop('name'))# 如果要使用下标(索引)运算,那么必须要保证键一定存在
if 'birthday' in student:print(student['birthday'])
5.3字典的相关操作
dict1 = {'A': 100, 'B': 200, 'C': 300}
dict2 = {'D': 400, 'E': 500, 'A': 600}# 更新(元素的合并或更新)
dict1.update(dict2)
print(dict1)# 删除
del dict1['B']
print(dict1) # 直接删除,不会返回删除的值
print(dict1.pop('A')) # 会把删除的元素返回
print(dict1)
dict1.popitem() # 是删除最后一个键值对
print(dict1)# 输入一段话,统计每个英文字母出现的次数
x = input('请输入一段话:')
b = {}
for i in range(26):b[f'{chr(i + 97)}'] = x.count(f'{chr(i + 97)}')
print(b)# 方法二
import stringresults = {letter: 0 for letter in string.ascii_lowercase}
print(results)
content = input('请输入:').lower()
for ch in content:if ch in results:results[ch] += 1
for key, value in results.items():print(f'{key}: {value:>2d}次')
5.4简单的总结
Python程序中的字典跟现实生活中字典非常像,允许我们以键值对的形式保存数据,再通过键索引对应的值。这是一种非常有利于数据检索的数据类型,底层原理我们在后续的课程中再研究。再次提醒大家注意,字典中的键必须是不可变类型,字典中的值可以是任意类型。
一段话,统计每个英文字母出现的次数
x = input(‘请输入一段话:’)
b = {}
for i in range(26):
b[f’{chr(i + 97)}’] = x.count(f’{chr(i + 97)}’)
print(b)
Python学习第二周总结相关推荐
- 吴恩达深度学习第二周--logistic回归作业1
吴恩达深度学习第二周–logistic回归作业1 本系列为吴恩达老师深度学习作业的总结,其中参考了很多优秀的文章,本文为了方便日后的复习与巩固,更为详细的作业讲解参考 目录 吴恩达深度学习第二周--l ...
- 深入理解吴恩达老师深度学习课程(01神经网络和深度学习 第二周)
深入理解吴恩达深度学习(01神经网络和深度学习 第二周) 1引言 2.1 二分类(Binary Classification) 2.1.1 符号定义(视频给出的) 2.2 逻辑回归(Logistic ...
- java学习第二周周记
JAVA学习第二周周记 **day1.**流程控制语句 ,跳转控制语句 **day2.**什么是方法?方法的重载 **day3.**数组,栈和队列 **day4.**冒泡排序及对象的引入 **day5 ...
- 开始Python学习第二课(python环境安装)
*** 开始Python学习第二课*** 一. Python语言简介 1. Python语言 1.1 Python的命名 2. Python基本概念 2.1 Python的简单介绍 2.2 Pytho ...
- python学习第二天
python学习第二天 输入 这篇文章我们来讲讲 python是如何进行输入的 先看一下源代码: name = input('请输入你的名字:') #在这里我们定义一个变量name 它的值就是后面in ...
- python学习第一周总结
python学习第一周总结 一.Markdown语法 Markdown是一种轻量级标记语言,排版语法简洁,它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML.PDF 以及本身的 . ...
- python编程学习——第二周
第二周 python学习笔记和做的一些习题 (python编程快速上手--让繁琐工作自动化) 第四章节 列表 列表数据类型 "列表"是一个值,它包含多个字构成的序列. 列表中的值成 ...
- 01 Python学习--第一周--开课介绍、数据类型、数据运算、表达式、循环、三元运算、对象基本概念...
模块一主要内容 开课介绍 python发展介绍 第一个python程序 变量 字符编码与二进制 字符编码的区别与介绍 用户交互程序 if else流程判断 while 循环 while 循环优化版本 ...
- 吴恩达深度学习第二周+二分类应用+猫图片识别
由于最近在看吴恩达老师深度学习的课程,在第二周有一个关于猫图片识别的习题,下面将自己的一些体会和代码分享. 有关数据集的下载可以自行百度. 下载好数据集之后会发现是一个.h5的文件.所以我们首先导入 ...
最新文章
- Webpy 0.3新手指南
- python从txt拿取数据_python从txt文件读取数据
- sqlserver2000分页存储过程(原创)
- CVE-2021-33909:Linux本地权限提升漏洞
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan缩点
- NSubstitute完全手册(一)入门基础
- 如何在Chrome中保存您当前的所有标签,以便以后阅读
- BP神经网络原理简介
- 硬盘属于计算机主机吗,电脑主机换硬盘后还是不是原来的主机?
- springboot线程池
- 百万生意难度跟十万一样,十万的也没做成
- Java Web应用开发实用教程_Java Web应用开发实用教程
- opera官方教程 预订二
- 绝地求生要java吗_绝地求生卡盟_【Java】几种典型的内存溢出案例,都在这儿了!...
- asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息
- 算法工程师的职业发展前景思考和总结
- 如何做云班课上的计算机作业,云班课不分组怎么提交作业
- 阿拉伯数字转大写金额(支持简体和繁体)
- 中国第一程序员——求伯君(二)
- 作为一个应届生总结最近的面试技巧
热门文章
- 计算机键盘操作指法要求,技巧:计算机键盘的基本指法是什么?
- C# Winform调用百度接口实现身份证文字识别教程完整版!!!(源码)
- PyTorch中的叶节点、中间节点、梯度计算等知识点总结
- “云时代”HCP赋能企业走向数据新蓝海
- zookeeper 分布式barrier
- java找不到的模板_java – 在当前主题中找不到样式’coordinat...
- python表达式_Python-计算字符串中的数学表达式
- 【Matlab】错误使用 classify (line 233) The pooled covariance matrix of TRAINING must be positive definite.
- 《网页设计与制作项目教材》-Chapter06千年之恋 -20210605
- (转载博客园~雨落忧伤~)iis 设置了主机名 就不能访问