отображение элементов списка из списка B длины 4 на каждый элемент списка списка A - PullRequest
0 голосов
/ 20 марта 2019

У меня была проблема, решающая проблему ниже, проверьте код ниже.

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 Ответ

0 голосов
/ 20 марта 2019

Я не имею ни малейшего представления, зачем вам это нужно (и я смею предположить, что это может быть еще одним случаем 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'

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...