Python入门
文章目录
3.2列表
列表由一系列按特定顺序排列的元素组成的可变序列。元素放在 [ ]中,用逗号(,)分隔。
可以将整数、实数、字符串、列表、元组等任何类型的内容放入列表。
注:在同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。
3.2.1列表的创建和删除
-
使用赋值运算符直接创建列表
listname = [element1,element2,element3,...,elementn]
虽然可以将不同类型的数据放入同一个列表,但为了程序的可读性,通常不这么做。
-
创建空列表
emptylist = []
-
创建数值列表
list() 函数,不仅能通过range对象创建列表,还可以通过其他对象创建列表。
list(data) list(range(10,20,2)) #[10, 12, 14, 16, 18]
-
删除列表
del 语句:删除列表
del listname
删除列表前,必须保证该列表已存在。
实际开发中,del语句并不常用,因为Python自带的“垃圾回收”机制会自动销毁不用的列表。
3.2.2 访问列表元素
3.2.3 遍历列表
-
使用for循环遍历
for item in listname: #输出item
item 用于保存获取到的元素值
-
使用for循环和**enumerate()**函数实现
for index,item in enumerate(listname): #输出index和item
index用于保存获取到的元素索引
list1= [1,2,3] for index ,item in enumerate(list1): print(index+1,item) #1 1\n2 2\n 3 3\n
3.2.4 添加、修改和删除列表元素
-
添加元素
可用’ + '将两个序列连接起来为列表添加元素,但这种方法的执行速度比直接使用append()函数方法慢。
-
append() 在列表末尾追加元素
listname.append(obj)
-
insert() 在指定位置插入元素
insert()执行效率没有appen()高
-
extend() 将一个列表中的全部元素添加到另一个列表
listname.extend(seq)
-
-
修改元素
直接通过索引获取元素,并重新赋值
-
删除元素
-
通过索引删除
与删除列表类似,直接把del语句后的列表名换成指定列表元素即可
del list1[2]
-
通过元素值删除
remove():删除一个不确定其位置的元素(根据元素值删除)
list1.remove(value);
若该元素值在列表中不存在,会出现异常,改进如下
if list1.count(value)>0: #判断要删除的元素是否存在 list1.remove(value) #若存在,则删除指定的元素
count()函数用于判断指定元素出现的次数。
-
3.2.5 对列表进行统计计算
-
获取指定元素出现的次数count()
listname.count(obj)
-
获取指定元素出现的次数index()
listname.index(obj)
-
统计数值列表的元素和sum()
sum(list[start])
- start:表示统计结果从哪个数开始(即将统计结果加上start所指定的数),是可选参数,若没有指定,默认值为0
a = [1,2,3,4,5] print(sum(a)) #15
3.2.6 对列表进行排序
-
使用列表对象的sort()方法实现
listname.sort(key=Node,reverse=False)
key:表示从每个列表元素中提取一个比较键(例如,设置“key=str.lower” 表示排序时不区分字母大小写)。
reverse:可选参数,如果将其值指定为True,则表示降序排列,若为False,则表示升序排列。默认为升序。
- 使用sort()方法对数值列表进行排序比较简单,但是对字符串列表进行排序是,采用的规则是先对大写字母进行排序,再对小写字母进行排序。如果想要排序时不区分大小写,则需指定其key参数(key=str.lower)。
- 使用sort()方法对列表进行排序时,无法准确地处理中文内容,排序的结果与我们常用的按拼音或者笔画顺序排序的结果都不一致。要实现对中文内容的列表排序,还需要重新编写相应的方法对中文内容进行处理,不能直接使用sort()方法。
-
使用内置的sorted()函数实现
使用sorted()对列表进行排序后,原列表的元素顺序不变。
sorted(iterable,key=Node,reverse= False)
grade =[...] grade_as1 =sorted(grade) #升序排列 grade_as2 =sorted(grade,reverse=False) #降序排列
sort()与sorted()作用基本相同,不同的是sort()会改变原列表的元素顺序,sorted()函数会建立一个原列表的副本,该副本为排序后的列表,不会改变原列表的元素顺序。
4.2.7 列表推导式
使用列表推导式可以快速生成一个列表,或者根据某个列表生成满足需求的列表。
-
生成指定范围的数值列表
lsit = [Expression for var in range]
Expression:表达式,用于计算新列表的元素
var:循环变量
range:采用range()函数生成的range对象
import random # 导入random 标准库 randomnumber= [random.randint(10,100) for i in range(10)] print("生成10~100的随机数:",randomnumber)
-
根据列表生成满足指定需求的列表
newlist = [Expression for var in list]
price = [1200,5330, 2988,6200,1998,8888] sale = [int(x*0.5) for x in price] print("原价格",price) print("打五折的价格",sale) #原价格 [1200, 5330, 2988, 6200, 1998, 8888] #打五折的价格 [600, 2665, 1494, 3100, 999, 4444]
-
从列表中选择符合条件的元素组成新的列表
newlist = [Expression for var in list if condition]
price = [1200,5330, 2988,6200,1998,8888] sale = [x for x in price if x>5000] print("原价格",price) print("价格高于5000的",sale) #原价格 [1200, 5330, 2988, 6200, 1998, 8888] #价格高于5000的 [5330, 6200, 8888]