1

単語のリストがあり、それらすべてをコンマとスペースで区切って印刷したいとしましょう。たとえば、リストlにアイテムが含まれてい['banana', 'apple', 'pear']て、文字列を生成したいとしましょう"banana, apple, pear"

さて、問題を解決するために私が使用するアプローチは次のとおりです。

s = ""
s += l[0]
for i in range(1, len(l)):
    s += ", %s" % l[i]

または、上記と非常によく似たもの。問題は、カンマとスペースを追加することを除いて、行 4 とほぼ同じであるため、行 2 の余分な割り当てが少し乱雑で冗長に見えることです。これは、非常に小さな式の場合はそれほど問題にはなりませんが、大きな式を探すのはやや面倒で不愉快になる可能性があります。たとえば、 if の代わりに、 which が非常によく似たステートメントを数行下で繰り返さなければならないのは正しくないと感じるl[0]かもしれません。foo(bar(l[0]) + foobar(l[0]) + ...余分な冗長性なしで望ましい結果を達成するためのより良い方法はありますか? これには、python 標準ライブラリに固有の回答や、複数の言語で使用できる一般的なパターンが含まれる場合があります。

4

3 に答える 3

3

Python では、単純に次のように記述します。

s = ', '.join(l)

例えば:

>>> l = ['banana', 'apple', 'pear']
>>> ', '.join(l)
'banana, apple, pear'

これには [...] 複数の言語で使用できる一般的なパターンが含まれる可能性があります。

他の言語では、私が通常使用するパターンは次のとおりです (ここでは疑似 Java で表現されています)。

for (int i = 0; i < l.length; i++) {
  if (i != 0) {
    s += ", ";
  }
  s += l[i];
}

これにより、割り当ての重複が回避されます。

于 2012-04-26T07:26:45.083 に答える
0

結合を使用できます:s = ', '.join(l)

于 2012-04-26T07:26:48.290 に答える
0

使用できますstr.join

", ".join(l)
于 2012-04-26T07:27:40.053 に答える