您的位置 首页 java

python3的列表、元组、字典的复习和推导式和生成器小结

推荐指数:★★★★

=======================================

python3:列表推导式,生成器表达式,字典推导式

=======================================

一、列表推导式

1.熟悉列表的一般格式:

1.1 代码:

 b=[]
for i in range(21): #推导式,从0~20取
    if i%2==1:  #取余数为1,就是找奇数
        b.append(i) #逐步添加到列表b中
print(b)  

显示:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

1.2 代码:

 
b=list(range(21))
#print(b)  #该列表从0~20
#列表切片法
print(b[1::2]) #从上述列表中的第1位,不是第0位开始取,间隔2,取值,就是取奇数  

显示:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

2.列表推导式:

2.1 代码:

 b=list(range(21))
b=[i for i in b if i%2==1]  #列表推导式
print(b)  

显示:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

2.2 代码:

 #抽取 0~20的奇数并计算其平方
def square(i): #自定义函数,取平方
    return i*i
b=list(range(21))
b=[square(i) for i in b if i%2==1]
print(b)  

显示:[1, 9, 25, 49, 81, 121, 169, 225, 289, 361]

列表推导式解析:

i 是指填充到列表的值

for i in b 是遍历b

if i%2==1 对循环的值进行过滤

3.代码:

 l1 = [['red','qqred','light','eggqq','black'],['list','dict','dictqq','qqset','pigqq']]
l2=[]
for name in l1:
    l3=[n for n in name if n.count('q')>=2]
    l2.extend(l3)  #扩展列表
print(l2)

l4=[n for name in l1 for n in name if n.count('q')>=2]
print(l4)  

显示:[‘DOG’, ‘GREEN’, ‘GOD’, ‘ python ‘, ‘LIST’]

4.列表套列表

代码:

 l =  [('red', 'green', ' blue '), ('python', 'c++' ,' java ','go'), ('big', 'small', 'tiny','bigger','biggest')]
r = [x for t in l for x in t]
print(r)

r2 = [[x for x in t] for t in l]
print(r2)  

显示:l2=l4

[‘qqred’, ‘eggqq’, ‘dictqq’, ‘qqset’, ‘pigqq’]

★复习★:

list.extend(seq)

seq — 元素列表,可以是列表、元组、集合、字典,若为字典,则仅会将键(key)作为元素依次添加至原列表的末尾。

5.列表套元组

代码:

 d1=[x for x in reversed([32, 21, 55, 43, -11])]
print(d1)

d2=[x for x in sorted([32, 21, 55, 43, -11])]
print(d2)  

显示:

[‘red’, ‘green’, ‘blue’, ‘python’, ‘c++’, ‘java’, ‘go’, ‘big’, ‘small’, ‘tiny’, ‘bigger’, ‘biggest’]

[[‘red’, ‘green’, ‘blue’], [‘python’, ‘c++’, ‘java’, ‘go’], [‘big’, ‘small’, ‘tiny’, ‘bigger’, ‘biggest’]]

6.列表顺序反转和排序

代码:

 b=list(range(21))
b=(i for i in b if i%2==1)
#print(b)  
#显示:<generator object <genexpr> at 0x7fd17be39740>
a=[]
for i  in b:
    #print(i)
    a.append(i)
print(a)  

显示:

[-11, 43, 55, 21, 32]

[-11, 21, 32, 43, 55]

二、生成器表达式

generator 这就是生成器的标识,不要以为用小括号就是set,tuple。

代码:

 b={"boy":30,"girl":25}
dict={value:(key+1) for value,key in b.items() }
print(dict)  

显示:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

三、字典推导式

1.代码:

 d1 = {"a_key":"a_value", "b_key":"b_value", "c_key":"c_value"}
d2 = {v:k for k,v in d1.items()}
print(d2)  

显示:{‘boy’: 31, ‘girl’: 26}

2.代码:字典的键值对换

 l = [("小王",18), ("小张",24), ("小李", 20)]
#d= {name:age for name,age in l}
d= {n:a for n,a in l}
print(d)  

显示:{‘a_value’: ‘a_key’, ‘b_value’: ‘b_key’, ‘c_value’: ‘c_key’}

3.代码: 根据可迭代的list对象构建字典

 set_x = (1, 2, 3, 4, 5)
dict_y = {x:x*3 for x in set_x}
print(dict_y)  

显示:{‘小王’: 18, ‘小张’: 24, ‘小李’: 20}

4.代码:以一个set集合中的值作为key,以3倍的key作为值构建一个字典

 sxx = ['to', 'two', 'three', 'g','good', 'pip']
d={ len (s) for s in sxx} #对列表中的 字符串 测长度len,放入字典d中
print(d)

d1 = {value:i for i, value in enumerate(sxx)}
print(d1)

d2 = dict((value,i) for i, value in enumerate(sxx))
print(d2)  

显示:{1: 3, 2: 6, 3: 9, 4: 12, 5: 15}

5.代码:

 sxx = ['to', 'two', 'three', 'g','good', 'pip']
d={len(s) for s in sxx} #对列表中的字符串测长度len,放入字典d中
print(d)

d1 = {value:i for i, value in enumerate(sxx)}
print(d1)

d2 = dict((value,i) for i, value in enumerate(sxx))
print(d2)  

显示:

{1, 2, 3, 4, 5}

{‘to’: 0, ‘two’: 1, ‘three’: 2, ‘g’: 3, ‘good’: 4, ‘pip’: 5}

{‘to’: 0, ‘two’: 1, ‘three’: 2, ‘g’: 3, ‘good’: 4, ‘pip’: 5}

文章来源:智云一二三科技

文章标题:python3的列表、元组、字典的复习和推导式和生成器小结

文章地址:https://www.zhihuclub.com/175465.shtml

关于作者: 智云科技

热门文章

网站地图