python入门基础之容器转换+推导式

文章目录

    • 【1】容器转换
    • 【2】推导式
      • (1)列表
      • (2)字典
      • (3)集合

小白自用笔记,文章参考于
https://blog.csdn.net/qq_46126118/article/details/107376609

【1】容器转换

列表、集合、元组之间的转化
变为列表:list(xx)
变为集合:set(xx)
变为元组:tuple(xx)

list1=['b','b','c','d','e']
s1={100,200,300,400} 
t1=('a','b','c','d','e')

print(list(t1))     #  ['a', 'b', 'c', 'd', 'e']
print(list(s1))     # [200, 100, 400, 300]

print(set(list1))   # {'c', 'e', 'b', 'd'}
print(set(t1))      # {'c', 'e', 'd', 'a', 'b'}

print(tuple(list1)) #  ('b', 'b', 'c', 'd', 'e')
print(tuple(s1))    #  (200, 100, 400, 300)

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

【2】推导式

(1)列表

即用一个表达式创建一个有规律的列表或控制一个有规律列表
需求1:创建一个1-10的列表
方法1:while/for循环

#while循环
list1=[]
i=1
while i<=10:
    list1.append(i)
    i+=1
print(list1)
#for循环
for i in range(1,11):
    list1.append(i)
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

方法2:列表推导式

list1=[i for i in range(1,11)]
print(list1)
#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

需求2.:创建一个0-10的偶数序列
方法1:range

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

方法2:if

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

方法2:range+if

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

需求3:创建[ (1,0), (1,1), (1,2), (2,0), (2,1) (2,2) ]列表
方法:两个range
list = { 格式 for 变量1 in 来源1 for 变量2 in来源 2},两个for会产生嵌套的效果

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)]

(2)字典

快速合并列表为字典或提取字典中目标数据
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为key,list2为value。如果list1>list2则报错,所应选取短的list的长度
dict = { 目标格式 for 变量 in 变量来源 }

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'}

3.提取字典中的目标数据
dict2 = { 目标格式 for 目标数据 in 数据来源 if 条件 }

dict1 = {
    'day1': 100,
    'day2': 120,
    'day3': 200
}
dict2 = {key:value for key,value in dict1.items() if value>100}
print(dict2)
#{'day2': 120, 'day3': 200}

(3)集合

1.根据list1的数据创建集合
s1的数据为list1每个数的平方

list1 = [1,2,3,4]
s1 = {i**2 for i in list1}
print(s1)
#{16, 1, 4, 9}

你可能感兴趣的:(python笔记,python)