为什么不';我不能得到完整的索引!(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]