凯什么欧文 发表于 2021-12-12 21:58:03

大家看看我这个代码

为什么我这个代码在list2里没能把偶数删掉
代码如下:
n=eval(input())
m=sorted(n,reverse=False)
k=sorted(n,reverse=False)
for i in m:
    if i%2!=0:
      n=m.remove(i)
      List1=sorted(m,key=lambda x:x%2!=0)
for v in k:
    if v%2==0:
      n=k.remove(v)
      List2=sorted(k,key=lambda x:x%2==0)
print(List1)
print(List2)
print(List1+List2)

傻眼貓咪 发表于 2021-12-12 22:09:00

代码:arr =
res = sorted(, key = lambda x: arr.index(x)) + sorted(, key = lambda x: arr.index(x))
print(res)输出结果:*这题对于初学者相对较难

凯什么欧文 发表于 2021-12-12 22:20:38

傻眼貓咪 发表于 2021-12-12 22:09
代码:输出结果:*这题对于初学者相对较难

为什么这个代码虽然少但是难懂

jackz007 发表于 2021-12-13 01:12:05

d =
print( + )

傻眼貓咪 发表于 2021-12-13 08:09:30

本帖最后由 傻眼貓咪 于 2021-12-13 08:14 编辑

凯什么欧文 发表于 2021-12-12 22:20
为什么这个代码虽然少但是难懂

{:10_254:}
一般 sorted() 函数排序默认是以数组里的值作为排序的,只是你的题目要求的不是值排序,而是位置排序和奇偶数排序 2 种,我的代码中的 key 就是 sorted() 里面的功能(参数)用于改变排序的方法,我的代码的 key 是以位置作为排序方法(index)所以位置不变,只是奇数变成在左侧,偶数在右则而已。

最重要题目要求一定要用 sorted() 函数,不然其实这题相对较简单

xtxzs 发表于 2021-12-13 12:14:18

user_data = sorted(eval(input()))
new_data = user_data.copy()
odd_data = []
for i in user_data:
    if i%2:
      odd_data.append(i)
      new_data.remove(i)
print(odd_data+new_data)

傻眼貓咪 发表于 2021-12-13 13:24:37

兄弟,如果我的代码对你有帮助,请设最佳答案{:10_249:}

gonff 发表于 2021-12-14 14:27:44

本帖最后由 gonff 于 2021-12-14 14:51 编辑

首先是问题,
        直接看奇数部分:首先k的迭代是按照k, k, k...这样的顺序。
                               当k被移除元素后,后面的元素会顶替前面的序号: 原本的k=, 那么k=2, k=6, k=9...当你执行第一次循环移除i=k,也就是2之后,k=,此时k=6, k=9, k=10
                               于是第二次循环,i=k,也就是9。6被跳过了。
                               依次类推,你会发现每遇到一个偶数,迭代的i会跳过一个元素,于是6和18,36因为有2和10,34在前,都被留下来了。其实91也没有被执行,不过本来就是奇数不影响结果。
                               结果来说,如果有2连续的偶数,就会漏掉一个。
        偶数部分没问题是因为没有两个连一起的奇数,所以只是结果符合,实际执行时还是有几个元素没有被迭代执行。
解决办法,还是用list的append方法,遇到偶数就List1.append(i),遇到奇数就List2.append(i)。这样只需要一个if else就搞定了,也不需要k,只用m即可(也可以把迭代直接写成for i in sorted(n, reverse=False))还精简了语句。大概这个感觉

>>> n =
>>> List1 = []
>>> List2 = []
>>> for i in sorted(n, reverse=False):
        if i%2:
                List2.append(i)
        else:
                List1.append(i)

               
>>> print(List1)

>>> print(List2)

>>>

前面是延续你的思路进行改进,不过我看你的题目里,似乎不需要从小到大排序,只要把奇偶分开就行?而且要求用sorted(),那只需要一两句话句话搞定:n = eval(input())
sorted(n, key=lambda x:x%2==0)
结果如下
>>> n = eval(input())

>>> sorted(n, key=lambda x:x%2==0)

>>>

凯什么欧文 发表于 2022-1-1 21:06:42

傻眼貓咪 发表于 2021-12-13 13:24
兄弟,如果我的代码对你有帮助,请设最佳答案

不好意思..
页: [1]
查看完整版本: 大家看看我这个代码