即使模电考试如此紧张,我还是依旧勤劳的更新,真是...
1、列表的推导式嵌套
[语句 for 变量1 in 可迭代对象1 for 变量二 in 可迭代对象2]
比如,对列表L1和L2数字分别求和
L3 = [x + y for x in L1 for y in L2]
写在前面的循环先执行
2、练习:用列表推导式嵌套生成['A1','A2','A3','B1','B2','B3','C1','C2','C3']
L3 = [str(chr(x)) + (str(chr(y))) for x in range(ord('A'),ord('C') + 1) for y in range (ord('1'),ord('4'))]
print(L3)
#我简直就是个天才
3、元组tuple
元组是不可改变的序列,可list一样,可以存储任意类型的元素
一旦生成无法进行改变和修改
表示方法:
用()括起来,单个元素括起来之后要加逗号,区别元组和单个元素,多个元素用逗号隔开
4、创建元组
t = 200,
t = (200,)
t = 100,200,300
t = (1,2,3)
5、元组tuple的构造函数
t = tuple()
t = tuple(iterable)
和list的没有区别
6、元组的算术运算
+ += * *=
和list的算术运算结果是完全一样的
算术运算得到的元组都是新的对象,元组算术运算也是
7、元组的比较运算
> >= < <= ==
规则和列表、字符串相同
8、元组的切片
和list一样,但是元组的切片不能赋值
9、引用计数:一个对象,有一个值记录其被应用的次数,到0时,对象会被回收
10、del删除一个元组
但是del不能删除元组内的元素,因为元组一旦生成是不可变的
11、函数sorted
sorted(iterable,reverse = Flase)
返回排序后的可迭代对象,不破坏原对象顺序
函数reversed
reversed(iterable)
返回反转后可迭代对象的地址,一般如下使用
for x in reversed(L1):
print(x)
12、字典dict
可以存储任意类型数据,数据的检索效率很高
字典中每个元素都用“键”(key)进行索引,而不像其他可迭代对象用下标进行索引
字典中数据没有先后关系,字典的存储是无序的
字典中数据和键值一一对应
字典的键值不能重复,且只能用不可变类型(可变类型包括list,dict,set,bytearray)做字典的键
13、字典的字面值表示方法
以{}表示一个字典,其中用:分隔每个键和值,用:分割键和值
14、创建字典
d = {}
d = {"name":"Williamcode","age":"19"}
字典的键值必须是不可变类型
d = {(2018,08,08):"奥运会开幕式"}
d = {1:'one,2:'two'}
d = {123:[1,2,3],"234":[2,3,4]}
d = {True:"True 表示真",False:'False代表假'}
15、字典的构造函数
d = dict()
d = dict(iterable) 传入的可迭代对象必须可以成对的拿出值,换句话说,可迭代对象中的每一个元素,都必须包含两个子元素
d = dict(**kwargs) 用命名关键字传参形式生成一个字典
示例:
d = dict([(1,2),(3,4),"ab"])
d = dict(name = "WilliamCode",age = 19)
关键字表达式的左值必须是符合变量名命名规则的字符串,比如1 = 'WilliamCode'就不行
且当左值为一个已经存在的变量名时,解释器依然只把左值当作字符串处理
16、字典的键索引
字典[键] 来获取键对应的值
d = dict(name = "WilliamCode",age = 19,gender = 'male')
print("Age and gender of %s is %d & %s" % (d['name'],d['age'],d['gender']))
17、修改键的值
d = dict()
d['name'] = "WilliamCode' #创建新的键值对
d['age'] = 19 #创建新的键值对
d['age'] = 18 #利用索引修改键的值
18、初始化时向字典插入多个键值对时有重复键值对出现时的冲突处理问题:保留最后出现的那个值
19、del删除语句
用于删除字典中的键,同时删除与值的引用关系
del d[键值]
比如
d = dict(name = "WilliamCode",age = 19,gender = 'male')
del d['name']
那么d = {'age': 19, 'gender': 'male'}
20、字典的成员资格判断符
in 和 not in
判断某键值是否在字典内
21、可以用于字典的内建函数
len()
max() #返回字典键的最大值,同时有字符串和int做键时会出错,因为无法比较;只对键进行操作
min() #返回字典键的最小值,同时有字符串和int做键时会出错,因为无法比较;只对键进行操作
sum() #返回字典键的加和,同时有字符串和int做键时会出错,因为无法加和;只对键进行操作
any() #对键值进行真值测试...;只对键进行操作
all() #对键值进行真值测试...;只对键进行操作
22、字典的常用方法
d.clear() 清空一个字典
d.pop(key) 移除键,同时返回该键对应值的引用
d.copy() 返回字典d的副本,只复制一层做(浅拷贝)
d.update(D1) 合并d和D1,如果用相同的键,则以D1的值最为键的值
d.get(key[,default = None]) 得到一个键的键值,如果不存在,返回default的值(默认为None)
d.keys() 返回d中所有键组成的可迭代对象dict_keys,可以用于遍历一个字典
d.values() 返回d中所有值组成的可迭代对象dict_values
d.items() 返回d中所有键值对所组成的元组所组成的可迭代对象dict_items
23、练习题:输入一个字符串,打印字符串中每个字符出现的次数
str1 = input("please input a string")
d1 = dict()
for c in str1:
if c in d1:
d1[c] += 1
else:
d1[c] = 1
for i in d1.items():
print("%s appeared %d times" % (i[0],i[1]))