Python 将列表项从长度为4的列表B映射到列表A的每个列表项
我在解决下面的问题时遇到问题,请检查下面的代码Python 将列表项从长度为4的列表B映射到列表A的每个列表项,python,list,loops,nested,Python,List,Loops,Nested,我在解决下面的问题时遇到问题,请检查下面的代码 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
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']]
请帮助我与您的建议,将不胜感激 我一点也不知道您为什么需要这个(我敢猜这可能是…)的另一种情况,我必须声明,在一篇文章中为一个问题添加不同的样本数据集有点奇怪。。。但是-也许您可以使用此选项:
(我称之为“二次链接”,因为映射是不同的…) 解决方案功能:
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']]
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'
...
…或者如果您不需要在内存中存储整个内容,只想对其进行迭代作为生成器:
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']]
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'
...
样本数据:
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']]
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'
...
函数示例:
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']]
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'
...
或
生成器示例:
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']]
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'
...
L=quadraticChaining([list1,list2,list3])
#
下一(L)
#‘A0’
下一(L)
#['B0','B1','B2','B3']
下一(L)
#['C0',
#“C1”,
#“C2”,
#“C3”,
#"C4",,
#“C5”,
#“C6”,
#“C7”,
#“C8”,
#“C9”,
#‘C10’,
#‘C11’,
#‘C12’,
#‘C13’,
#‘C14’,
#“C15”]
下一(L)
#“A1”
...
您的问题是什么?你有什么错误吗?你能描述一下你的问题吗?很难从这段代码和示例(至少描述一下您的输入/输出)中找到答案,不要将您的输出粘贴为图像。最好把它复制/粘贴到你的答案上。通过搜索引擎将更容易找到它。是的。我已经定义了列表,其中列表1有4个项目,列表2有16个项目,以此类推,列表6中的4096个项目。但是我需要一个类似于列表1中每个项目的执行结果,必须从列表2中映射4个连续的项目,以便每个列表必须得到4个相等的块项目,下面任何列表的任何项目。总体情况就像一个树结构,四下一,四下一…等等!但是List3
包含8个元素(或者20个元素取决于您如何计算),而不是64个元素。