2016-09-15 23 views
2

私はクラスオブジェクトのリストを 'x'持っています。私は、オブジェクトの特定の属性値を追加して新しいリストを作成しようとしていますが、インデックスごとに1つ以上の属性を追加したいと思います。例えば、私は現在、何を得る:特定のインデックスの文字列に追加または追加

x = blah.values() 

newList = [] 
for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append(str(x[i].full_name)), 
     newList.append(str(x[i].team)) 
else: 
    pass 

print newList 

上記のコードのようなものを私に提供:

私が取得しようとしています何
['Victor Cruz', 'NYG', 'Marcus Cromartie', 'SF',....] 

['Victor Cruz NYG', 'Marcus Cromartie SF',....] 

がどのように私はより多くを追加することができますインデックスごとに1つの属性よりもこれが意味をなさないことを願って、私は必要に応じてさらに精緻化しようとすることができます、ありがとう!

答えて

2

.format()を使用すると、文字列の書式を設定できます。別の方法は"%s" % string表記

newList.append("%s %s" % (str(x[i].full_name),str(x[i].team))) 

使用.formatの別の例を使用している

for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append("{} {}".format(x[i].full_name,x[i].team)) 

{} {}間の空間に注意してください。 リスト内包を作成するための素晴らしい選択肢で使用して、軽いノートで

for i in range(len(x)): 
    if x[i].status == 'ACT': 
     newList.append('{} {}'.format(x[i].full_name, x[i].team)) 

"{} is {}".format('My answer', 'good') 
>>> "My answer is good" 
+0

上記の提案は高く評価されました。これまでの両方の答えは完璧に働いています – swam

2

あなたが.format()append一度文字列を使用して1つの文字列にアイテムを入れることができますあなたのリスト:

newList = ['{} {}'.format(o.full_name, o.team) for o in blah.values() if o.status == 'ACT'] 

あなたはrangelenはもはや理解の中で使用されておらず、の索引付けはもはや必要ではないことがわかります。

+0

感謝の言葉と解説。両方のソリューションが機能します! – swam

関連する問題