在编写Python代码时,我们通常要面对很多列表,而这些列表里的对象,可能也是相互关联的。通过列表推导,很容易能根据某个表达式从源列表推算出一份派生类表。
names = ['GGG','HH','SSSS']
letters = [len(n) for n in names]
longest_name = None
max_letters = 0
for i in range(len(names)):
count = letters[i]
if count > max_letters:
longest_name = names[i]
max_letters = count
print(longest_name)
输出为:
这段代码的缺点在于循环语句看上去很乱,不易理解。
使用Python的zip函数,可以是代码更为简洁。在Python3中的zip函数,可以把两个或两个以上的迭代器封装为生成器,以便稍后求值。这种zip生成器,会从每个迭代器中获取该迭代器的下一个值,然后把这些值汇聚成元组,与通过下标来访问多份列表的写法相比,用zip更简洁清晰。
names = ['GGG','HH','SSSS']
letters = [len(n) for n in names]
longest_name = None
max_letters = 0
for name,count in zip(names,letters):
if count > max_letters:
longest_name = name
max_letters = count
print(longest_name)