Python 列表循环中每个项目的范围列表
我试图从一个简单的数字列表中创建一个范围列表。 它在通过简单范围循环时工作,但在尝试循环自定义列表时,它会给出空的子列表。我刚开始我的python冒险,不要太残忍;)任何帮助都将不胜感激 预期输出来自列表Python 列表循环中每个项目的范围列表,python,function,loops,range,Python,Function,Loops,Range,我试图从一个简单的数字列表中创建一个范围列表。 它在通过简单范围循环时工作,但在尝试循环自定义列表时,它会给出空的子列表。我刚开始我的python冒险,不要太残忍;)任何帮助都将不胜感激 预期输出来自列表[0,1,2]->[[0],[0,1],[0,1,2] a = [1,2] b = [] def makerange(n): b.append(list(range(0, n, 1))) for a in range(10): makerange(a) print(b)
[0,1,2]
->[[0],[0,1],[0,1,2]
a = [1,2]
b = []
def makerange(n):
b.append(list(range(0, n, 1)))
for a in range(10):
makerange(a)
print(b)
[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8]]
不要过分复杂化:
>>> a = [0,1,2]
>>> [list(range(n+1)) for n in a]
[[0], [0, 1], [0, 1, 2]]
将1添加到
范围
端点以包括端点值。不要将其过度复杂化:
>>> a = [0,1,2]
>>> [list(range(n+1)) for n in a]
[[0], [0, 1], [0, 1, 2]]
将1添加到
范围
端点以包括端点值。将收集列表保留在函数中并从函数返回更安全:
def multiranges(data):
rv = []
for p in data:
rv.append(list(range(p+1)))
return rv
print(multiranges([0,1,2]))
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
更安全的做法是将收集列表保存在函数中并从函数返回:
def multiranges(data):
rv = []
for p in data:
rv.append(list(range(p+1)))
return rv
print(multiranges([0,1,2]))
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
如果列表不是整数,请使用切片:
- 案例1:
l = [*'ABCDEF']
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
- 案例2:
l = [0,1,2]
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
- 案例3
l = [2,1,0]
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
如果列表不是整数,请使用切片:
- 案例1:
l = [*'ABCDEF']
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
- 案例2:
l = [0,1,2]
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
- 案例3
l = [2,1,0]
[l[:n+1] for n in range(len(l))]
输出:
[[0],[0,1],[0,1,2]]
[['A'],
['A', 'B'],
['A', 'B', 'C'],
['A', 'B', 'C', 'D'],
['A', 'B', 'C', 'D', 'E'],
['A', 'B', 'C', 'D', 'E', 'F']]
[[0], [0, 1], [0, 1, 2]]
[[2], [2, 1], [2, 1, 0]]
如果您可以包含预期的输出,那就太好了。您将
a
定义为[1,2]
,然后将其丢弃,并从范围使用a
作为0
到9
。您希望它基于[1,2]
还是范围(10)
?无论哪种方式,您都需要避免重用变量名,因为这只会让您感到困惑;将循环变量更改为i
(因此对于范围(10)中的i是,
或对于a:
中的i,那么makerange(i)
就不会那么混乱了。无法复制:[[]、[0]、[0,1]、[0,1,2]、[0,1,2]、[0,2,3,3,4,4]、[0,1,2,3,4,5]、[0,1,2,2,3,4,7,6],[0,1,2,3,4,5,6,7,8]
btw:b.append(list(range(0,n,1))
=>b.append(list(range(n)))
预期输出完成,结果现在正确了如果可以包含预期输出,那就太好了。您将a
定义为[1,2]
,然后扔掉它,从范围使用a
作为0
到9
。您希望它基于[1,2]
还是范围(10)
?无论哪种方式,您都需要避免重用变量名,因为这只会让您感到困惑;将循环变量更改为i
(因此,对于范围(10)中的i来说是,或者对于a:
,那么makerange(i)
就不会那么令人困惑了。无法复制:[[]、[0]、[0,1]、[0,1]、[0,1]、[0,2,3]、[0,1,2,3,4,4]、[0,1,2,3,4,5,6,7]、[0,1,2,2,2,3,5,6]、[0,1,2,2,5,5,6]、[8]。(列表(范围(0,n,1)))
=>b.append(列表(范围(n)))
预期输出完成,结果现在是正确的