сопоставление элементов списка из списка B длиной 4 с каждым элементом списка A

#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'

...