1、列表解析式:是指通过列表中嵌套的循环运算得到相应的列表
squared = [x ** 2 for x in range(4)]
for i in squared:
print i
输出结果:0,1,4,9
列表解析甚至能做更复杂的事情, 比如挑选出符合要求的值放入列表:
sqdEvens = [x ** 2 for x in range(8) if not x % 2]
for i in sqdEvens:
print i
输出结果:0,4,16,36
字典推导式:和列表解析式类似,也是利用字典中嵌套的循环语句生成我们所需的字典。
temp = '
BAIDUID=035165E83DED0F8BF149F1843655052B:FG=1; PSTM=1509961745; BIDUPSID=3211D70DF3D2391BFD001DA7D37A72A8; BDUSS=JqWX41NTl5NFUwalRiR1dOaHdLeVhwN0FRSktrRHVsbDN0bHZ1bHYyTTJpVGhhSVFBQUFBJCQAAAAAAAAAAAEAAAAtkzA0trC2sLKoysfO0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADb8EFo2~BBaYU; ispeed_lsm=2; B64_BOT=1; MCITY=-%3A; pgv_pvi=9849323520; BD_HOME=1; BD_UPN=12314353; sug=3; sugstore=1; ORIGIN=0; bdime=0; H_PS_645EC=31cbTCNch68RkFezxpslO1o7JFWWlTmcvsputWaKtR%2B7zVzNNQFdVZyFyAy3L6GQhI42; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; BD_CK_SAM=1; PSINO=5; BDSVRTM=127; H_PS_PSSID=1423_21126_17001_20927; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598'
思路:首先将字符串通过“;”符合进行切割,得到一个包含所有数据的列表,对列表进行循环遍历得到对每一个字符串进行切割和重组。
{i.split('=')[0]:i.split('=')[1] for i in temp.split('; ')}
就可以将temp转换为一个字典