我怎么说!在列表中的每个字符之后
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,这使得它尽可能少。这可能吗?
答案 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。