2016-05-26 10 views
0

どの列をバイトからKBに変換する必要があるかを示すリストがあります。Python:変換のためのif文を入力しない

covert_to_kb_columns=[9, 10, 21, 22, 24] 

私のコードを正しく実装するのに問題があります。私は'idx'の数字のうちの1つに一致する数字が covert_to_kb_columnsリストにあるかどうかを確認したいのですが、それ以外の場合は計算をプリフォームする必要があります。 try/exceptの文は、ファイル内に数字がないので、ゼロを付加するためのものです( )。

print covert_to_kb_columns 
for idx, column_number in enumerate(columns_I_am_working_with): 
    print idx 
    #Check if I need to convert number from bytes to KB 
    if idx == [number for number in covert_to_kb_columns]: 
     print "Need to divide by 1024.0" 
     data_to_use.append("{:.1f}".format(float(row[column_number])/1024.0)) 
    #Otherwise just append number as is 
    else: 
     try: 
      float(row[column_number]) 
      data_to_use.append(row[column_number]) 
     except ValueError: 
      data_to_use.append('0') 

マイprint文は、私にこの結果を与える(注:すべての数字が印刷されたことを示すためであるが、私はそれらをすべて39個の数字を書いていないよ「」)

[9, 10, 21, 22, 24] 
0 
1 
2 
3 
. 
. 
. 
9 
10 
. 
. 
. 
21 
22 
23 
24 
. 
. 
. 
39 

それはと思われます変換を実行するためにprintステートメントを入力することはありません。 私は問題がライン

if idx == [number for number in covert_to_kb_columns]: 

であると思います。しかし、私は、インデックスがcovert_to_kb_columnsのすべての要素を含むリストと等しい場合、私は間違って

答えて

2

idx == [number for number in covert_to_kb_columns]チェックをやって何を見つけることができません。 idx == covert_to_kb_columnsと同じです。

あなたがする必要があるのはidx in covert_to_kb_columnsです。

0

if条件はです。右は次のとおりです。

if idx in covert_to_kb_columns: 

[number for number in covert_to_kb_columns]はあなたのリストcovert_to_kb_columnsから新しいリストを作成します。そして彼らは同じです。ここでは役に立たない。

idx == [number for number in covert_to_kb_columns]で、インデックス番号とリストを比較しています。この状態は常に値を返しますfalse

関連する問題