为什么不';我不能得到完整的索引!(python列表)
输入:为什么不';我不能得到完整的索引!(python列表),python,list,indexing,range,Python,List,Indexing,Range,输入: def part3 (x): for i in range (len(x)): while i <= len(x): print (x[i]) return x[i+1] x=[5,2,3] x.sort() print(x[0],x[1], x[2]) print(part3(x)) 我的问题是:为什么我不能在3之后得到5?!?!该函数不应该转到x[2] 函数在循环的第
def part3 (x):
for i in range (len(x)):
while i <= len(x):
print (x[i])
return x[i+1]
x=[5,2,3]
x.sort()
print(x[0],x[1], x[2])
print(part3(x))
我的问题是:为什么我不能在3之后得到5?!?!该函数不应该转到x[2] 函数在循环的第一次迭代时返回,因为您在那里有一个
return
语句。所以当你有
print(part3(x))
首先在while
-循环中执行print(x[i])
(其中i=0,因为这是第一次迭代),然后通过上面的原始print语句打印函数的返回值(x[i+1]
)
调用x.sort()
后,x
将是[2,3,4]
,因此x[0]
是2
,x[0+1]=x[1]
是3
,这解释了您的输出
我不太确定你想用这段代码实现什么,所以很难给你关于如何修复它的建议。如果您只是想打印x
的内容,那么您将使它变得比必须的更复杂,因为您可以简单地做到这一点
for i in x:
print(i)
注意,这里不需要return语句,因此不需要多余的打印
;i、 e
print(part3(x))
就会变成
part3(x)
因为您是在函数本身中进行打印的 你在做循环错误。我假设重点是打印x
的每个元素
你想要:
def part3(x):
for element in x:
print(element)
现在请注意:
在for循环中不需要while循环
您不希望在循环中返回任何内容,因为这将中断循环并退出函数
在python中,可以直接在数组上循环,而无需使用索引变量
您可以看到“2”是内部打印的结果,看到“3”是打印“return x[i+1]”的结果,而没有看到“5”bcoz您离开了while循环和函数
如果只需打印所有值并返回最后一个值,则可以尝试以下操作:
def part3 (x):
for val in x:
print val
return x[-1]
如果需要了解索引,可以尝试枚举:
def part3 (x):
for i, val in enumerate(x):
print i, val
return x[-1]
你没有在循环中增加你的i
,而这段代码读起来非常奇怪。为什么要循环遍历这些值,然后将这些值用作索引?为什么要循环遍历索引?这不是Pythonic,你这样做是在为自己做更多的工作。当你在第一次迭代中返回时,整个事情都没有意义。我试图在不知道具体索引的情况下打印列表中的所有值,所以我认为我必须循环索引…在上面的示例中,我想要得到2/3/5
def part3 (x):
for i, val in enumerate(x):
print i, val
return x[-1]