列表的Python扩展方法将第一个列表的元素分解为第二个列表
显然,我的代码有问题。我使用Python3.6.6shell运行下面的模块。我想检查列表a_列表中是否存在大小为4的元素,并将它们复制到b_列表中。只有一个这样的元素('3m7n'),但它被分解为4个其他元素('3','m','7','n')。为什么?列表的Python扩展方法将第一个列表的元素分解为第二个列表,python,loops,Python,Loops,显然,我的代码有问题。我使用Python3.6.6shell运行下面的模块。我想检查列表a_列表中是否存在大小为4的元素,并将它们复制到b_列表中。只有一个这样的元素('3m7n'),但它被分解为4个其他元素('3','m','7','n')。为什么? 扩展需要一个列表 append需要一个元素 a_list = ['2', '3m7n', '3', '17'] b_list = ['bat', 'zoo', 'next'] b_list.extend([i for i in a_list i
扩展
需要一个列表
append
需要一个元素
a_list = ['2', '3m7n', '3', '17']
b_list = ['bat', 'zoo', 'next']
b_list.extend([i for i in a_list if len(i) == 4 ])
print(b_list)
append
将对象添加到列表的末尾,因为列表是一种可变的数据类型,所以可以将对象追加到列表的末尾<代码>扩展将iterable中的每个元素添加到列表的末尾
如果要添加对象,请使用append:
a = ['2', '3m7n', '3', '17']
b = ['bat', 'zoo', 'next']
for i in a:
if len(i) == 4:
b.append(i)
b
['bat', 'zoo', 'next', '3', 'm', '7', 'n']
使用extend时出现的错误是使用字符串扩展列表,然后将其视为一个iterable并遍历字符串的每个字符,类似于“3m7n”中i的:print(i)
。使用相同的上下文,但将循环中的每个项目转换为列表
,可以使用extend添加列表中的每个项目:
a = ['2', '3m7n', '3', '17']
b = ['bat', 'zoo', 'next']
for i in a:
if len(i) == 4:
b.extend([i])
b
>>['bat', 'zoo', 'next', '3m7n']
为了简单、可读性和更高的效率,您可以使用列表理解来替换For
循环:
b.extend([i for i in a if len(i) == 4 ])
如果您观察到,它的工作原理与for循环完全相同,使用list对象扩展列表。您能将代码粘贴为问题中的文本吗?人们很难帮助您处理代码的图像。请使用
附加
而不是扩展
。
b.extend([i for i in a if len(i) == 4 ])