【问题标题】:Sort list in ascending order with odd and even in python在python中以奇数和偶数升序对列表进行排序
【发布时间】:2019-11-16 03:59:09
【问题描述】:

我有一个列表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)

【问题讨论】:

  • 如果您告诉我们您遇到的错误,会更容易为您提供帮助。

标签: python


【解决方案1】:

您可以使用sorted 和自定义key 参数进行排序。

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

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

【讨论】:

  • 我需要没有“排序”功能
  • 如果你必须编写自己的排序函数有questions that cover that already,你所要做的就是指定具体的排序依据。 Wikipedia has an entire page 你可以实现的各种排序算法。
  • 我知道这种方法,但我还需要列出可以按升序排列偶数和奇数的位置
  • 算法是通用的。它们可以应用于任何一组值。只需使用排序算法并修改它以优先选择赔率。
【解决方案2】:

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

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 必须是list

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2015-10-24
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    相关资源
    最近更新 更多