#python #list #loops #nested
#python #Список #циклы #вложенный
Вопрос:
У меня возникла проблема с решением приведенной ниже проблемы, пожалуйста, проверьте приведенный ниже код.
filenamee5 = 'ABC'
counter1 = 1
counter2 = 2
list1 = []
list2 = range(1000)
for x in list2:
counter1 = str(counter1)
full_name5 = (filenamee5 counter1)
list1.append(full_name5)
counter1 = counter2
counter2 = 1
numbers_list = []
level1 = []
for x in list1:
numbers_list.append(x)
ListsOfAll = numbers_list[1:1000]
for x1 in range(1, len(ListsOfAll), 4):
level1.append(list(numbers_list[x1:x1 4]))
l1 = level1[0]
l2 = level1[1:5]
l3 = level1[5:21]
l4 = level1[21:85]
l5 = level1[85:341]
l6 = level1[341:1365]
ll2 = []
for i in range(len(l2)):
aaa = l1[i], l2[i]
ll2.append(aaa)
print(ll2)
print("the length is:",len(ll2))
Мой фактический результат только для первого и второго списка:
[('ABC2', ['ABC6', 'ABC7', 'ABC8', 'ABC9']),
('ABC3', ['ABC10', 'ABC11', 'ABC12', 'ABC13']),
('ABC4', ['ABC14', 'ABC15', 'ABC16', 'ABC17']),
('ABC5', ['ABC18', 'ABC19', 'ABC20', 'ABC21'])]
the length is: 4
Здесь каждый элемент списка должен содержать четыре элемента в приведенном ниже списке, т.е. в соотношении 1: 4. Группа.
Пожалуйста, посмотрите пример ниже, чтобы понять мою проблему:
List1 = ['A','B','C','D']
List2=['E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T']
List3 = ['A',['E','F','G','H'],'B',['I','J','K','L'],'C',['M','N','O','P'],'D',['Q','R','S','T']]
Пожалуйста, помогите мне с вашими предложениями, буду признателен!
Комментарии:
1. В чем ваша проблема? У вас есть какая-либо ошибка? Не могли бы вы описать свою проблему? Трудно понять это из этого кода и примеров (по крайней мере, опишите, каков ваш ввод / вывод)
2. Не вставляйте свои выходные данные в виде изображений. Лучше скопировать / вставить это в свой ответ. Это будет проще найти через поисковую систему.
3. ДА. я определил списки, в которых list1 содержит 4 элемента, list2 содержит 16 элементов и так далее до 4096 элементов в списке 6 .. но мне нужен результат выполнения, подобный тому, что для каждого элемента в list1 должно отображаться 4 последовательных элемента из list2, так что для каждого списка должно быть получено 4 равных фрагмента элементов, любых элементов для любого списка ниже этого.
4. общая картина похожа на древовидную структуру, один ниже четырех, один ниже четырех … и так далее!
5. Но
List3
содержит 8 элементов (или 20, зависит от того, как вы считаете), а не 64.
Ответ №1:
Я не имею ни малейшего представления, зачем вам это нужно (и я смею предположить, что это может быть другим случаем проблемы xy …), и я должен заявить, что немного странно добавлять разные наборы данных для одной проблемы в один пост… Однако — возможно, вы можете использовать этот:
(Я назвал это «квадратичной цепочкой», потому что mapping
это что-то другое …)
функция решения:
def quadraticChaining(somelists):
out = []
for i, e in enumerate(somelists[0]):
out.append(e)
for p, sub in enumerate(somelists[1:]):
L = 4**(p 1)
out.append(sub[i*L:(i 1)*L])
return out
…или, если вам не нужно все это в памяти, а просто хотите выполнить итерацию по нему
в качестве генератора:
def quadraticChaining(somelists):
for i, e in enumerate(somelists[0]):
yield e
for p, sub in enumerate(somelists[1:]):
L = 4**(p 1)
yield sub[i*L:(i 1)*L]
пример данных:
list1 = ['A' str(i) for i in range(4)]
list2 = ['B' str(i) for i in range(4**2)]
list3 = ['C' str(i) for i in range(4**3)]
list4 = ['D' str(i) for i in range(4**4)]
list5 = ['E' str(i) for i in range(4**5)]
list6 = ['F' str(i) for i in range(4**6)]
пример функции:
quadraticChaining([list1, list2])
# ['A0',
# ['B0', 'B1', 'B2', 'B3'],
# 'A1',
# ['B4', 'B5', 'B6', 'B7'],
# 'A2',
# ['B8', 'B9', 'B10', 'B11'],
# 'A3',
# ['B12', 'B13', 'B14', 'B15']]
или
quadraticChaining([list1, list2, list3])
# ['A0',
# ['B0', 'B1', 'B2', 'B3'],
# ['C0',
# 'C1',
# 'C2',
# 'C3',
# 'C4',
# 'C5',
# 'C6',
# 'C7',
# 'C8',
# 'C9',
# 'C10',
# 'C11',
# 'C12',
# 'C13',
# 'C14',
# 'C15'],
# 'A1',
# ['B4', 'B5', 'B6', 'B7'],
# ['C16',
# 'C17',
# 'C18',
# 'C19',
# 'C20',
# 'C21',
# 'C22',
# 'C23',
# 'C24',
# 'C25',
# 'C26',
# 'C27',
# 'C28',
# 'C29',
# 'C30',
# 'C31'],
# 'A2',
# ['B8', 'B9', 'B10', 'B11'],
# ['C32',
# 'C33',
# 'C34',
# 'C35',
# 'C36',
# 'C37',
# 'C38',
# 'C39',
# 'C40',
# 'C41',
# 'C42',
# 'C43',
# 'C44',
# 'C45',
# 'C46',
# 'C47'],
# 'A3',
# ['B12', 'B13', 'B14', 'B15'],
# ['C48',
# 'C49',
# 'C50',
# 'C51',
# 'C52',
# 'C53',
# 'C54',
# 'C55',
# 'C56',
# 'C57',
# 'C58',
# 'C59',
# 'C60',
# 'C61',
# 'C62',
# 'C63']]
пример генератора:
L = quadraticChaining([list1, list2, list3])
# <generator object quadraticChaining at 0x0000000009993B88>
next(L)
# 'A0'
next(L)
# ['B0', 'B1', 'B2', 'B3']
next(L)
# ['C0',
# 'C1',
# 'C2',
# 'C3',
# 'C4',
# 'C5',
# 'C6',
# 'C7',
# 'C8',
# 'C9',
# 'C10',
# 'C11',
# 'C12',
# 'C13',
# 'C14',
# 'C15']
next(L)
# 'A1'
...