一:排序
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]
我是阿旺,明天更新的元祖的创建和删除,以及元祖的增删查改,和元祖推导式,因为明天周日,可能会更新这么多,这个只是我想的,希望我可以更新吧,加油