python中的简单列表模拟

时间:2015-06-30 14:05:33

标签: 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   

除了???之外没有修改任何东西在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会给我正确的结果?

1 个答案:

答案 0 :(得分:1)

取决于您允许更改的内容,当然简单的方法是:

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

假设你只能改变out_no,你可以这样做:

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之外的所有东西,那么就有更简单的解决方案,例如:

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