python - 列表项从长度为 4 的列表 B 到列表 A 的每个列表项的映射
问题描述
我在解决以下问题时遇到了问题,请检查以下代码。
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']]
请帮助我提出您的建议,我们将不胜感激!
解决方案
我一点也不知道你为什么需要这个(我敢猜测这可能是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'
...
推荐阅读
- javascript - 获取有关滚动的 div 详细信息
- android - com.android.builder.internal.aapt.v2.Aapt2Exception:Android 资源链接失败:错误:链接引用失败
- javascript - 如何使用 ShellJS 在 JS NPM 脚本中等待进程
- java - 解析字符串以获取特定值
- ios - 如何在 Swift 中使用 Codable 协议进行解码时进行区分?
- python-3.x - 使用 Python 在运行时将硒结果/输出保存在文本文件中
- java - 为泛型类型扩展 Object[]
- r - 仅当它们具有匹配的元素名称时才从列表中提取记录
- laravel - 如何为laravel中的某些人制作不可点击的动态菜单?
- r - R 可以在 AWS Lambda 函数中与 AWS S3 一起使用吗?