2017-12-15 13 views
0

mylist = ['A'、 'B'、 'C​​'、 'D'、 'E']の項目に変数を追加します。私は、出力は以下のようにしたい...Pythonを使ってリストに変数を追加する

for direction in ['Up', 'Down']: 
    mylist = ['A{}', 'B', 'C{}', 'D', 'E'].format(direction) 
    for x in mylist: 
     print x 

をこの例のようなものを試してみました...

AUp 
B 
CUp 
D 
E 
ADown 
B 
CDown 
D 
E 

はしかし、これは動作しません。リストに変数を追加する最良の方法はありますか?

+3

あなたが問題を記述する必要があります。 "しかし、これは動作していません。あまり役に立ちません。 – Carcigenicate

+3

'format'はリストではなく文字列に作用します – user3080953

+0

2番目の' for'ループで 'print x.format(direction)'を実行し、リストから 'format'を削除します – depperm

答えて

4

を行うだろう!各ストリングごとに個別に操作する必要があります。

data = ['A{}', 'B', 'C{}', 'D', 'E'] 
direction = ['Up', 'Down'] 

for d in direction: 
    print(*[x.format(d) for x in data], sep='\n') 

AUp 
B 
CUp 
D 
E 
ADown 
B 
CDown 
D 
E 

directionを反復し、ループ内でformatを呼び出します。 python3を使用している場合は、*反復可能アンパックをsep引数で使用できます。

はpython2については、このように、あなたのファイルの先頭に__future__インポート文を追加します - あなたは、同じ効果にprint機能を使用することができます

from __future__ import print_function 

。元mylistを保ちながら

1

私はあなたがこのフォーマット操作を "ベクトル化" することはできません。この

mylist = ['A{}', 'B', 'C{}', 'D', 'E'] 
for direction in ['Up', 'Down']: 
    for x in mylist: 
     x = x.format(direction) 
     print(x) 
1

mylist = ['A', 'B', 'C', 'D', 'E'] 
for direction in ['Up', 'Down']: 
    for x in mylist: 
     print x + direction if x in ['A', 'C'] else x 
0

私はあなただけの1行に2つのループを使用して ずにループなしで行うことができますが、結果はリスト形式になり、少し異なるアプローチを持っている:

print(list(map(lambda x:list(map(lambda y:y.format(x),data)),direction))) 

出力:

[['AUp', 'B', 'CUp', 'D', 'E'], ['ADown', 'B', 'CDown', 'D', 'E']] 

しかし、あなたは新しい行の各要素をしたい場合、あなたは反復する必要があります。

for k in direction: 
    for i in data: 
     print(i.format(k)) 

出力:

AUp 
B 
CUp 
D 
E 
ADown 
B 
CDown 
D 
E 
関連する問題