Для личного проекта у меня есть три списка. Один из них содержит набор массивов (l2), размер которых всегда определяется настройкой l2_size и всегда содержит случайные члены l1. Следующий массив, l3, с другой стороны, всегда будет набором из 0 количества len (l1).Соответствие итераций в списках, имеющих значительные трудности
Это означает, что ...
l1 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
l2 = [[3, 4, 5, 2, 4],[3, 5, 1, 2, 4], [4, 3, 2, 1, 5]]
l3 = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Мне нужно выполнить поиск, например, что
Начиная с l2 [0], если указатель l2 [0] попадает l2 [0], выполните поиск через l1, чтобы найти l1 [i] == первое значение l2 [0].
Как только первое значение l2 [0] использует l3 для назначения его соответствующего значения.
Поскольку размер массивов в l2 [0] составляет 5 членов, мы собираемся присвоить соответствующее значение от 1 до l3 максимум пять раз. Как только мы ударили по этой цели, мы перейдем к следующему набору l2 [1].
Как только мы закончим с l2 [0] (так далее, чтобы l2 [1]), нам нужно назначить следующее соответствующее значение, поэтому 2, не перегружая значения в l3.
Иллюстрация ...
Представьте себе это бейсбол скоринг карты ... У меня есть l1 бейсбольные карточки в моей палубе. Композиции бейсбольных карточек, которые я хочу в моих руках, содержатся в l2. Эти карты выиграют мне игру! В этом случае l2 = [1,2,3,4,5]. Я массивный читер и должен найти все l2 в l1 (карты для рук). Поиск l2 в l1 Я отмечаю, где они используют l3. Я также использую l3, чтобы указать, с какой стороны их помещать.
Для правильного решения мы должны однозначно сопоставлять значения в l2 так, чтобы они были однозначно идентифицированы как значения в l1 с использованием l3. Это будет означать ...
l1 = [1,2,3,4,5,1,2,3,4,5]
l2 = [[1,2,3,4,5],[1,2,3,4,5]]
l3 = [1,1,1,1,1,2,2,2,2,2]
Было бы действительно. Но ...
l1 = [1,2,3,4,5,1,2,3,4,5]
l2 = [[1,2,3,4,5],[1,2,3,4,5]]
l3 = [1,2,1,1,1,2,2,1,2,2]
Было бы недопустимо, так как нет рук в l2, содержащий [2,1,2,4,5] в любом порядке.
Пример
С l2 [0] мы будем перебирать l1 снова и снова и забрать все объекты в l2 [0] и подписать их в l3. Это должно выглядеть так (вручную) ...
l1 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
l2 = [[3, 4, 5, 2, 4],[3, 5, 1, 2, 4], [4, 3, 2, 1, 5]]
l3 = [0,0,1,1,1,0,1,0,1,0,0,0,0,0,0]
Значение 1 присвоено в l3, поскольку это первые экземпляры соответствующих значений мы сталкиваемся. Теперь мы закончили с l2 [0], потому что мы нашли все его элементы в l1. Следующее задание - l2 [1] ...
l1 = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]
l2 = [[3, 4, 5, 2, 4],[3, 5, 1, 2, 4], [4, 3, 2, 1, 5]]
l3 = [2,2,1,1,1,0,1,0,1,0,0,0,2,2,2]
Это то, что я приготовил, но безрезультатно ...
assignvar = 1
pos = 0
for x in l2:
for y in x:
for z in l1:
while userpos < len(l1):
if y == z:
l1[pos] = assignvar
while l2_size == pos:
assignvar += 1
l2_size = l2_size+l2_size #stops pos going out of range, changes assignvar to 2 (so appending the next set of l3 iterables to 2 .etc)
userpos = userpos+1
Действительно совершенно смущен, как подойти к этой проблеме в моем коде. Я чувствую, что у меня есть правильная идея, использующая три для петель, но я уже некоторое время ударяю это с помощью своего гаечного ключа и полностью сгорел.
Реальный мир входных наборов данных ...
l1 = [5005.0, 5002.5, 5003.0, 5003.0, 5003.5, 5002.5, 5003.5, 5004.0, 5004.5, 5004.0, 5002.5, 5005.0, 5004.5, 5004.0, 5005.0, 5002.5, 5003.5, 5004.0, 5002.5, 5002.5, 5004.0, 5004.0, 5003.5, 5001.5, 5001.5, 5005.0, 5003.0, 5005.0, 5003.5, 5000.5, 5002.5, 5003.5, 5005.0]
l2 = [[5002.5, 5004.0], [5002.5, 5004.5], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5004.5], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5003.0, 5003.5], [5003.0, 5003.5], [5003.0, 5004.0], [5003.0, 5004.5], [5003.0, 5004.0], [5003.0, 5005.0], [5003.0, 5004.5], [5003.0, 5004.0], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5004.0], [5003.0, 5004.0], [5003.0, 5004.0], [5003.0, 5003.5], [5003.0, 5005.0], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5003.5], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5003.5], [5003.0, 5004.0], [5003.0, 5004.5], [5003.0, 5004.0], [5003.0, 5005.0], [5003.0, 5004.5], [5003.0, 5004.0], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5004.0], [5003.0, 5004.0], [5003.0, 5004.0], [5003.0, 5003.5], [5003.0, 5005.0], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5003.5], [5003.0, 5005.0], [5002.5, 5004.0], [5002.5, 5004.5], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5004.5], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5004.5], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5004.0], [5002.5, 5004.0], [5002.5, 5005.0], [5002.5, 5005.0], [5002.5, 5005.0], [5001.5, 5005.0], [5001.5, 5005.0], [5001.5, 5005.0], [5001.5, 5005.0], [5001.5, 5005.0], [5001.5, 5005.0], [5003.0, 5005.0], [5003.0, 5003.5], [5003.0, 5003.5], [5003.0, 5005.0], [5002.5, 5005.0]]
l3=[]
for i in range(len(l1)):
l3.append(int(0))
Прежде всего, какой из трех списков 'l1',' l2', 'l3' является входом в функцию, которую вы пытаетесь записать, и какие выходы? Кроме того, можете ли вы написать, какой должен быть выход для ввода примера? – Bolo
Или, говоря иначе: я собирался предположить, что вы берете 'l1' и' l2' и создаете 'l3' на основе этого, но потом я увидел, что вы изменяете' l1', но не 'l3' в вашем коде. Это опечатка? Если это просто опечатка, что вы ожидаете, что 'l3' будет в конце? – Bolo
Итак, l1 и l2 и l3 - все примерные входы, так как все они уже существуют. Мне нужно продолжить цикл l1, используя l2, пока у меня не будет правильной конфигурации для l3. Я привел пример на отредактированный пост. Иллюстрация: положите палец на первый элемент l2 и пойдите слева направо в l1 (в цикле), пока не найдете его. Если вы его найдете, перейдите к следующему итерируемому l2 [1] и снова и снова переходите к l1, пока не найдете l2 [1], а затем дайте ему соответствующее значение для l3 (это будет 1). – mmacheerpuppy