Python 合并字符串列表和列表列表
这可能是重复的,但我找不到具体的答案 我在撰写这个问题时也找到了一个答案,但我想知道是否有更好的选项,或者在不知道哪一项是字符串列表的情况下有效的选项 我的问题:Python 合并字符串列表和列表列表,python,list,Python,List,这可能是重复的,但我找不到具体的答案 我在撰写这个问题时也找到了一个答案,但我想知道是否有更好的选项,或者在不知道哪一项是字符串列表的情况下有效的选项 我的问题: 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'
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']]
它之所以有效,是因为我在连接之前将字符串列表设置为一个列表,并避免了类型错误:无法连接'str'和'list'对象
有更优雅的解决方案吗?您可以使用
numpy.column\u 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')
如果你想要一个表达式,我想没有比上面使用zip更好的了。如果您想显式地将la元素插入lb元素的头部,我会这样做
for i in range( len(la) ):
lb[i].insert(0, la[i])
这样就不必知道zip是什么或做什么了。也可以先检查一下:
if len(la) != len(lb) : raise IndexError, "List lengths differ"
如果没有这一点,当lb比la长时,它将“起作用”。顺便说一句,这与wrt角落案例/鸭子类型不完全相同。使用insert似乎比使用“+”更安全,insert方法应该只存在于类似列表的对象中
另外,纯粹就个人而言,我会把上面的内容写在一行上
for i in range( len(la) ): lb[i].insert(0, la[i])
“有什么比自然的单线解决方案更优雅呢?”约翰科勒曼同意,没有比这更好的了this@hSchroedl答案是如此自然,以至于我在阅读问题的第一部分后30秒内将其写下来并作为答案提交,但当我看到OP已经有了答案时,立即删除了我的答案,这让我想知道问题的重点。你认为是重复的问题是什么?如果项目不是字符串列表会发生什么?为什么要否决投票?我的回答有问题吗?我很高兴听到我的错误!