列表推导式&字典推导式&集合推导式

列表推导式

旧的列表-------》新的列表

格式: [表达式 for 变量 in 旧列表] [表达式 for 变量 in 旧列表 if 条件] [结果A if 条件 else 结果 for 变量 in 列表]
# 1.列表推导式:格式:[表达式 for 变量 in 旧列表] 或者 [表达式 for 变量 in 旧列表 if 条件]

# 过滤长度小于或等于3的人名
names = [tom, lly, qwer, drfv lok, icfs, fdjffi, yr]
result = [name for name in names if len(name) > 3]
print(result)

# 单词首字母转换为大写
result = [name.capitalize() for name in names if len(name) > 3]
print(result)

# 打印出1--100中能被3整除的数字
newlist = [i for i in range(1, 101) if i % 3 == 0]
print(newlist)

# 0--5偶数 0--10奇数
# [(偶数,奇数),(),(),(),()]
newlist1 = [(x, y) for x in range(5) if x % 2 == 0 for y in range(10) if y % 2 != 0]
print(newlist1)

list1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [5, 4, 8]]
nelist1 = [i[-1] for i in list1]
print(nelist1)

dic1 = {
          
   name: lly, salary: 1000}
dic2 = {
          
   name: lu, salary: 2300}
dic3 = {
          
   name: yrr, salary: 1800}
dic4 = {
          
   name: bccs, salary: 1735}

dlist = [dic1, dic2, dic3, dic4]
newdlist = [employee[salary] + 200 if employee[salary] > 2000 else employee[salary] + 500 for employee in dlist]
print(newdlist)

运行结果:

[qwer, drfv lok, icfs, fdjffi]
[Qwer, Drfv lok, Icfs, Fdjffi]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
[(0, 1), (0, 3), (0, 5), (0, 7), (0, 9), (2, 1), (2, 3), (2, 5), (2, 7), (2, 9), (4, 1), (4, 3), (4, 5), (4, 7), (4, 9)]
[3, 6, 9, 8]
[1500, 2500, 2300, 2235]

集合推导式

集合推导式 {}类似列表推导式,在列表推导式的基础上去除重复项

格式:{表达式 for 变量 in 旧列表}
# 集合推导式 {}类似列表推导式,在列表推导式的基础上去除重复项

list1 = [1, 2, 3, 4, 5, 5, 4, 3, 6, 2, 7, 3]
set1 = {
          
   x-1 for x in list1 if x > 4}  # 注意集合中不能有重复元素
print(set1)

# 运行结果:{4, 5, 6}

字典推导式

格式:

{key,value for key,value in 字典.items()}

实例:

# 字典推导式
dict1 = {
          
   a: A, b: B, c: C, d: C}
newdict1 = {
          
   value: key for key, value in dict1.items()}
print(newdict1)

# 运行结果是:{A: a, B: b, C: d}
经验分享 程序员 微信小程序 职场和发展