У меня есть проблема, связанная с изменением переменной вместе с циклом, возможно ли это сделать? - PullRequest
0 голосов
/ 03 апреля 2019

Я делаю код, который требует, чтобы я переместил первую переменную каждого моего списка в один список.

Например:

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 голосов
/ 03 апреля 2019

У вас есть два вопроса на работе здесь.Во-первых, чтобы одновременно получить доступ к первым значениям из каждого списка и т. Д., Вы можете использовать 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)}
0 голосов
/ 03 апреля 2019

Предполагая, что ваши списки хранятся в отдельных переменных, которые названы в следующем формате Week [номер недели], вы можете перебирать определенное количество недель (здесь 2) и обращаться к значениям ваших переменных через globals(), чтобы добавить их в некоторый список, здесь first_values.

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

first_values = []
weeks = 2

for week in range(1, weeks + 1):
    first_values.append(globals()['Week{}'.format(week)][0])

print(first_values) # --> [2, 3]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...