python中的简单列表模拟

2024-04-25 22:03:50 发布

您现在位置:Python中文网/ 问答频道 /正文

lists = ['A', 'B', 'C', 'D']
nos = [4, 4, 1, 1]

for idx, ln in enumerate(zip(lists,nos)):
    l, n = ln[0], ln[1]       
    in_nos = range(1, n+1)    
    for indx, in_no in enumerate(in_nos):  
        out_no = ??? ### **I need an expression to get out_no here** 
        print out_no   

除了???在输出“否”之后,我需要打印出从1到nos中数字总和的数字,即:

1
2
3
4
5
6
7
8
9
10

我试着:

out_no = idx*n + indx + 1

结果是:

1
2
3
4
5
6
7
8
1
1

哪个out_no会给我正确的结果?你知道吗


Tags: noinanforrange数字zipneed
1条回答
网友
1楼 · 发布于 2024-04-25 22:03:50

取决于你可以改变什么,简单的方法当然是:

lists = ['A', 'B', 'C', 'D']
nos = [4, 4, 1, 1]

a = 0

for idx, ln in enumerate(zip(lists,nos)):
    l, n = ln[0], ln[1]       
    in_nos = range(1, n+1)    
    for indx, in_no in enumerate(in_nos):  
        out_no = a+indx+1
        print out_no   ##The result should be HERE
    a += n

假设你只能换成“不”,你可以:

lists = ['A', 'B', 'C', 'D']
nos = [4, 4, 1, 1]

for idx, ln in enumerate(zip(lists,nos)):
    l, n = ln[0], ln[1]       
    in_nos = range(1, n+1)    
    for indx, in_no in enumerate(in_nos):  
        out_no = sum(nos[0:+idx])+indx+1
        print out_no   ##The result should be HERE

好吧,正如IanAuld所指出的,如果你能抛弃一切,但没有更简单的解决方案,例如:

nos = [4, 4, 1, 1]
for i in range(sum(nos)): print i+1

相关问题 更多 >