for循环将值放入变量

时间:2018-02-07 20:09:30

标签: python for-loop

如何使用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个,我需要它来遍历其中的每个项目,单独存储答案。

2 个答案:

答案 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]

例如,第一次围绕循环,v17v2为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)