Python 列表排序

题目描述:
每次随机生成1个[-100,100]之间的整数,共生成10个整数加到列表中,对列表元素进行排序,使输出结果为:

  • 正数在前,从大到小排列,
  • 负数在后,从小到大排列。


一、生成随机列表

随机从-100到100之间抽取10个数,生成一个列表。

list=[]
for i in range(10):
    list.append(random.randint(-100,100))

这只是一种方法,生成指定范围正负列表方法详见:
相关资源: Python生成指定范围数字正数和负数列表(list)

二、正负数分离

将列表中的正数和负数分开。

list1=[]
list2=[]
for j in list:
    if j>0:
        list1.append(j)
    else:
        list2.append(j)

三、列表排序

将得到的两个列表分别按照题目要求排序,正数从大到小排列,负数从小到大排列。再把负数列表加到正数列表之后。

list1.sort(key=lambda x: x,reverse=True)
# print(list1)
list2.sort(key=lambda x: x)
# print(list2)
list1.extend(list2)

由此,便可得到一个正数在前,从大到小排列,负数在后,从小到大排列的新列表了。

附录

完整代码:

import random
list=[]
for i in range(10):
    list.append(random.randint(-100,100))
print('list =',list)
list1=[]
list2=[]
for j in list:
    if j>0:
        list1.append(j)
    else:
        list2.append(j)

list1.sort(key=lambda x: x,reverse=True)
# print(list1)
list2.sort(key=lambda x: x)
# print(list2)
list1.extend(list2)
print('new_list =',list1)

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值