在字符串列表中的每个字母之间放置一个符号

时间:2013-10-25 00:59:52

标签: python

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

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,这使得它尽可能少。这可能吗?

3 个答案:

答案 0 :(得分:8)

您可以使用str.join()方法和list comprehension

轻松实现此目的
>>> listOne = ['!'.join(i) for i in listOne]
>>> listOne

<强>输出

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

或者,正如abarnert建议的那样,您可以使用bulit-in map函数。

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

希望这有帮助!

答案 1 :(得分:3)

listOne = ["hello","world"]

listTwo = ['!'.join([x for x in word]) for word in listOne]

答案 2 :(得分:2)

这个怎么样?

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

或更具体:

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

修改:删除list()中字符串的换行,str.join占用每个可迭代 object(实现__iter__()的那些),以及字符串。感谢@alKid。