@Smeilz1
За любое развитие

Как читать данные из 2 списков параллельно, но со сдвигом в одно значение вперед?

Есть словарь
list1 = [1,2,3]
list3 = [3,4,5]
tickers = {'student1':[list1,list2],'student2':[list3,list4]}


Читаю данные по ключу и могу итерировать каждый лист по отельности:
for key, value in tickers.items():
    print(key, value)
        for list in value:
            print(list)

Но как читать данные из 'student1':list1 сихронно с 'student2':list3 , но сдвигом в 1 индекс
Чтобы получать 'student1:list1[0] одновременно с 'student2':list3[1] ?
Например чтобы получить значение 'student1:list1[0] + 'student2':list3[1]
Длина List1 и List2 одинаковая.
P.S. Может просто удалить первое значение из list3? Но тогда списки будут не равны по длине.
Можно тогда последнее значение записать как None, но все это выглядит как-то громоздко.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
sim3x
@sim3x
In [1]: l1 = list(range(5))

In [2]: l2 = list(range(5, 10))

In [3]: l1
Out[3]: [0, 1, 2, 3, 4]

In [4]: l2
Out[4]: [5, 6, 7, 8, 9]

In [5]: list(zip(l1,  l2[1:] + [None]))
Out[5]: [(0, 6), (1, 7), (2, 8), (3, 9), (4, None)]

In [6]: list(map(lambda x, y: (x, y), l1, l2[1:] + [None] ))
Out[6]: [(0, 6), (1, 7), (2, 8), (3, 9), (4, None)]

In [7]: def foo(x, y):
   ....:     return '%s:::%s' % (x, y)
   ....: 

In [8]: list(map(foo, l1, l2[1:] + [None] ))
Out[8]: ['0:::6', '1:::7', '2:::8', '3:::9', '4:::None']
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы