鱼C论坛

 找回密码
 立即注册
查看: 2295|回复: 7

[已解决]列表元素 怎么按个数进行排序 如下

[复制链接]
发表于 2023-7-9 22:39:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
5 和4  个数最多 怎么让他们排在前面  感谢
最佳答案
2023-7-9 22:50:25
  1. lst = [1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6]

  2. sorted_lst = sorted(lst, key=lambda x: (lst.count(x), x), reverse=True)

  3. print(sorted_lst)
复制代码
微信截图_20230709223824.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-7-9 22:50:25 | 显示全部楼层    本楼为最佳答案   
  1. lst = [1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6]

  2. sorted_lst = sorted(lst, key=lambda x: (lst.count(x), x), reverse=True)

  3. print(sorted_lst)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 22:52:56 | 显示全部楼层
如果您希望将数字5和4排在列表的前面,并保持原始顺序,可以按照以下步骤进行操作:

1. 创建一个空列表 `result` 用于存储结果。
2. 遍历原始列表,将数字5和4分别添加到 `result` 中。
3. 继续遍历原始列表,将除了5和4之外的其他元素添加到 `result` 中。
4. 返回 `result` 列表。

以下是实现此功能的代码示例:

  1. def prioritize_54(lst):
  2.     result = []

  3.     # 将数字5和4添加到结果列表中
  4.     for num in [5, 4]:
  5.         result.extend([num] * lst.count(num))

  6.     # 将除了5和4之外的其他元素添加到结果列表中
  7.     for num in lst:
  8.         if num not in [5, 4]:
  9.             result.append(num)

  10.     return result

  11. # 测试样例
  12. lst = [1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6]
  13. result = prioritize_54(lst)
  14. print(result)
复制代码

运行以上代码会输出排好序的列表:
[5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 1, 2, 2, 2, 2, 3, 3, 3, 6, 6]

求最佳答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-9 23:06:44 | 显示全部楼层

可以了 就是大神 能解释下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-7-9 23:08:13 | 显示全部楼层
MoistenLe 发表于 2023-7-9 23:06
可以了 就是大神 能解释下吗

1. 首先,给定了一个列表lst,其中包含了一些整数。

2. 接下来,使用sorted函数对列表lst进行排序。sorted函数可以接受一个可迭代对象作为输入,并返回一个新的已排序的列表。

3. 在sorted函数中,使用了两个参数来指定排序规则:

   · key=lambda x: (lst.count(x), x):这是一个匿名函数(lambda函数),用于指定排序的关键字。对于列表中的每个元素x,key函数返回一个元组,元组的第一个元素是x在列表中的出现次数,第二个元素是x的值。这意味着排序首先按照元素的出现次数进行排序,如果出现次数相同,则按照元素的值进行排序。
   
   · reverse=True:这个参数指定排序的顺序是降序(从大到小),即出现次数多的元素和值大的元素会排在前面。

4. 最后,将排序后的结果赋值给变量sorted_lst。

5. 最后一行代码使用print函数打印出排序后的列表sorted_lst。

总结起来,这段代码的功能是对给定的列表进行排序,排序规则是首先按照元素在列表中的出现次数进行降序排序,如果出现次数相同,则按照元素的值进行降序排序。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-9 23:10:26 | 显示全部楼层

  1. x_p = list(input("请随便输入一串数字:"))
  2. list0 =[int(i)for i in x_p]

  3. list1 = sorted(list0, key=lambda x: (list0.count(x), x), reverse=True)

  4. print(list1)


  5. diyi = list1[0]
  6. count1 = 0
  7. for each1 in range(len(list1)):
  8.     if list1[each1] ==diyi:
  9.         count1 +=1
  10.     else:
  11.         break
  12. count2 = 0
  13. dier = list1[count1]
  14. for each2 in range(count1,len(list1)):
  15.     if list1[each2] == dier:
  16.         count2+=1
  17.     else:
  18.         break
  19. if count1>len(list1)/3:
  20.     print("主要元素是:", diyi)
  21.     if count2>len(list1)/3:
  22.         print("还有:", dier)
  23.         
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-9 23:14:02 | 显示全部楼层
sfqxx 发表于 2023-7-9 22:52
如果您希望将数字5和4排在列表的前面,并保持原始顺序,可以按照以下步骤进行操作:

1. 创建一个空列表  ...

如果是一个随机列表 就不行了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-7-9 23:19:25 | 显示全部楼层
isdkz 发表于 2023-7-9 23:08
1. 首先,给定了一个列表lst,其中包含了一些整数。

2. 接下来,使用sorted函数对列表lst进行排序。so ...

666

  1. x_p = list(input("请随便输入一串数字:"))
  2. list0 =[int(i)for i in x_p]

  3. list1 = sorted(list0, key=lambda x: (list0.count(x), x), reverse=True)

  4. print(list1)


  5. diyi = list1[0]
  6. count1 = 0
  7. for each1 in range(len(list1)):
  8.     if list1[each1] ==diyi:
  9.         count1 +=1
  10.     else:
  11.         break
  12. count2 = 0
  13. dier = list1[count1]
  14. for each2 in range(count1,len(list1)):
  15.     if list1[each2] == dier:
  16.         count2+=1
  17.     else:
  18.         break
  19. if count1>len(list1)/3:
  20.     print("主要元素是:", diyi)
  21.     if count2>len(list1)/3:
  22.         print("还有:", dier)
  23.         
复制代码



你看下我这个有毛病没
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-23 18:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表