我有一个变量列表,我希望将其转换为数字而不是k,M,B等,如果语句看起来很好,但我不知道如何从列表中调用结果。
A = '1.23k'
B = '2.34k'
items = [A, B]
d = {'k': 3, 'M': 6}
for item in items:
item = str(item)
if item[-1] in d:
num, magnitude = item[:-1], item[-1]
item = float(num) * 10 ** d[magnitude]
else:
item = float(item)
A = items[0]
B = items[1]
我以为我以后可以像上面那样引用A和B,但似乎item
在每个for循环后都没有链接回A和B. (我觉得这并不难,但我完全陷入困境。)
你会怎么做?感谢。
更新:我可能有C,D,E等,稍后再添加到列表中。
答案 0 :(得分:3)
当您将更新后的值存储在item
中时,您不会更改列表中相应位置所指向的内容。您只需更改变量item
所指向的内容。如果要更改列表中的值,则需要在列表中使用基于范围的for循环和索引。这样,您就可以更新列表中存储的值:
A = 1.23k
B = 2.34k
items = [A, B]
d = {'k': 3, 'M': 6}
for i in range(len(items)):
item = str(items[i])
if item[-1] in d:
num, magnitude = item[:-1], item[-1]
items[i] = float(num) * 10 ** d[magnitude]
else:
items[i] = float(item)
A = items[0]
B = items[1]
答案 1 :(得分:2)
循环中的项是局部变量,更改它的值不会影响全局项数组。 你应该在循环中编辑全局项数组,
你可以快速完成,
for i in range(0,len(items)):
并按
替换项目items[i]
因此您将直接更改items变量的值 所以最后这个循环将完成这项工作
for i in range (0,len(items)):
if item[i][-1] in d:
num, magnitude = item[i][:-1], item[i][-1]
item[i] = float(num) * 10 ** d[magnitude]
else:
item[i] = float(item[i])