当前位置: 首页 > 知识库问答 >
问题:

在python中按升序对列表进行奇偶排序

戎元忠
2023-03-14

我有一个列表listOfNumbers=[3,2,1,4,5,6,7,8,9,22,25,16,17,28]我想按升序排序这个列表,但首先是奇数,然后是偶数,就像这样:

[1, 5, 7, 9, 11, 15, 19, 29,'startOF->evens', 4, 8, 10, 14, 16, 28, 32, 66]

无排序功能

我试过这个但我得到一个错误

data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
new_list = []
while data_list:
    minimum = data_list[0]
    for x in data_list: 
        if x < minimum:
            minimum = x
    new_list.append(minimum)
    data_list.remove(minimum)
    print (new_list)
def Huhu(data_list):
  ev_li = ''
    od_li = ''
    for i in data_list: 
        if (i % 2 == 0): 
            ev_li.append(i) 
        else: 
            od_li.append(i)
    print(new_list,od_li "startOF->evens",ev_li) 

谢谢你的回应

data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
new_list = []

while data_list:
    minimum = data_list[0]  # arbitrary number in list 
    for x in data_list: 
        if x < minimum:
            minimum = x
    new_list.append(minimum)
    data_list.remove(minimum)
odds = []
evens = []
for i in new_list:
    if i % 2 == 0:
        evens.append(i)
    else:
        odds.append(i)
print(odds,"startOF->evens", evens)

共有2个答案

贡威
2023-03-14

如果您想知道代码失败的原因:

data_list = [3,2,1,4,5,6,7,8,9,22,25,16,17,28]
new_list = []
while data_list:
    minimum = data_list[0]
    for x in data_list: 
        if x < minimum:
            minimum = x
    new_list.append(minimum)
    data_list.remove(minimum)
    print (new_list)
def Huhu(data_list):
    ev_li = list()
    od_li = list()
    for i in data_list: 
        if (i % 2 == 0): 
            ev_li.append(i) 
        else: 
            od_li.append(i)
    print(new_list,od_li, "startOF->evens",ev_li) 

您有三个错误:

第一:缩进问题:

def Huhu(data_list):
  ev_li = ''
    od_li = '' <- Here

第二:此处缺少逗号:

print(new_list,od_li [here] "startOF->evens",ev_li) 

第三:

ev_li和od_li必须是列表

但可以肯定的是,@CoryKramer更干净:P

孟和怡
2023-03-14

您可以将排序与自定义的参数一起使用以进行排序。

>>> sorted(listOfNumbers, key=lambda i: (i%2==0, i))
[1, 3, 5, 7, 9, 17, 25, 2, 4, 6, 8, 16, 22, 28]

在这种情况下,您可以先按奇数/偶数排序,然后按值本身排序。

 类似资料:
  • 问题内容: 我有这个清单 但是现在我希望列表按以下方式排序: 如您所见,无论每个数字具有什么符号,我都希望从高到低排序,但是保持符号清晰吗? 问题答案: 使用的关键功能或:

  • 问题内容: 我创建了一个sqlite数据库,该数据库具有一个存储温度值的表。第一次将温度值以升序写入数据库。然后,我将数据库中的温度值读取到一个列表中,然后将该列表添加到组合框中以选择温度- 效果很好。 结果列表为: 然后,我向数据库添加一个新的温度值,例如“ 33”。 它被附加到表的末尾。如果我现在阅读温度,列表将变为: 如果我做或,最终的结果是 有什么简单的方法可以按升序对列表进行排序,以便得

  • 我下面的代码不起作用,我也不知道为什么。 它编译得很好,但结果似乎没有排序。

  • 问题内容: 我有一个清单清单: 如果要按一个元素(例如,高/短元素)排序,可以通过进行。 如果我想作为排序依据两个高大和颜色,我可以为每个元素做排序两次,一次,但有一个更快的方法? 问题答案: 键可以是返回元组的函数: 或者,你可以使用来实现相同的效果(速度更快,并且避免了Python函数调用): 并请注意,你可以在此处使用而不是使用,然后重新分配: