Python:For循环不工作
为什么for循环不起作用Python:For循环不工作,python,list,for-loop,pass-by-reference,Python,List,For Loop,Pass By Reference,为什么for循环不起作用 l=[1,2,3,4,5] def times(x): for i in len(x): x[i]+=10 times(l) print l 理想情况下,它应该打印递增10的列表元素。但它给了我以下错误: Traceback (most recent call last): File "ex1.py", line 5, in <module> times(l) File "ex1.py", line 3, in ti
l=[1,2,3,4,5]
def times(x):
for i in len(x):
x[i]+=10
times(l)
print l
理想情况下,它应该打印递增10的列表元素。但它给了我以下错误:
Traceback (most recent call last):
File "ex1.py", line 5, in <module>
times(l)
File "ex1.py", line 3, in times
for i in len(x):
TypeError: 'int' object is not iterable
回溯(最近一次呼叫最后一次):
文件“ex1.py”,第5行,在
次(l)
文件“ex1.py”,第3行,以时间为单位
对于len(x)中的i:
TypeError:“int”对象不可编辑
哪里出错了?函数只返回列表的长度。它只是一个数字,所以不能用for
循环对其进行迭代
也许您想使用该函数以及len(x)
我们在这里使用xrange
函数,因为range
函数将在迭代之前在内存中创建整个列表。比如说,
print range(10)
将为您提供包含从0到9的元素的新构造列表。考虑迭代一个非常大的列表。假设列表的大小为10000000。仅仅为了迭代而生成从0到10000000的数字确实是浪费内存,对吗?这就是为什么我们使用xrange
xrange
返回一个iterable对象,该对象在迭代时一次给出一个数字。它非常节省内存,因为我们不必构建整个列表
建议:除非绝对需要修改原始列表,否则您可以创建一个新列表并返回它
定义次数(我的列表,我的数量=10):
返回[current_num+my_num for my_列表中的current_num]
l=[1,2,3,4,5]
l=次(l)
打印l
它将对数据产生与第一个相同的影响。但是我们使用列表理解来创建一个新的列表,并将其分配给变量l
。因此,现在l
指向新生成的列表,而不是旧列表。函数将只返回列表的长度。它只是一个数字,所以不能用for
循环对其进行迭代
也许您想使用该函数以及len(x)
我们在这里使用xrange
函数,因为range
函数将在迭代之前在内存中创建整个列表。比如说,
print range(10)
将为您提供包含从0到9的元素的新构造列表。考虑迭代一个非常大的列表。假设列表的大小为10000000。仅仅为了迭代而生成从0到10000000的数字确实是浪费内存,对吗?这就是为什么我们使用xrange
xrange
返回一个iterable对象,该对象在迭代时一次给出一个数字。它非常节省内存,因为我们不必构建整个列表
建议:除非绝对需要修改原始列表,否则您可以创建一个新列表并返回它
定义次数(我的列表,我的数量=10):
返回[current_num+my_num for my_列表中的current_num]
l=[1,2,3,4,5]
l=次(l)
打印l
它将对数据产生与第一个相同的影响。但是我们使用列表理解来创建一个新的列表,并将其分配给变量l
。因此,现在l
指向新生成的列表,而不是旧列表。这是因为len(x)只是一个整数,您需要创建一个列表,例如
l=[1,2,3,4,5]
def times(x):
for i in range(len(x)):
x[i]+=10
times(l)
print l
这是因为len(x)只是一个整数,您需要创建一个列表,例如
l=[1,2,3,4,5]
def times(x):
for i in range(len(x)):
x[i]+=10
times(l)
print l
对于len中的i(x)=>对于range中的i(len(x)),您忘记了阅读Python中
for
的工作原理。对于len中的i(x)=>对于range中的i(len(x)),您忘记了阅读Python中for
的工作原理。