我有一个涉及到变量和循环一起更改的问题,可以这样做吗?

时间:2019-04-03 17:46:26

标签: python loops variables

我正在编写代码,需要我将我拥有的每个列表的第一个变量移动到一个列表中。

例如:

Week1 = [2,3,4,5,6]
Week2 = [3,2,5,6,4]
# I would need to get a list that read
Week_1 = [2,3]

这大概是20左右的变量。我有个主意:

Week1 = [0, 1, 2, 2, 1]
Week2 = [4, 3, 1, 6, 3]
Week = []
i = 1
while i >= 20:
    Week = Week.extend((Week + i) [0])
    i = i + 1



print (Week)

我知道这可能行不通,但是'week + i'可能与变量相关,所以代码将以'Week1 [0]'扩展吗?这意味着随着循环的进行,它将把每个列表的第一个变量添加到我相信的另一个列表中。有没有更有效的方法?还是有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

假设您的列表存储在以以下格式命名的单独的变量Week [week number]中,则可以遍历特定的星期数(此处为2),并通过{{1}访问变量的值},将它们附加到列表中,globals()

first_values

答案 1 :(得分:0)

您在工作中有两个问题。首先,要同时访问每个列表中的第一个值,依此类推,可以使用zip

第二,您可以根据需要使用列表或字典来创建和收集每周的所有结果。与其创建可变数量的变量,不如使用一个能够容纳所需周数的容器。

解决方案可能如下所示:

Week1 = [2,3,4,5,6]
Week2 = [3,2,5,6,4]
initial_list = [Week1, Week2]

Week_dict = {}
for i, Week in enumerate(zip(*initial_list)):
    Week_dict["Week_{}".format(i + 1)] = Week

print(Week_dict)
#Output:
{'Week_1': (2, 3),
 'Week_2': (3, 2),
 'Week_3': (4, 5),
 'Week_4': (5, 6),
 'Week_5': (6, 4)}