python 在列表的列表中循环 x + 1 次直到编号 y
python loop x + 1 times in a list of list until number y
我想要的是 num
中的列表每次循环 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.
抱歉不清楚
我不确定你的问题是什么。但我假设你已经做过类似的事情。
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')
两个 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]]
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)'
我想要的是 num
中的列表每次循环 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.
抱歉不清楚
我不确定你的问题是什么。但我假设你已经做过类似的事情。
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')
两个 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]]
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)'