s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
我想通过两个元素将这些列表合并在一起,如下所示:
[['aaa','bbb'],['ccc','ddd']]
请帮帮我。我现在不知道怎么做。
谢谢
答案 0 :(得分:3)
这是一个很好的方法:
s_even = s[0::2]
s_odd = s[1::2]
merged = zip(s_even,s_odd)
或简短版本:
merged = zip(s[0::2], s[1::2])
获取您的确切格式(列表而不是元组,使用的是平面列表):
# flatten list (NOTE: there are *way* more efficient ways)
s = sum(s, [])
# merge using same concept as above
merged = map(list, zip(s[0::2], s[1::2]))
答案 1 :(得分:2)
您可以将map
与lambda
s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
res= map(lambda i:s[i]+s[i+1], range(0, len(s)-1, 2))
print res
输出:
[['aaa', 'bbb'], ['ccc', 'ddd']]
答案 2 :(得分:1)
您可以使用语法为range
的{{1}}函数。如果您一次单步执行2个元素,则可以使用列表推导来附加成对的子列表。
range(start, stop, step)
答案 3 :(得分:0)
In [1]: s=[['aaa'], ['bbb'], ['ccc'], ['ddd']]
In [2]: [ [ s[i*2][0], s[i*2 + 1][0] ] for i in range(len(s)/2) ]
Out[2]: [['aaa', 'bbb'], ['ccc', 'ddd']]
In [3]: