リストの値に応じて文字列を印刷したいとします。値は、例えば0または1になりますリストの値に応じて文字列を印刷するにはどうすればよいですか?
# Example [a,b,c] = [0,0,1] -- > print str c
# [1,0,1] -- print str a and str c
index_list = [0,0,1] # Example
str_a = "str_a"
str_b = "str_b"
str_c = "str_c"
print str
リストの値に応じて文字列を印刷したいとします。値は、例えば0または1になりますリストの値に応じて文字列を印刷するにはどうすればよいですか?
# Example [a,b,c] = [0,0,1] -- > print str c
# [1,0,1] -- print str a and str c
index_list = [0,0,1] # Example
str_a = "str_a"
str_b = "str_b"
str_c = "str_c"
print str
for condition, string in zip(index_list, [str_a, str_b, str_c]):
if condition:
print string
質問がzip
は、タプルの新しいリストを作成し、python-2.7としてタグ付けされているので。インデックスや文字列のリストが多い場合は、itertools.izip
を使用するか、python 3にアップグレードすることを検討してください。
This answerは、このパターンに対して正確な標準のlib関数を提供しています。
>>> a = [str_a,str_b,str_c]
>>> b= [0,0,1]
>>> ','.join(i for i,j in zip(a,b) if j)
'str_c'
ここは優雅なやり方です。 itertoolsに圧縮機能を使用します。
import itertools as it
l1 = [1, 0, 1]
l2 = ["a", "b", "c"]
for item in it.compress(l2, l1):
print item
出力:
=================== RESTART: C:/Users/Joe/Desktop/stack.py ===================
a
c
>>>
...どうすれば忘れることができますか... –
優秀です。これを完全に逃した。 –
これはitertools.compressが正確にこれを行うための正しい方法です。 – thiruvenkadam
感謝を!すべてうまく動作し、明確にコード化します。 –
その文字列をどのようにリストに変換できますか?例えば: 'string [0] = a、string [1] = c ... with .split()'分割できない –
どういう意味なのか分かりません。どのように分割があなたのために働いていないのですか?フィルタリングされた文字列のリストを作成することはできませんか? –