python 列表 排序和列表推导式

一:排序

1:使用sort()函数排序

函数:sort()
语法:listname.sort(key=None,reverse=False)
说明:listname是列表名称,key是在每个列表提取一个比较的键(例如:key=str.lower,在排序的时候不区分大小写。)reverse是一个可选参数,reverse=True降序排序,reverse=False为升序排序,默认的属于升序排序
代码示例:

grade = [98,99,97,100,100,96,94,98,95,100]
print '原列表%s' %grade
grade.sort()
print '升序%s' %grade
grade.sort(reverse=True)
print '降序%s'%grade

执行结果如下:在这里插入图片描述在写一个使用key的简单的例子

char = ['cat','Tom','Angela','pet']
char.sort() #默认是去分大小写
print '区分大小写%s'%char
char.sort(key=str.lower)
print '区分大小写%s'%char

执行结果如下
在这里插入图片描述
注意:列表内的元素是中文的话,排序的规律算法都不是很成熟,排序出来的结果可能不是我想要的,建议中文不要是用sort()排序

2:使用内置sorted()排序

函数:sorted()排序是生成一个新的列表,原列表的顺序是不变的。
语法:sorted(listname,key=None,reverse=False)
说明:listname是想要进行排序的列表,key是在每个列表提取一个比较的键(例如:key=str.lower,在排序的时候不区分大小写。)reverse是一个可选参数,reverse=True降序排序,reverse=False为升序排序,默认的属于升序排序
代码示例:

grade = [98,99,97,100,100,96,94,98,95,100]
grade_sa = sorted(grade)
print '升序%s' %grade_sa
grade_des = sorted(grade,reverse=True)
print '降序%s'%grade_des
print '原列表%s' %grade

执行结果如下:
在这里插入图片描述区别:其实这两个函数是都可以实现排序的,但是区别就是sort()还改变原来列表的顺序,而sorted()是生成一个新的列表不会改变原列表的顺序

二:列表推导式

就是快速生成一个列表我这里简单的罗列了三种方法。

1:生成指定方法为的数值列表

语法:list = [Expression for var in range]
说明:Expression 表达式,用于计算的新列表,list列表名称,var循环的变量,range生成随机数的函数。
代码示例:

import random
list_name = [random.randint(10,100) for i in range(10)]
print '1-100之间随机生成的是个随机数的列表为:%s'%list_name
# 1-100之间随机生成的是个随机数的列表为:[92, 89, 86, 73, 33, 74, 47, 97, 14, 35]
# 每次都是不同的。

2:生成指定需求的列表

语法:listname = [Expression for var in list]
说明:Expression 表达式,用于计算的新列表,listname列表名称,var循环的变量,list用于生成新列表的原列表
代码示例:

# 求出原价格的五折价格
price = [1200,5330,2988,6200,1988,8888]
sale = [x*0.5 for x in price]
print '原价格列表:%s'%price
print '五折格列表:%s'%sale
# 原价格列表:[1200, 5330, 2988, 6200, 1988, 8888]
# 五折格列表:[600.0, 2665.0, 1494.0, 3100.0, 994.0, 4444.0]

3:从列表中选出符合条件的生成新的列表

语法:listname = [Expression for var in list if condition]
说明:Expression 表达式,用于计算的新列表,listname列表名称,var循环的变量,list用于生成新列表的原列表,condition条件表达式
代码示例:

# 求出价格高于5000的
price = [1200,5330,2988,6200,1988,8888]
sale = [x for x in price if x > 5000]
print '原价格列表:%s'%price
print '价格高于500的列表:%s'%sale
# 原价格列表:[1200, 5330, 2988, 6200, 1988, 8888]
# 价格高于500的列表:[5330, 6200, 8888]

我是阿旺,明天更新的元祖的创建和删除,以及元祖的增删查改,和元祖推导式,因为明天周日,可能会更新这么多,这个只是我想的,希望我可以更新吧,加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值