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 に答える