Python 循环遍历列表中的每个元素

Python 循环遍历列表中的每个元素,python,list,Python,List,在python中,如何循环遍历列表中的每个元素。 例如,如果我有以下列表: list = ["abc",3,(10,(11,12))] 我想把列表分成:['a','b','c',3,10,11,12] 现在我有: def combinelist(list): l = [] for item in list: l.append(item) return l 然而,这只是返回完全相同的列表。我如何彻底检查列表中的每个元素并拆分每个元素?谢谢你的帮助 我不知道用什么

在python中,如何循环遍历列表中的每个元素。 例如,如果我有以下列表:

list = ["abc",3,(10,(11,12))]
我想把列表分成:
['a','b','c',3,10,11,12]

现在我有:

def combinelist(list):
   l = []
   for item in list:
      l.append(item)
    return l

然而,这只是返回完全相同的列表。我如何彻底检查列表中的每个元素并拆分每个元素?谢谢你的帮助

我不知道用什么优雅的方式来编码,所以

l = ["abc",3,('x','y')]

o = []
for i in l:
    if isinstance(i, str):
        o.extend(list(i))
    elif isinstance(i, (tuple, list)):
        o.extend(i)
    else:
        o.append(i)

print o
或:

甚至:

o = []
for i in l:
    if isinstance(i, (str, list, tuple)):
        o.extend(list(i)) 
    else:
        o.append(i)
print o

@Michael0x2a不太清楚,OP显示的不是一个iterables列表(你不能迭代
3
)@DavidRobinson-啊,你是对的。我没看到。我想你想要的是
extend
,而不是
append
lst.append([1,2,3])
会将列表
[1,2,3]
添加到末尾,但是
lst.extend([1,2,3])
会将三个单独的值
1
2
3
添加到末尾。但是,当您在
3
上尝试它时,会引发异常,并且它只会将
(10,(11,12))
展平为两个值
10
(11,12)
。这就是为什么链接问题中的答案都使用递归或循环。
o = []
for i in l:
    if isinstance(i, (str, list, tuple)):
        o.extend(list(i)) 
    else:
        o.append(i)
print o