2016-08-29 115 views
0

私は初心者の本のためのPythonから練習をしています。私が取り組んでいるプロジェクトは次のとおりです: "引数として値のリストを取り、すべての項目をカンマとスペースで区切って文字列を返す関数を記述します。関数はどのリストでも動作できるはずですそれに渡された値」Pythonリストから不要なカンマを削除するには

はここに私のコードです:

def passInList(spam): 
     for x in range(len(spam)): 
      z = spam[x] + ', ' 
      print(z,end= ' ') 

spam=['apples', 'bananas', 'tofu', 'and cats'] 
passInList(spam) 

の予想される出力ある - 'りんご、バナナ、豆腐、そして猫。私がいる

マイ出力

'、りんご、バナナ、豆腐、そして猫のIS-問題、私は "の最後にカンマを取り除くように見えることができないということです猫 "。

ありがとうございます。

+0

あなたの問題には直接関係しませんが、文字列を返す必要がありますが、関数は何も返しません。 – Kevin

答えて

0

使用join方法:xはまだLEN(スパム)-1、 またはそれより小さい場合のみに文がカンマを追加する場合

spam=['apples', 'bananas', 'tofu', 'and cats'] 
print(', '.join(spam)) 
0

がstrのクラスを使用し、追加は関数

に参加します
2

joinに区切り記号を付ける場所と一緒に参加する一覧を使用するようにコードを減らすことができます。

def passInList(spam): 
     print(', '.join(spam)) 

spam=['apples', 'bananas', 'tofu', 'and cats'] 
passInList(spam) 
+0

ありがとうございます。 (参加しました) –

0

あなたは構文'str'.join(list)で呼び出さjoin機能を使用することができます。それは、人々はここに掲載されているとおり、joinがすでに存在している

>>> spam=['apples', 'bananas', 'tofu', 'and cats'] 
>>> my_string = ', '.join(spam) 
>>> my_string 
'apples, bananas, tofu, and cats' 
1

strで、リスト内のすべての要素を結合します。運動はjoinを実装する方法を理解することを意図されている場合しかし、その後、ここで1つの可能性である:

def passInList(spam): 
    s = spam[0] 
    for word in spam[1:]: 
     s += ', ' + word 
    return s 

あなたが最初の単語を取るである、あなたは、カンマを使用して次の各単語を連結します。

これを実現するための別のオプションは、この場合には、すなわち、関数型プログラミングを使用している、reduce機能:

def passInList(spam): 
    return functools.reduce(lambda x, y: x + ', ' + y, spam) 

は、以前の実装のs += ...が使用されているのように、物事を集約するのスキームは、reduceがに来るたびマインド。

関連する問題