Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
列表的Python扩展方法将第一个列表的元素分解为第二个列表_Python_Loops - Fatal编程技术网

列表的Python扩展方法将第一个列表的元素分解为第二个列表

列表的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

显然,我的代码有问题。我使用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 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 ])