python学习day12(容器转换类型,推导式(列表,集合,字典))

容器转换类型

【1】tuple():转换为元组

list1=['b','b','c','d','e']
s1={100,200,300,400}
t1=('a','b','c','d','e')
# tuple():转换为元组
print(tuple(list1))
print(tuple(s1))
#  ('b', 'b', 'c', 'd', 'e')
#  (200, 100, 400, 300)

【2】list():转换为列表

list1=['b','b','c','d','e']
s1={100,200,300,400}
t1=('a','b','c','d','e')
# list():转换为列表
print(list(t1))
print(list(s1))
#  ['a', 'b', 'c', 'd', 'e']
# [200, 100, 400, 300]

【3】set():转换为集合

list1=['b','b','c','d','e']
s1={100,200,300,400}
t1=('a','b','c','d','e')
# list():转换为列表
print(set(list1))
print(set(t1))
# {'c', 'e', 'b', 'd'}
# {'c', 'e', 'd', 'a', 'b'}

注意:
【1】集合有查重功能,所以会删去重复的部分
【2】集合不支持下标

推导式

范围:列表字典集合

列表推导式

作用:用一个表达式创建一个有规律的列表或控制一个有规律列表
别名:列表生成式

体验
需求:创建一个0-10的列表
方法一:while循环实现

# 1.准备一个空列表
list1=[]

# 2.书写循环,一次追加数字到空列表list1
i=0
while i<=10:
    list1.append(i)
    i+=1

print(list1)
#  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

注意:python没有list1[i-1]=i的算法

方法二.for循环

# 1.准备一个空列表
list1=[]

# 2.书写循环,一次追加数字到空列表list1
j=0
for i in range(0,11):
    list1.append(i)

print(list1)
#  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

方法三:列表推导式

list1=[i for i  in range(11)]

print(list1)
#  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

带if的列表推导式

需求:创建0-10的偶数列表
方法一:rang()

list =[i for i in range(0,10,2)]
print(list) #[0, 2, 4, 6, 8]

方法二:if

list =[]
for i in range(10):
    if i%2==0:
        list.append(i)
print(list) #[0, 2, 4, 6, 8]

方法三:

list =[i for i in range(10) if i%2==0]
print(list) #  [0, 2, 4, 6, 8]

多个for循环实现列表推导式

需求:创建列表如下

[ (1,0), (1,1), (1,2), (2,0), (2,1) (2,2) ]

代码如下

list =[(i,j) for i in range(1,3) for j in range(3)]
print(list) #[0, 2, 4, 6, 8]
# [(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

for循环嵌套

字典推导式

思考:如果有下面的两个列表

list1=[‘name’, ‘age’, ‘gender’]
list2=[‘tom’, 12, ‘man’]

如何快速合并为一个字典?
答:字典推导式

作用:快速合并列表为字典或提取字典中目标数据

体验:
【1】创建一个字典:字典key是1-5的数字,value是这个数字的2次方

dict ={i: i**2 for i in range(1,5)}
print(dict)
#{1: 1, 2: 4, 3: 9, 4: 16}

【2】将两个列表合并一个字典:

list1=['name',  'age',  'gender']
list2=['tom',  12,  'man']
dict={list1[i]:list2[i] for i in range(len(list1))}
print(dict)
#{'name': 'tom', 'age': 12, 'gender': 'man'}

如果list1>list2

list1=['name',  'age',  'gender','lll']
list2=['tom',  12,  'man']
dict={list1[i]:list2[i] for i in range(len(list1))}
print(dict)
# 报错

需要长度改为短的list2

注意:列表长短与统计参考的选取

【3】提取字典中的目标数据
选择出大于等于120的数据

list1={'day1':111,'day2':120,  'day3':290}

dict={key:value for key, value in list1.items() if value >=120}
print(dict)
# {'day2': 120, 'day3': 290}

集合推导式

使用率不高
需求:创建一个集合,数据为下方列表的二次方

list1=[1,1,2]

代码:

list1=[1,1,2]

dict={i**2 for i in list1}
print(dict)
# {1, 4}

注意:集合的去重功能

总结:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值