927

リスト内の文字列アイテムを単一の文字列に連結する簡単な方法はありますか?この機能は使えstr.join()ますか?

たとえば、これは入力['this','is','a','sentence']であり、これは目的の出力ですthis-is-a-sentence

sentence = ['this','is','a','sentence']
sent_str = ""
for i in sentence:
    sent_str += str(i) + "-"
sent_str = sent_str[:-1]
print sent_str
4

11 に答える 11

1638

使用str.join

>>> sentence = ['this', 'is', 'a', 'sentence']
>>> '-'.join(sentence)
'this-is-a-sentence'
>>> ' '.join(sentence)
'this is a sentence'
于 2012-09-17T05:33:41.273 に答える
54

join が文字列メソッドである理由を知ることは、初心者にとって非常に役立ち ます。

最初は非常に奇妙ですが、この後は非常に便利です。

結合の結果は常に文字列ですが、結合されるオブジェクトは多くのタイプ (ジェネレーター、リスト、タプルなど) にすることができます。

.joinメモリを 1 回だけ割り当てるため、高速です。従来の連結よりも優れています (詳細な説明を参照)。

ひとたび覚えると、とても快適で、このような括弧を追加するトリックを行うことができます。

>>> ",".join("12345").join(("(",")"))
Out:
'(1,2,3,4,5)'

>>> list = ["(",")"]
>>> ",".join("12345").join(list)
Out:
'(1,2,3,4,5)'
于 2016-05-14T13:55:36.710 に答える
16

将来から編集:以下の回答は使用しないでください。この関数は Python 3 で削除され、Python 2 は廃止されました。まだ Python 2 を使用している場合でも、避けられないアップグレードを容易にするために、Python 3 対応のコードを作成する必要があります。


@Burhan Khalidの答えは良いですが、次のように理解しやすいと思います:

from str import join

sentence = ['this','is','a','sentence']

join(sentence, "-") 

join() の 2 番目の引数はオプションで、デフォルトは " " です。

于 2015-11-02T01:51:03.193 に答える
1

コンテンツリストが混在している場合。そしてそれを文字列化したい。1 つの方法を次に示します。

次のリストを検討してください。

>>> aa
[None, 10, 'hello']

それを文字列に変換します。

>>> st = ', '.join(map(str, map(lambda x: f'"{x}"' if isinstance(x, str) else x, aa)))
>>> st = '[' + st + ']'
>>> st
'[None, 10, "hello"]'

必要に応じて、リストに戻します。

>>> ast.literal_eval(st)
[None, 10, 'hello']
于 2021-01-27T10:21:57.657 に答える
-1

.join() メソッドがなければ、次のメソッドを使用できます。

my_list=["this","is","a","sentence"]

concenated_string=""
for string in range(len(my_list)):
    if string == len(my_list)-1:
        concenated_string+=my_list[string]
    else:
        concenated_string+=f'{my_list[string]}-'
print([concenated_string])
    >>> ['this-is-a-sentence']

したがって、この例の範囲ベースの for ループでは、python がリストの最後の単語に到達したときに、concenated_string に「-」を追加する必要はありません。文字列の最後の単語ではない場合は、常に「-」文字列を concenated_string 変数に追加します。

于 2020-07-07T11:03:36.563 に答える
-2
def eggs(someParameter):
    del spam[3]
    someParameter.insert(3, ' and cats.')


spam = ['apples', 'bananas', 'tofu', 'cats']
eggs(spam)
spam =(','.join(spam))
print(spam)
于 2020-05-07T21:18:04.153 に答える