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

d416d07157d54b50f22dc4d39d0b68d0.png

推荐指数:★★★★

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

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*ib=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)  #显示: 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}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值