2016-08-27 51 views
-1

我想要的是num循環x + 1中的列表,直到y生成(並且循環停止),這是一個很大的數字。python循環x + 1次列表中的列表,直到編號y

def loop_num(y): 
    num = [] 
    num.append([1]) 
    num.append([2,3]) 
    num.append([4,5,6]) 
    num.append([7,8,9,10]) 
    ... #stop append when y in the appended list 
    #if y = 9, then `append [7,8]` and `return num` 
    return num 


# something like[[1 item], [2items], [3items], ...] 
# the number append to the list can be a random number or ascending integers. 

抱歉沒有明確

+0

什麼是x和y值?你能更清楚一點嗎? –

+0

x是如何將整數循環並追加到列表 – Montague27

+0

>它追加項[[1次],[2次],[3次],... [x + 1次]] y是停止的整數環路 – Montague27

回答

1

兩個itertools.count對象應該做你想要什麼:

from itertools import count 

def loop_num(y): 
    counter, x = count(1), count(1) 
    n = 0 
    while n < y: 
     num = [] 
     for i in range(next(x)): 
      num.append(next(counter)) 
      if num[-1] == y: 
       break 
     yield num 
     n = num[-1] 

輸出:

>>> list(loop_num(100)) 
[[1], 
[2, 3], 
[4, 5, 6], 
[7, 8, 9, 10], 
[11, 12, 13, 14, 15], 
[16, 17, 18, 19, 20, 21], 
[22, 23, 24, 25, 26, 27, 28], 
[29, 30, 31, 32, 33, 34, 35, 36], 
[37, 38, 39, 40, 41, 42, 43, 44, 45], 
[46, 47, 48, 49, 50, 51, 52, 53, 54, 55], 
[56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66], 
[67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78], 
[79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91], 
[92, 93, 94, 95, 96, 97, 98, 99, 100]] 
0

我不知道你是什麼的問題。但我假設你已經做了類似的事情。

x=[[1], [2,3], [4,5,6]] 
b=[str(a)+' items' for a in [j for i in x for j in i]] 

而你在找什麼是這個。

c=max([j for i in x for j in i]) 

要做到這一點。

z=[] 
z.append(str(c)+' items') 
1
def loop_num(x): 
    i=1 
    cnt=0 
    sum=0 
    while sum<x: 

     sum+=i 
     cnt=cnt+1 
     i=i+1 

    num=[ [] for x in range(cnt)] 

    count=0 

    sz=1 
    init=1 
    while(count<cnt): 
     cur=1 
     while(cur<=sz): 
      num[count].append(init) 
      init=init+1 
      cur=cur+1 
     count=count+1 
     sz=sz+1; 
    return num 

從您可以從命令行運行Python文件(比如文件名是test.py)

python -c 'import test; print test.loop_num(55)'