def test_list_one():
“”“快速生成一个[“data0”, “data1”,]列表”“”
list1 = []
for i in range(100):
list1.append(“data{}”.format(i))
return list1
def test_list_two():
“”"
快速生成一个[“data0”, “data1”,]列表
列表推导式:[x for x in xx]
推导式的优势:
语法简洁性能更好
先执行for循环,将去出来的值,存放到x
再将x存放到[]列表中
return:
“”"
list2 = [“data{}”.format(i) for i in range(100)]
return list2
需求:使用列表推导式生成一个[0,5,10,15,20,25,30,35,40]
方式一:
def test_list_three():
list3 = []
for i in range(0, 51):
if i % 5 == 0:
list3.append(i)
return list3
方式二:
def test_list_four():
“”"
[x for x in 可迭代对象 if 过滤条件]
:return:
“”"
list4 = [i for i in range(51) if i % 5 == 0]
return list4
def test_list_five():
list5 = [“data{}”.format(i) if i % 2 == 0 else “lemon{}”.format(i) for i in range(10)]
return list5
推导式结合条件语句:
形式一:[x for x in XX if 条件]----需求:生成一个[“data1”, “data3”, “data5”,]的列表
形式二:[x1 if 条件 else x2 for x in XXX]----三元运算符:x1 if else x2 需求:生成一个[“data0”,“lemon1", “data2”,"lemon3,]的列表
三元运算符
a = 10
if a > 10:
res = True
else:
res = False
使用三元运算符表达式如下:
res = True if a > 10 else False
注意事项:
一般只用列表推导式来创建新的列表
尽量保持简洁,代码超过了两行,就要考虑使用for循环
if name == ‘main’:
print(test_list_one())
print(test_list_two())
print(test_list_three())
print(test_list_four())
print(test_list_five())
如果:列表嵌套列表就不建议使用列表推导式
字典推导式
有一个列表i,把他转换为一个元素下标为键,值为元素值的字典格式的数
{key:value for key,value in XXX}
def test_dict_one():
li = [“a”, “b”, “c”, “d”, “e”, “f”]
dict_one = dict()
for k, v in enumerate(li):
dict_one[k] = v
return dict_one
def test_dict_two():
li = [“a”, “b”, “c”, “d”, “e”, “f”]
dict_two = {k: v for k, v in enumerate(li)}
return dict_two
def test_set_one():
lb = [1, 20, 30, 1, 20]
set_one = set(lb)
return set_one
def test_set_two():
lb = [1, 20, 30, 1, 20]
set_two = {i for i in lb}
return set_two
#使用字典推倒是将下面字符串格式的数据,改成字典类型的数据
cookie_str='BIDUPSID=D0727533D7147B7:PSTM=530348042:BAIDUID=B1005C9BC2EB28;sugstore=0; cfduid=doa13458f8ac2a;BD_uPN=2314353;ispeed_1sm=2;BDORZ=B490B5EBF6F3CD402
cookie_str = ‘BIDUPSID=D0727533D7147B7;PSTM=530348042;BAIDUID=B1005C9BC2EB28;sugstore=0; cfduid=doa13458f8ac2a;BD_uPN=2314353;ispeed_1sm=2;BDORZ=B490B5EBF6F3CD402’
使用分号分割字符串得到键值对列表
kv_pairs = cookie_str.split(‘;’)
使用字典推导式将键值对转换为字典
cookies_dict = {k.strip(): v.strip() for pair in kv_pairs if pair for k, v in (pair.split(‘=’, 1),)}
print(cookies_dict)
if name == ‘main’:
print(test_dict_one())
print(test_dict_two())
print(test_set_one())
print(test_set_two())