我该怎么说!在列表中的每个字符之后
listOne = ["hello","world"]
Run Code Online (Sandbox Code Playgroud)
我怎么把它变成:
["h!e!l!l!o","w!o!r!l!d"]
Run Code Online (Sandbox Code Playgroud)
尝试:
def turn(List):
return [i for i in (list(lambda x: "%s!" % x,listOne))]
turn(listOne)
Run Code Online (Sandbox Code Playgroud)
返回:
['hello!',"world!"]
Run Code Online (Sandbox Code Playgroud)
除此之外,他们是另一种方式吗?
def turn(List):
x = ""
for word in words:
for letter in word:
x += "%s!" % letter
return x
turn(listOne)
Run Code Online (Sandbox Code Playgroud)
我不是那种做这样的事情的忠实粉丝但是我确实意识到这可能比我想做的更加pythonic,这使得尽可能少的线条如此.这可能吗?
您可以使用str.join()方法和列表理解轻松实现此目的:
>>> listOne = ['!'.join(i) for i in listOne]
>>> listOne
Run Code Online (Sandbox Code Playgroud)
产量
['h!e!l!l!o', 'w!o!r!l!d']
Run Code Online (Sandbox Code Playgroud)
或者,正如abarnert建议的那样,您可以使用bulit-in map功能.
>>> listOne = list(map('!'.join, listOne))
>>> listOne
['h!e!l!l!o', 'w!o!r!l!d']
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!