更新: 按要求添加了所需的图案 我有两个列表,预期输出与上次不同
Numberset1 = [10,11,12]
Numberset2 = [1,2,3,4,5]
我想通过操纵列表来显示输出,预期的输出是
10 1 1
10 1 2
10 1 3
10 1 4
10 1 5
10 2 2
10 2 3
10 2 4
10 2 5
10 2 1
10 3 3
10 3 4
10 3 5
10 3 1
10 3 2
10 4 4
10 4 5
10 4 1
10 4 2
10 4 3
10 5 5
10 5 1
10 5 2
10 5 3
10 5 4
11 2 2
11 2 3
11 2 4
11 2 5
11 2 1
11 3 3
11 3 4
11 3 5
11 3 1
11 3 2
11 4 4
11 4 5
11 4 1
11 4 2
11 4 3
11 5 5
11 5 1
11 5 2
11 5 3
11 5 4
11 5 1
11 1 1
11 1 2
11 1 3
11 1 4
11 1 5
12 3 3
12 3 4
12 3 5
12 3 1
12 3 2
12 4 4
12 4 5
12 4 1
12 4 2
12 4 3
12 4 4
12 4 5
12 5 5
12 5 1
12 5 2
12 5 3
12 1 1
12 1 2
12 1 3
12 1 4
12 1 5
12 2 2
12 2 3
12 2 4
12 2 5
12 2 1
我尝试的代码如下所示,这是在前面的问题中提出的,我尝试将其用于下一级循环,但无法获得所需的输出
Numberset1 = [10,11,12]
Numberset2 = [1,2,3,4,5]
from itertools import cycle, islice
it = cycle(Numberset2)
for i in Numberset1:
for a in Numberset2:
for j in islice(it, len(Numberset2)):
print(i, a,j)
skipped1 = next(it)
skipped1 = next(it)
我得到的结果是
10 1 1
10 1 2
10 1 3
10 1 4
10 1 5
10 2 2
10 2 3
10 2 4
10 2 5
10 2 1
10 3 3
10 3 4
10 3 5
10 3 1
10 3 2
10 4 4
10 4 5
10 4 1
10 4 2
10 4 3
10 5 5
10 5 1
10 5 2
10 5 3
10 5 4
11 1 2
11 1 3
11 1 4
11 1 5
11 1 1
11 2 3
11 2 4
11 2 5
11 2 1
11 2 2
11 3 4
11 3 5
11 3 1
11 3 2
11 3 3
11 4 5
11 4 1
11 4 2
11 4 3
11 4 4
11 5 1
11 5 2
11 5 3
11 5 4
11 5 5
12 1 3
12 1 4
12 1 5
12 1 1
12 1 2
12 2 4
12 2 5
12 2 1
12 2 2
12 2 3
12 3 5
12 3 1
12 3 2
12 3 3
12 3 4
12 4 1
12 4 2
12 4 3
12 4 4
12 4 5
12 5 2
12 5 3
12 5 4
12 5 5
12 5 1
请注意,当数字11在第一列中开始时的变化比预期的输出要大
如何在多个级别上使用cycle和islice
模式: 第一列按Numberset1中的数字顺序排列,第二列按Numberset1中的数字顺序排列,Numberset1中第一个数字的第3列应该按照NUmberset2中的数字顺序排列,但是当Numberset1中第一个数字的第2列更改时,它也应该更改并从NUmberset2列表中的第2个数字开始打印,依此类推
下面是一个使用
cycle
和islice
完成任务的版本。为了使代码更简洁,我创建了一个生成器函数aligned_cycle
,它循环遍历cycle
生成的项,直到得到我们想要开始当前循环的项。你知道吗此更新版本可以处理长度大于
Numberset2
的Numberset1
。你知道吗输出
Jon Clements编写了
aligned_cycle
更健壮、更高效的版本:谢谢,乔恩!你知道吗
相关问题 更多 >
编程相关推荐