目录
3.2 for循环+enumerate()函数 获得所有元素和索引
列表介绍:
列表:顾名思义,序列的表。其组成元素可以是整数、实数、字符串、其他序列、对象等等中的一种或多种。
列表是一个可变序列:[element1, element2, ......, elementn]
列表操作:
1、列表的创建和删除
1.1赋值运算符直接创建列表
语法格式:listname = [elem1, elem2, ......elemn]
>>> multiList = ['python', 28, "春眠不觉晓", ["cane", "自动化运维", "web开发"]]
>>> print(multiList)
['python', 28, '春眠不觉晓', ['cane', '自动化运维', 'web开发']]
1.2创建空列表
>>> emptyList = []
>>> print(emptyList)
[]
1.3创建数值列表
range(start, end, step)函数多用于for循环之中,结果是以step步长生成[start, end)范围内的整数(不包括end)。
list()函数可以将序列转换为列表,python学习笔记——列表和元组(1)-CSDN博客中最后一节有提到过。
使用其创建数值列表如下:
>>> list(range(2,21,2))
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
>>> string = "人生苦短,我用python"
>>> list(string)
['人', '生', '苦', '短', ',', '我', '用', 'p', 'y', 't', 'h', 'o', 'n']
1.4删除列表
实际使用过程中,Pyhton会自动销毁不用的列表,无需手动删除
>>> print(multiList)
['python', 28, '春眠不觉晓', ['cane', '自动化运维', 'web开发']]
>>> del multiList
>>> print(multiList)
Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
print(multiList)
NameError: name 'multiList' is not defined
>>> del emptyList
Traceback (most recent call last):
File "<pyshell#101>", line 1, in <module>
del emptyList
NameError: name 'emptyList' is not defined
2、访问列表元素
索引、切片
3、遍历列表Traversal
3.1 for循环获得所有元素
语法格式:for item in listname
3.2 for循环+enumerate()函数 获得所有元素和索引
语法格式:for index, item in enumerate(listname)
#--------------------------Traversal.py-------------------------
print("这里是2024年江苏省GDP排名靠前的一个城市:")
city = ["苏州", "南京", "无锡", "常州", "徐州"]
print("遍历输出每一个城市:")
for item in city:
print(item)
print("遍历输出每一个城市和索引:")
for index, item in enumerate(city):
print(index+1, item)
#--------------------------运行输出结果--------------------------
这里是2024年江苏省GDP排名靠前的一个城市:
遍历输出每一个城市:
苏州
南京
无锡
常州
徐州
遍历输出每一个城市和索引:
1 苏州
2 南京
3 无锡
4 常州
5 徐州
4、增删改列表元素
4.1添加元素
4.1.1 末尾添加新元素
序列相加 效率较低,不推荐使用。
listname.append(newElement)方法,注意叫方法,不是函数,是列表对象的封装的solution。
>>> phone = ["摩托罗拉", "诺基亚", "三星", "OPPO"]
>>> phone.append("华为")
>>> print(len(phone), phone)
5 ['摩托罗拉', '诺基亚', '三星', 'OPPO', '华为']
>>>
>>> phone.append(1)
>>> print(len(phone), phone)
6 ['摩托罗拉', '诺基亚', '三星', 'OPPO', '华为', 1]
4.1.2 中间插入新元素
listname.insert(index, newElement)方法:在指定索引前面添加新元素,效率低于append(),不推荐使用。
>>> phone = ["摩托罗拉", "诺基亚", "三星", "OPPO"]
>>> phone.insert(0,"华为")
>>> print(len(phone), phone)
5 ['华为', '摩托罗拉', '诺基亚', '三星', 'OPPO']
4.1.3 末尾添加新列表
listname.extend(newList)
>>> phone1 = ["摩托罗拉", "诺基亚", "三星", "苹果"]
>>> phone2 = ["华为", "小米", "vivo", "oppo"]
>>> phone1.extend(phone2)
>>> print(phone1)
['摩托罗拉', '诺基亚', '三星', '苹果', '华为', '小米', 'vivo', 'oppo']
4.2 修改元素
直接通过索引下标修改对应元素即可。
4.3 删除元素
4.3.1 根据索引删除元素
>>> phone = ['摩托罗拉', '诺基亚', '三星', '苹果', '华为', '小米', 'vivo', 'oppo']
>>> del phone[3]
>>> print(phone)
['摩托罗拉', '诺基亚', '三星', '华为', '小米', 'vivo', 'oppo']
4.3.2 根据元素值进行删除
listname.remove(element)
>>> phone = ['摩托罗拉', '诺基亚', '三星', '苹果', '华为', '小米', 'vivo', 'oppo']
>>> phone.remove("苹果")
>>> print(phone)
['摩托罗拉', '诺基亚', '三星', '华为', '小米', 'vivo', 'oppo']
5、列表统计计算
5.1 count()方法
listname.count(obj) 获取列表内指定元素出现的次数(obj全匹配)
>>> song = ["一首歌的时间", "黑色毛衣", "后来的我们", "轨迹", "一路向北", "黑色毛衣", "荷塘月色"]
>>> print(song.count("黑色毛衣"))
2
5.2 index()方法
listname.index(obj) 获取列表内指定元素首次出现的下标
>>> song = ["一首歌的时间", "黑色毛衣", "后来的我们", "轨迹", "一路向北", "黑色毛衣", "荷塘月色"]
>>> print(song.index('黑色毛衣'))
1
如果obj不在列表,则抛出异常
#-----------------------------------test.py-------------------------------
song = ["一首歌的时间", "黑色毛衣", "后来的我们", "轨迹", "一路向北", "黑色毛衣", "荷塘月色"]
if "黑色" in song:
print(song.index("黑色"))
if "一路向北" in song:
print(song.index("一路向北"))
#----------------------------------输出结果-------------------------------
4
5.3 sum()函数
sum(listname, start) 用于计算数字列表的和,最终加上start参数
#-----------------------------------test.py-------------------------------
number = [90, 95, 98, 92, 95, 93]
sumnum = sum(number)
sumnum2 = sum(number, 1000)
print(sumnum)
print(sunnum2)
#----------------------------------输出结果-------------------------------
563
1563
6、列表排序
6.1 列表对象的sort()方法
listname.sort(key=none, reverse=False) 对列表元素设置key后进行升序(reverse=False)或者降序(reverse=True)排列,原列表中元素顺序将发生改变
#-----------------------------------test.py-------------------------------
number = [90, 95, 98, 92, 95, 93]
number.sort()
print(number)
number = [90, 95, 98, 92, 95, 93]
number.sort(reverse=False)
print(number)
number = [90, 95, 98, 92, 95, 93]
number.sort(reverse=True)
print(number)
number = [90, 95, 98, 92, 95, 93]
number.sort()
print(number)
number = [90, 95, 98, 92, 95, 93]
number.sort(reverse=False)
print(number)
number = [90, 95, 98, 92, 95, 93]
number.sort(reverse=True)
print(number)
animal = ["Dog", "cat", "Elephant", "seagull", "seal", "Monkey"]
animal.sort() #大小写分开排序
print(animal)
animal = ["Dog", "cat", "Elephant", "seagull", "seal", "Monkey"]
animal.sort(reverse=True) #大小写分开排序
print(animal)
animal = ["Dog", "cat", "Elephant", "seagull", "seal", "Monkey"]
animal.sort(key=str.lower, reverse=False)
print(animal)
#----------------------------------输出结果-------------------------------
[90, 92, 93, 95, 95, 98]
[90, 92, 93, 95, 95, 98]
[98, 95, 95, 93, 92, 90]
['Dog', 'Elephant', 'Monkey', 'cat', 'seagull', 'seal']
['seal', 'seagull', 'cat', 'Monkey', 'Elephant', 'Dog']
['cat', 'Dog', 'Elephant', 'Monkey', 'seagull', 'seal']
6.2 内置的sorted()函数
sorted(list, key, reverse=False) 原列表中元素顺序不会发生改变
#-----------------------------------test.py-------------------------------
animal = ["Dog", "cat", "Elephant", "seagull", "seal", "Monkey"]
animalUp = sorted(animal, key=str.lower, reverse=False)
print("animal:", animal)
print("animalUp:", animalUp)
#-----------------------------------输出结果-------------------------------
animal: ['Dog', 'cat', 'Elephant', 'seagull', 'seal', 'Monkey']
animalUp: ['cat', 'Dog', 'Elephant', 'Monkey', 'seagull', 'seal']
7、列表推导式
定义:可以快速生成一个列表,或者根据某个列表生成一个满足某些要求的列表
7.1 range()函数快速生成数值列表
list = [expression for var in range]
expression:表达式 var:range对象内的元素 range:range对象
#-----------------------------------test.py-------------------------------
import random
list = []
for i in range(10):
list.append(random.randint(10, 100))
print("逐一生成元素列表:", list)
list = [random.randint(100, 200) for i in range(10)]
print("快速生成列表:", list)
#-----------------------------------输出结果-------------------------------
逐一生成元素列表: [38, 78, 55, 89, 63, 37, 82, 88, 40, 11]
快速生成列表: [182, 145, 104, 180, 187, 101, 181, 165, 102, 195]
7.2 根据已有列表生成新列表
1、newlist = [expression for var in oldlist]
expression:表达式 var:oldlist内的元素
#-----------------------------------test.py-------------------------------
list = [38, 78, 55, 89, 63, 37, 82, 88, 40, 11]
newlist = [i*i for i in list]
print("新列表:", newlist)
#-----------------------------------输出结果-------------------------------
新列表: [1444, 6084, 3025, 7921, 3969, 1369, 6724, 7744, 1600, 121]
2、newlist = [expression for var in oldlist if condition]
#-----------------------------------test.py-------------------------------
list = [38, 78, 55, 89, 63, 37, 82, 88, 40, 11]
newlist = [i*i for i in list if i%2 == 0]
print("新列表:", newlist)
#-----------------------------------输出结果-------------------------------
新列表: [1444, 6084, 6724, 7744, 1600]