Python: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

为什么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 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
的工作原理。