- 主题:如何生成这样的嵌套列表
如果totalpages = 495
就生成下面的列表,
pages = [[1,100],[101,200],[301,400],[401,495]]
如果totalpages = 630
就生成下面的列表,
pages = [[1,100],[101,200],[301,400],[401,500),[501,600],[601,630]]
这个有没有一行代码的写法?
比如说,
for x in x for ...
--
修改:javame FROM 116.231.63.*
FROM 116.231.63.*
一个循环不就完事了嘛
循环体是.append
【 在 javame (yimin) 的大作中提到: 】
: 如果totalpages = 495
: 就生成下面的列表,
: pages = [[1,100],[101,200],[301,400],[401,495]]
: ...................
--
FROM 13.212.202.*
import math
tp = 630
pgRngs = [[i*100+1, min(tp, (i+1)*100)] for i in range(math.ceil(tp/100))]
【 在 javame (yimin) 的大作中提到: 】
: 如果totalpages = 495
: 就生成下面的列表,
: pages = [[1,100],[101,200],[301,400],[401,495]]
: ...................
--
FROM 59.77.36.*
def f(b,a=1) : return [[a,a+99]] + f(b, a + 100) if b - a > 99 else [[a,b]]
f(495)
[[1, 100], [101, 200], [201, 300], [301, 400], [401, 495]]
f(630)
[[1, 100], [101, 200], [201, 300], [301, 400], [401, 500], [501, 600], [601, 630]]
【 在 javame (yimin) 的大作中提到: 】
: 如果totalpages = 495
: 就生成下面的列表,
: pages = [[1,100],[101,200],[301,400],[401,495]]
: ...................
--
修改:puja FROM 202.100.51.*
FROM 202.100.51.*
我去学习一下,谢谢
【 在 puja (puja) 的大作中提到: 】
: def f(b,a=1) : return [[a,a+99]] + f(b, a + 100) if b - a > 99 else [[a,b]]
: f(495)
: [[1, 100], [101, 200], [201, 300], [301, 400], [401, 495]]
: ...................
--
FROM 124.78.138.*
>>> f(100000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in f
File "<stdin>", line 1, in f
File "<stdin>", line 1, in f
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded in comparison
>>>
【 在 puja (puja) 的大作中提到: 】
: def f(b,a=1) : return [[a,a+99]] + f(b, a + 100) if b - a > 99 else [[a,b]]
: f(495)
: [[1, 100], [101, 200], [201, 300], [301, 400], [401, 495]]
: ...................
--
FROM 59.77.36.*
这个能用yield来写吗?
【 在 callmebbser (BBSer) 的大作中提到: 】
: >>> f(100000)
: Traceback (most recent call last):
: File "<stdin>", line 1, in <module>
: ...................
--
FROM 124.78.12.*
>>> a=list(zip(range(1,total_pages+1,100),range(100,total_pages+1,100)))
>>> if total_pages % 100:
a.append((len(a)*100+1,total_pages))
【 在 javame 的大作中提到: 】
: 如果totalpages = 495
: 就生成下面的列表,
: pages = [[1,100],[101,200],[301,400],[401,495]]
: ...................
--
FROM 123.112.67.*
可以的
【 在 javame 的大作中提到: 】
: 这个能用yield来写吗?
: --
发自「今日水木 on iPhone XS」
--
FROM 117.136.38.*
我写出一半了,还有一个边界的错误。
def func(listTemp, n):
for i in range(0, len(listTemp), n):
yield [listTemp[i],listTemp[i+3]]
if __name__ == '__main__':
listTemp = [1,2,3,4,5,6,7,8,9]
temp = func(listTemp, 4)
for i in temp:
print(i)
===
是不是listTemp[i+3]增加一个带lamda函数的判断就好了?
【 在 wwwfish 的大作中提到: 】
: 可以的
: 发自「今日水木 on iPhone XS」
--
修改:javame FROM 124.78.8.*
FROM 124.78.8.*