Python 对于列表中的循环

Python 对于列表中的循环,python,list,for-loop,Python,List,For Loop,我想得到一个按升序排列的有序列表,但去掉了原始列表中的第一个元素。 但是第一个for循环只运行4次。在第一个for循环中循环4次后: lst=[6, 5, 4] 我认为第一个for循环应该继续运行,但它完成了。我不知道为什么 源代码如下: #coding: utf-8 lst = [0, 1, 6, 2, 5, 3, 4] new_lst = [] # the ordered list, [0, 1, 2, 3, 4, 5, 6] p0 = lst[0] # the first eleme

我想得到一个按升序排列的有序列表,但去掉了原始列表中的第一个元素。 但是第一个for循环只运行4次。在第一个for循环中循环4次后:

lst=[6, 5, 4]
我认为第一个for循环应该继续运行,但它完成了。我不知道为什么

源代码如下:

#coding: utf-8
lst = [0, 1, 6, 2, 5, 3, 4]
new_lst = []  # the ordered list, [0, 1, 2, 3, 4, 5, 6]
p0 = lst[0]  # the first element can be arbitrary
lst.remove(p0)
new_lst.append(p0)
for temp in lst:
    lst.remove(temp)
    while 1:
        for pt in lst:
            if temp < pt:
                continue
            else:
                lst.append(temp)
                temp = pt
                lst.remove(pt)
                break
        else:
            new_lst.append(temp)
            break

print("the ordered list:", new_lst)

试试新的。如果存在字符,则按整数值和ascii值对列表进行排序。对于你的问题来说,这是一个更好的解决方案,而且更像是一个蟒蛇

要忽略排序中的第一个元素:

newlst = [lst[0]]+sorted(lst[1:])

第一个元素lst[0]必须包含在[]中,才能得到一个列表,该列表可以使用+扩展,其余的元素lst[1:]也可以扩展。

如果可以使用sorted,这是最简单的方法。如果不是,这是我的解决方案:

lst = [0, 1, 6, 2, 5, 3, 4]
new = lst[1:]
for num in range(len(new)-1, 0, -1):
    for i in range(num):
        if new[i] > new[i+1]:
            new[i], new[i+1] = new[i+1], new[i]
new.insert(0, lst[0])
print(new) 

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。无法正确完成不是一个问题规范。您期望的结果是什么,[1,2,3,4,5,6]?@JohnKugelman,从他的代码判断,我认为您可以使用排序吗?通过这种方式,new_lst=sortedlst[1:]可以完全取代它,这要简单得多。范荣宏:我刚才讲过,为什么,;在CPython上的实践中,它不会出错,但是如果您删除了当前所在的项目,它将在迭代中跳过以下项目。单击此评论中的链接,并从此处查看其他链接问题;其中有几个是我调用列表的形式。在一个循环中删除,该循环在列表上迭代,它会中断,为什么?是的,用户不太清楚他想要什么。可能的标志?我想这正是用户想要的。