如何使用for循环来获取我已经进入变量的值?
我目前有这个代码,它按照我想要的方式工作:
var1 = 25
var2 = 22
var3 = 1
var4 = 23
my_list = [7, 8, 11, 11]
for n, val in enumerate(my_list):
globals()["value%d"%n] = val
但是我还需要能够将这些值从变量中获取到另一个for循环中以便能够用它们进行计算,但我不知道该怎么做。
我希望它循环遍历列表中的每个值并执行两项任务中的任意一项,交替进行,所以我使用它:
for n, val in enumerate(my_list):
if n % 2 == 0:
answer1 = ((25*7)+(22*8)%26)
else:
answer2 = ((1*11)+(23*11)%26)
因此,当我打印answer1和answer2时,它们分别为13和9。
这就是我希望它输出的内容,但是我希望它为my_list中的每个值执行此操作,即使my_list中包含的项目超过4个,我需要它来遍历其中的每个项目,单独存储答案。
答案 0 :(得分:2)
values = {} # this is a dictionary
for n, val in enumerate(list):
values[n] = val
for n, val in enumerate(list):
value = values[n]
if n % 2 == 0:
# do something with value
#do A
else:
# do something with value
#do B
保存在字典中的值为"值"像这样访问:
num = values["key"]
其中键是与值
关联的字符串初始化字典你可以做类似于上面的for循环(第一个) 或类似的东西
values["some_key"] = some_value
答案 1 :(得分:0)
在Python中,不是试图分配许多不同的变量,而是在处理值列表和生成答案列表方面考虑问题总是更好。
对于您的问题,您似乎希望在4
中处理my_list
个值,一次两个。根据Python文档中的grouper()
配方,有一个技巧可以做到这一点:
var1 = 25
var2 = 22
var3 = 1
var4 = 23
my_list = [7, 8, 11, 11]
output = []
for index, (v1, v2) in enumerate(zip(*[iter(my_list)] * 2)):
if index % 2 == 0:
output.append(((var1 * v1) + (var2 * v2) % 26))
else:
output.append(((var3 * v1) + (var4 * v2) % 26))
print(output)
这将创建一个包含两个答案的output
列表:
[195, 30]
例如,第一次围绕循环,v1
为7
,v2
为8。
一次获取两个值的另一种方法如下:
var1 = 25
var2 = 22
var3 = 1
var4 = 23
my_list = [7, 8, 11, 11]
i_my_list = iter(my_list)
output = []
for index, v1 in enumerate(i_my_list):
v2 = next(i_my_list)
if index % 2 == 0:
output.append(((var1 * v1) + (var2 * v2) % 26))
else:
output.append(((var3 * v1) + (var4 * v2) % 26))
print(output)