列表:
有一些列按特定顺序排列的元素组成的,它是python中的可变序列。在形式上,列表中的所有元素都放置在一对“[]”中。两个相邻元素之间使用“,”号分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放在列表中,并且同一列表中,元素的类型可以不同。
一.列表的创建和删除
1.创建:
(1)使用赋值运算符直接创建列表。
语法格式:
listname = [element 1,element 2,element 3,...element n]
listname:列表的名称
element:列表中的元素
number = [34,56,21,78,43,23,35,19,37]
flower = ["牡丹","月季","茉莉","满天星","百合"]
print(number)
print(flower)
# 在使用列表时,虽然可以将不同类型数据的元素放在同一个列表中,但通常情况下我们不会这么做,而是在一个列表中只放入一种类型的数据,这样可以提高程序的而可读性。
(2)创建空列表:
emptylist = []
(3)创建数值列表:
在python中,用list()函数直接将range()函数循环出来的结果转换为列表。
语法格式:
list(data)
data:可以转化为列表的数据,其类型可以是range对象、字符串、元组或者其他可迭代类型的数据。
# 创建10到30(不包含30)之间所有偶数的列表
List = list(range(10,30,2))
print(List)
2.删除列表
语法格式:
del listname
listname:要删除的列表的名称。
number = [34,56,21,78,43,23,35,19,37]
del number
del在实际开发中并不常用。因为python自带的垃圾回收机制会自动销毁不用的列表,所以即使我们不销毁,也会自动回收。
二.访问列表元素
在python中想要将列表中的内容中打印出,直接使用print()函数即可。
number = [34,56,21,78,43,23,35,19,37]
print(number)
print(number[2])
三.遍历列表
1.直接使用for实现:
语法格式:
for item in listname:
# 输出item
item:用于保存获取到的元素值,要输出内容时,直接输出该变量即可。
listname:列表名称。
number = [34,56,21,78,43,23,35,19,37]
for item in number:
print(item)
for item in number:
print(item,end=" ")
2.使用for循环和enumerate()可以实现同时输出索引值和元素内容的功能。
语法格式:
for index,item in enumerate(listname):
# 输出index和item
index:用于保存元素的索引。
item:用于保存获取到的元素值,要输出内容时,直接输出该变量即可。
listname:列表名称。
print("输出花朵排名:")
flower = ["牡丹","月季","茉莉","满天星","百合"]
for index,item in enumerate(flower):
print(index+1,item) # 排名是索引+1
四.添加、修改和删除列表元素
添加、修改和删除列表元素也称为更新列表。
1.添加元素:
(1)append( )方法:
列表对像的append()用于在列表的末尾追加元素。‘
语法格式:
listname.append(obj)
listname:列表名称。
obj:要添加到列表末尾的对象。
flower = ["牡丹","月季","茉莉","满天星","百合"]
flower.append("水仙")
print(flower)
print(len(flower))
(2)insert( )方法
该方法用于向列表指定位置插入元素,但执行效率不如append(),所以不推荐使用。
flower = ["牡丹","月季","茉莉","满天星","百合"]
flower.insert(2,"水仙")
print(flower)
print(len(flower))
(3)extend( )方法
用于将一个列表的全部元素添加到另一个列表。
语法格式:
listname.extend(seq)
listname:原列表。
seq:要添加的列表。
flower = ["牡丹","月季","茉莉","满天星","百合"]
flower1 = ["石竹花","槐花","芍药"]
flower.extend(flower1)
print(flower)
print(len(flower))
2.修改元素
修改列表中的元素只需要通过索引获取该元素,然后为其重新赋值即可。
flower = ["牡丹","月季","茉莉","满天星","百合"]
flower[2] = "水仙"
print(flower)
3.删除元素
(1)根据索引删除
与删除列表相似,使用del元素。
flower = ["牡丹","月季","茉莉","满天星","百合"]
del flower[2]
print(flower)
(2)根据元素值删除
若要删除一个不确定其位置的元素,可以使用列表对象的remove( )方法实现。
flower = ["牡丹","月季","茉莉","满天星","百合"]
flower.remove("月季")
print(flower)
在使用remove( )方法删除元素之前,做好先判断该元素是否存在。
flower = ["牡丹","月季","茉莉","满天星","百合"]
if flower.count("月季") > 0:
flower.remove("月季")
print(flower)
# 列表对象的count( )方法用于判断元素出现的次数,返回值为零时表示不存在该元素。
五.对列表进行统计
python的列表提供了内置的一些函数来实现统计、计算方面的功能。下面就介绍一下:
1.获取指定元素出现的个数
语法格式:
listname.count(obj)
listname:列表名称。
obj:表示要判断是否存在的对象。注意这里只能进行精确判断,不能是元素值的一部分。
返回值:元素在列表中出现的个数。
flower = ["牡丹","月季","茉莉","满天星","百合","月季"]
print(flower.count("月季"))
2.获取指定元素首次出现的下标
语法格式:
listname.index(obj)
listname:列表的名称。
obj:要查找的对象,这里只能进行精确匹配,若不存在则抛出异常。
flower = ["牡丹","月季","茉莉","满天星","百合","月季"]
position = flower.index("月季")
print(position)
3.统计数值列表的元素和
在python中提供了sum( )方法用于统计列表的元素和。
基本语法:
sum(iterable[,start])
iterable:要统计的列表。
start:表示统计结果是从那个数开始的(即在统计结果上加上start代表的数值),是可选参数,默认为零。
number = [12,34,23,25,45,56,37]
total1 = sum(number)
total2 = sum(number,100)
print(total1,total2)
六.对列表进行排序
1.使用列表方法的sort( )实现
列表对象提供了sort( )方法对原列表函数进行过排序。
语法格式:
listname.sort(key=Nonr,reverse=False)
listname:要排序的列表名称。
key:指定一个从每个列表元素中提取一个用于比较的键。
reserve:可选参数,如果将其值定为True,则表示降序排列,定为False则为升序排列。默认升序排列。
number = [12,34,23,25,45,56,37]
print("原列表:")
number.sort()
print(number)# 升序排列
number = [12,34,23,25,45,56,37]
number.sort(reverse = True)
print(number)# 降序排列
# 采用sort( )对字符串列表进行排序时,先对大写字母进行排序,再对小写字母进行排序
char = ["Tom","Lili","alice","Angle","joe"]
char.sort()
print("区分大小写排序:",char)
char = ["Tom","Lili","alice","Angle","joe"]
char.sort(key = str.lower)
print("不区分大小写排序:",char)
sort排序对中文支持不友好,若要实现对中文列表的排序,需要重新编写相应的方法进行处理,不可以直接使用sort( )方法。
2.使用内置的sorted( )函数实现
使用python提供的sorted( )函数进行排序后,原列表的元素顺序不变。
语法格式:
sorted(iterable,key=Mone,reverse=False)
iterable:要进行排序的列表的名称。
key:指定一个从每个列表元素中提取一个用于比较的键。
reserve:可选参数,如果将其值定为True,则表示降序排列,定为False则为升序排列。默认升序排列。
number = [12,34,23,25,45,56,37]
print("原列表:")
number_be = sorted(number)
print(number_be)# 升序排列
number = [12,34,23,25,45,56,37]
number_be = sorted(number,reverse = True)
print(number_be)# 降序排列
# 采用sorted( )对字符串列表进行排序时,先对大写字母进行排序,再对小写字母进行排序
char = ["Tom","Lili","alice","Angle","joe"]
char_be = sorted(char)
print("区分大小写排序:",char_be)
char = ["Tom","Lili","alice","Angle","joe"]
char_be = sorted(char,key = str.lower)
print("不区分大小写排序:",char_be)
列表对象的sort( )方法和内置sorted( )函数的作用基本相同,所不同的就是sort( )方法改变原有列表元素的顺序,sorted( )函数 会建立一个原列表的副本,该副本为排序后的列表。
七.列表推导式
使用列表推导式可以快速生成一个列表,或者根据列表生成满足指定需求的列表。
1.生成指定范围的数值列表:
语法格式:
list = [Expression for var in range]
list:生成的列表的名称。
Expression:表达式,用于计算新的列表的元素。
var:循环变量。
range:采用range( )函数生成的range对象。
# 生成10个在10到50之间的随机数列表。
import random # 导入生成随机数的模块
random_number = [random.randint(10,50) for i in range(10)]
print("随机数数列:",random_number)
2.根据列表生成指定需求的列表
语法格式:
newlist = [Expression for var in list]
newlist:新生成的列表的名称。
Expression:表达式,用于计算新的列表元素。
var:变量,值为后面列表的每个元素值。
list:原列表。
# 定义一个商品价格列表,生成商品全部七折的折后的价格列表。
price = [10,100,20,30,50,60,70]
new_price = [int(x*0.7) for x in price]
print("原价格:",price)
print("折后价格:",new_price)
3.从列表中选择符合条件的元素组成新的列表
语法格式:
newlist = [Expression dor var in list if condition]
newlist = [Expression for var in list]
newlist:新生成的列表的名称。
Expression:表达式,用于计算新的列表元素。
var:变量,值为后面列表的每个元素值。
list:原列表。
condition:条件表达式,指定筛选条件。
# 定义一个商品价格列表,生成价格大于50的列表。
price = [10,104,20,37,55,63,72,66]
new_price = [x for x in price if x>50]
print("原价格:",price)
print("大于50:",new_price)