Я бы хотел перебирать два списка одновременно.Итерация по нескольким спискам одновременно в Python
Первый список - это обычный список элементов.
Второй список - это список, содержащий несколько списков, каждый из которых содержит элементы, которые на самом деле являются 3-мя кортежами.
Я хочу выполнить некоторую функцию для каждого элемента каждого 3-кортежа в каждом списке во втором списке (если это понятно). Эта функция будет зависеть от элемента в первом списке, и я бы хотел, чтобы все это выполнялось по порядку.
ie: Если у меня есть список, такой как [0,1,2,3,1,5,6,7,1,2,3,5,1,1,2,3,5,6]
как мой первый список, а [[(13,12,32),(11,444,25)],[(312,443,12),(123,4,123)],[(545,541,1),(561,112,560)]]
как мой второй список, я бы хотел выполнить такую операцию, чтобы он включал первый элемент первого списка и первый элемент первого кортежа первого списка второго списка. Я бы хотел, чтобы эта операция повторялась с использованием n-го элемента первого списка, и n-й элемент кортежа bla bla
Итак, если мы посмотрим, какие элементы будут использоваться вместе для операции:
- 0 идет с 13
- 1 идет с 12
- 2 идет с 32
- 3 идет с 11
- 1 идет с 444
- 5 идет с 25
- 6 идет с 312
и так далее.
Что происходит, так это то, что моя функция возьмет элемент из второго списка, его парный элемент из списка 1, каким-то образом использует эти биты и выдает новое значение, чтобы заменить его оригинал второго экземпляра списка. Затем я хочу построить заменяющий/новый «второй список», который является вторым списком после запуска этой функции (которая использует информацию, как описано выше)
Надеюсь, что это было полусогласованным, я старался быть таким информативным, как возможное. Пожалуйста, спросите, если что-то неясно.
Приветствия, и спасибо за любую помощь, которую вы можете предоставить!
Edit:
Я хочу взять список 1 и список 2, затем расплющить список 2. Затем я хочу, чтобы перебрать в обоих списках, используя какую-либо функцию. Затем я хочу построить новый список, в котором используются выходные данные из моей функции, которые будут просто «скорректированными» значениями для моего сплющенного второго списка, но в том формате, в котором он был изначально, кортежей в списке списка.
т.е. мой выход может быть что-то вроде:
[[(13,13,32),(11,444,24)],[(313,443,12),(123,4,123)],[(546,542,1),(561,112,561)]]
с некоторыми из значений либо изменения немного или оставаться такими же, как и в результате того, что «прошло через» мою функцию.
Edit # 2:
галочкой решение точно показывает, что было необходимо для этой проблемы!
Edit # 3:
Несколько исправлений, которые необходимы для топового решения:
Как исправить код таким образом, что, если первый список пуст, то выход будет только оригинальной второй список? И если второй список пуст, вывод должен быть просто пустым. Также, если len (список 1)> len (список 2), он будет просто перебираться до конца списка 2, а затем игнорировать избыток в списке 1, выводя новый список того же формата, что и исходный список 2. И если len (список 2)> len (список 1), он будет просто перебираться, когда список 1 может быть сопоставлен, но оставить оставшуюся часть списка 2 неповрежденной, а не отрубать ее.
Могу ли я выполнить все эти исправления с помощью некоторых циклов if/elseif/else?
EDIT: Я все еще пытаюсь исправить эти проблемы, которые могут быть разделены/постулированы как отдельный запрос. Я задал новый вопрос: https://stackoverflow.com/questions/19118641/making-a-function-only-run-for-certain-conditions-in-python, если кто-то заинтересован в помощи.
Похоже, что вы действительно хотите сделать, это * flatten * второй список, а затем вы можете просто, например. 'zip' вместе с первым. –
Итак, как только я сплющил второй список, используя один из методов, предложенных ниже, выполнил мою операцию с помощью элемента из каждого списка, как бы я создал несвязанную замену/новую версию моего второго списка из моих выведенных данных? –
Это поможет вам в вашем примере выполнить эту работу самостоятельно и показать нам * точно, что вы хотите в конечном итоге. –