在Python中逐项串联字符串列表


13

这是在打高尔夫球的问题。

假设您有两个字符串列表,并且想要连接每个列表中的相应条目。例如,用a=list("abcd")b=list("1234")计算["a1","b2","c3","d4"]

在基于数组的编程语言中,这是微不足道的,在这种语言中,操作通常以成员方式应用于列表。例如,在我的高尔夫语言Pip中,代码就是a.b。但是在Python中,这并不容易。

Python方式可能是使用zip列表理解(25个字符):

[x+y for x,y in zip(a,b)]

另一种方法是map使用lambda函数(23):

map(lambda x,y:x+y,a,b)

以下是我想出的最短的(21):

map("".join,zip(a,b))

有没有更短的方法?

假设列表的长度相同,并且只需要某种可迭代的内容(因此map在Python 3中可以使用对象)。



@桅杆提示列表中是否包含解决此特定问题的答案?
马丁·恩德

@MartinBüttner如果不是,应该这样做。防止混乱并保持所有技巧的结合等。– 2015
桅杆

Answers:


14

20个字符

map(str.__add__,a,b)

使用内置方法字符串添加方法__add__,该方法由+字符串调用,以代替您的匿名函数lambda x,y:x+y


您知道,我想到了,str.__add__但由于某种原因没有检查它是否较短。
DLosc 2015年

1
@DLosc这个答案的真正优势是可以map与多个可迭代对象一起使用,这些可迭代对象会自动删除拉链。没有它,它不会更短。请注意,如果在您的代码中必须访问某些__*__方法,则可能会更短一些from operator import *,然后再使用map(add,a,b)
2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.