我有一个列表,告诉我哪些列需要从字节转换为KB。
covert_to_kb_columns=[9, 10, 21, 22, 24]
我无法正确实现我的代码。我想检查一下,如果我在一个'idx'
号码上,该号码与其中一个号码匹配
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')
我的打印陈述给了我这样的结果:(注意'。'表示所有数字都已打印但我没有写出所有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]:
但我无法发现我做错了什么
答案 0 :(得分:2)
idx == [number for number in covert_to_kb_columns]
检查索引是否等于包含covert_to_kb_columns
所有元素的列表。它与idx == covert_to_kb_columns
相同。
您需要做的就是idx in covert_to_kb_columns
。
答案 1 :(得分: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