Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.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 - Fatal编程技术网

PYTHON将列表中的单个元素与子列表合并

PYTHON将列表中的单个元素与子列表合并,python,Python,我试着列出一个简单的清单。现在我有一份清单: L=['aa',['bb','cc']] 我试着: L=['aa',['bb','cc']] new=[] for i in L: print i new+=i print new 我得到: 'aa' ['bb','cc'] ['a','a','bb','cc'] 为什么在print i=0='aa'和new+=i=0中,i=0仅为'a' 我如何才能得到列表['aa','bb','cc']?发生这种情况是因为您迭代'aa',基本

我试着列出一个简单的清单。现在我有一份清单:

L=['aa',['bb','cc']]
我试着:

L=['aa',['bb','cc']]
new=[]

for i in L:
  print i
  new+=i

print new
我得到:

'aa'

['bb','cc']

['a','a','bb','cc']
为什么在
print i=0='aa'
new+=i=0
中,i=0仅为'a'


我如何才能得到列表
['aa','bb','cc']

发生这种情况是因为您迭代
'aa'
,基本上将其视为
['a','a']

如果要避免对字符串进行迭代,可以查看以下类型:

for i in L:
    if isinstance(i, list):
        new += i
    else:
        new.append(i)
有关更多详细信息以及如何递归执行,请参见此问题:


一般来说,这意味着当您不知道原始列表的深度时,应该可以:

L=['aa',['bb','cc', ['dd', 'ee']], 'ff']
new = []
for l_item in L:
    stack = [ l_item ]
    while stack:
        s_item = stack.pop(0)
        if isinstance(s_item, list):
            stack += [ x for x in s_item ]
        else:
            new.append(s_item)
print new 
这使得:

['aa', 'bb', 'cc', 'dd', 'ee', 'ff']

别忘了字符串在Python中是可移植的

>>> new = []
>>> new += 'aa'
>>> print new
['a', 'a']
为确保添加所需内容,您可以通过以下方式继续:

>>> L = ['aa',['bb','cc']]
>>> new = []

>>> for e in L:
...     new.extend(e if type(e) == list else (e,))
>>> print new
['aa', 'bb', 'cc']
说真的



另外,您可以查看更多信息。

您需要避免对字符串进行迭代;请看我的答案,它在递归和特殊情况下使用字符串。问题是你的+=在方程的任一侧期望iterable,并用右边扩展左边,在你的例子中右边是'aa',它被视为两个元素iterable,像['a','a']