这可能是重复但我无法找到具体的答案。
我在撰写这个问题时也找到了一个答案,但想知道是否有更好的选择,或者在不知道哪个项目是字符串列表的情况下有效。
我的问题:
la=['a', 'b', 'c']
lb=[['d','e'], ['f','g'], ['i','j']]
我想:
[['a','d','e'], ['b','f','g'], ['c','i','j']]
我发现了以下专门针对我的例子的作品;
la=['a', 'b', 'c']
lb=[['d','e'], ['f','g'], ['i','j']]
[ [x] + y for x,y in zip(la, lb)]
[['a', 'd', 'e'], ['b', 'f', 'g'], ['c', 'i', 'j']]
它的工作原理是因为我在连接之前将字符串列表放入列表中并避免 TypeError:无法连接' str'和'列出'对象
有更优雅的解决方案吗?
答案 0 :(得分:0)
您可以使用numpy.column_stack
:
>>> la=['a', 'b', 'c']
>>> lb=[['d','e'], ['f','g'], ['i','j']]
>>> import numpy as np
>>> np.column_stack((la,lb))
array([['a', 'd', 'e'],
['b', 'f', 'g'],
['c', 'i', 'j']],
dtype='|S1')
答案 1 :(得分:0)
如果你想要一个表达式,我想不出比上面使用zip更好的东西。如果你想明确地将la中的元素元素插入lb的元素中,我会做
for i in range( len(la) ):
lb[i].insert(0, la[i])
避免了解拉链是什么或做什么。也许还先检查一下:
if len(la) != len(lb) : raise IndexError, "List lengths differ"
没有它,当lb比la长时,它将“工作”。 BTW这不是完全相同的角落案例/鸭子打字。使用insert似乎更安全,哪种方法应仅存在于类似列表的对象,而不是“+”。
另外,纯粹个人而言,我会在上面写一行
for i in range( len(la) ): lb[i].insert(0, la[i])