4

我怎么放!在列表中的每个字符之后

listOne = ["hello","world"]

我如何把它变成:

["h!e!l!l!o","w!o!r!l!d"]

试图:

def turn(List):
    return [i for i in (list(lambda x: "%s!" % x,listOne))]
turn(listOne)

回报:

['hello!',"world!"]

除了:

def turn(List):
    x = ""
    for word in words:
        for letter in word:
            x += "%s!" % letter
    return x
turn(listOne)

我不是做这样的事情的忠实粉丝,但我确实意识到这可能比我正在尝试做的更pythonic,那就是让它尽可能少的行。这可能吗?

4

3 回答 3

8

您可以使用该方法轻松实现此目的str.join(),并列出理解

>>> listOne = ['!'.join(i) for i in listOne]
>>> listOne

输出

['h!e!l!l!o', 'w!o!r!l!d']

或者,正如 abarnert 建议的那样,您可以使用内置map功能。

>>> listOne = list(map('!'.join, listOne))
>>> listOne
['h!e!l!l!o', 'w!o!r!l!d']

希望这可以帮助!

于 2013-10-25T01:12:43.400 回答
3
listOne = ["hello","world"]

listTwo = ['!'.join([x for x in word]) for word in listOne]
于 2013-10-25T01:02:05.190 回答
2

这个怎么样?

["!".join(s) for s in ["hello", "world"]]

或更具体:

def turn(l):
    return ["!".join(s) for s in l]

编辑:删除了字符串的包装list()asstr.join需要每个可迭代对象(那些实现__iter__()),因此字符串也是如此。感谢@alKid。

于 2013-10-25T01:02:32.877 回答