四、列表
本章内容运行环境:
Jupyter Notebook
本单元视频链接:https://v.youku.com/v_show/id_XNDYyNDA0NTI4MA==.html
4.1 列表定义
列表是指 Python 中包含一组有序元素的对象
- 列表以方括号
[
开头,以]
结尾 - 列表中的每个元素用
,
隔开
num = [1, 3, 2, 4]
列表元素类型
列表中除了可以存放字符串以外,也可以放数值类数据,还可以包含列表,以下几种都可以
num = [1, 3, 2, 4]
name = ["Tony", "Peter", "Kevin", "David"]
aList = [123, 'abc', 4.56, ['inner', 'list'], 7+9j]
空列表
列表里可以什么元素都没有
empty_list = [] # empty_list 为空列表
range生成列表
range()
需要输入一个数值,比如 n,然后返回一组数字
my_range = range(2,20,2)
print(list(my_range))
# 输出:[2, 4, 6, 8, 10, 12, 14, 16, 18]
4.2 访问列表
选择列表元素
- 从左至右数:起始位置为
0
,用[]
包裹目标元素的索引位置 - 从右至左数:起始位置为
-1
,需要在索引位置的数字前加上负号
letter = ["a", "b", "c", "d", "e", "f", "g", "h"]
print(letter[0]) # 输出:"a"
print(letter[-1]) # 输出:"h"
print(letter[-1].title()) # 输出:"H",把首字母大写
截取列表
letter = ["a", "b", "c", "d", "e", "f", "g", "h"]
print(letter[2:6])
# 输出: ['c', 'd', 'e', 'f']
- 如果想从列表中第一个元素开始截取,
:
前的数字可以省略list[:5]
- 如果想截取到列表的最后一个元素,
:
后的数字可以省略list[1:]
- 也可以用负数索引位置从右至左截取列表
list[-4:-1]
number = [1,2,3,4,5,6,7,8,9,10]
print(number[:3])
# 输出:[1, 2, 3]
print(number[3:])
# 输出:[4, 5, 6, 7, 8, 9, 10]
print(number[-3:])
# 输出:[8, 9, 10]
查找元素位置
.index()
,查找元素出现的位置(第一次出现的位置)
name = ['Yangyang','Lindy','Alice','Leimei','Jack','Yangyang']
name.index('Yangyang')
# 输出:0
4.3 组队组合
列表连接
Python 中,可以用 +
来连接多个列表
列表只能和列表相连接,如果将列表和字符串或数值连接,计算机会报错
zoo = ["大象", "熊猫", "猩猩", "海獭"]
new_animals = ["长颈鹿", "虎", "羊驼"]
zoo = zoo + new_animals
print(zoo)
# 输出:['大象', '熊猫', '猩猩', '海獭', '长颈鹿', '虎', '羊驼']
扩展列表
.extend
:在列表末尾一次性追加另一个序列中的多个值
zoo = ["大象", "熊猫", "猩猩", "海獭"]
new_animals = ["长颈鹿", "虎", "羊驼"]
zoo.extend(new_animals)
print(zoo)
# 输出:['大象', '熊猫', '猩猩', '海獭', '长颈鹿', '虎', '羊驼']
列表组队
zip()
将两个列表中的元素一一组成对,形成一个新的对象
name = ["吴承恩", "罗贯中", "施耐庵", "曹雪芹、高鹗"]
book = ["西游记", "三国演义", "水浒传", "红楼梦"]
name_and_book = zip(name, book)
print(name_and_book)
# 输出: 该对象在内存中的位置
print(list(name_and_book))
# 输出:[('吴承恩', '西游记'), ('罗贯中', '三国演义'), ('施耐庵', '水浒传'), ('曹雪芹、高鹗', '红楼梦')]
4.4 修改、添加、删除元素
添加元素
.append()
为列表添加元素
当列表中有其他元素时,append() 将新元素添加至所有元素之后
my_list = []
my_list.append(1)
my_list.append(2.0)
my_list.append(3)
my_list.append('jjj')
my_list.append(1)
print(my_list)
# 输出:[1, 2.0, 3, 'jjj', 1]
插入元素
.insert(位置,插入元素)
为列表插入元素
name = ['lindy','Alice','Leimei','Jack']
name.insert(0,'Yangyang')
print(name)
# 输出:['Yangyang', 'lindy', 'Alice', 'Leimei', 'Jack']
修改列表值
name = ['lindy','Alice','Leimei','Jack']
name[2] = 'Yangyang'
print(name)
#输出:['lindy', 'Alice', 'Yangyang', 'Jack']
删除列表值
如果你确切的知道要删除元素的索引:用del 语句
name = ['Yangyang','lindy','Alice','Leimei','Jack']
del name[1]
print(name)
#输出:['Yangyang', 'Alice', 'Leimei', 'Jack']
如果你不知道要删除元素的索引:用remove()方法
name = ['Yangyang','lindy','Alice','Leimei','Jack']
name.remove('Alice')
print(name)
# 输出:['Yangyang', 'lindy', 'Leimei', 'Jack']
关于删除元素,还有一种方法,这种方法是,你虽然删除了这个元素,但是这个元素的内容,你还是要用的。这时候,我们用.pop()
方法
name = ['Yangyang','lindy','Alice','Leimei','Jack']
name_pop = name.pop() # 默认弹出最后一个
print(name)
print(name_pop)
# 输出:
# ['Yangyang', 'lindy', 'Alice', 'Leimei']
# Jack
弹出列表中任何位置的元素
name = ['Yangyang','lindy','Alice','Leimei','Jack']
name_pop = name.pop(2)
print(name)
print(name_pop)
# 输出:
# ['Yangyang', 'lindy', 'Leimei', 'Jack']
# Alice
4.5 列表操作
串联若干字符
.join()
串联若干字符,这是一个字符串的方法,但是可以处理列表数据,将列表的数据连接起来
text = ["I","Love","You"]
print(" ".join(text)) # 输出: I Love You
print("、".join(text)) # 输出: I、Love、You
获取列表长度
len()
返回列表、字符串长度
name = ['Yangyang','lindy','Alice','Leimei','Jack']
print(len(name))
# 输出:5
sentence = "临渊羡鱼不如退而结网"
print(len(sentence))
# 输出:10
列表排序
.sort()
:永久排序,按字母顺序或者数字
name = ['Yangyang','Lindy','Alice','Leimei','Jack']
name.sort() # 正着排
print(name)
# 输出:
# ['Alice', 'Jack', 'Leimei', 'Lindy', 'Yangyang']
number = [3,77,44,278,35,1,5567,58]
number.sort()
print(number)
# 输出:
# [1, 3, 35, 44, 58, 77, 278, 5567]
name = ['Yangyang','Lindy','Alice','Leimei','Jack']
name.sort(reverse=True) # 倒着排
print(name)
# 输出:
# ['Yangyang', 'Lindy', 'Leimei', 'Jack', 'Alice']
# 数字和字母在一起
number = ['3','23456645','6789','Yangyang','Lindy','Alice','Leimei','Jack']
number.sort()
print(number)
# 输出:
# ['23456645', '3', '6789', 'Alice', 'Jack', 'Leimei', 'Lindy', 'Yangyang']
sorted()
:临时排序
name = ['Yangyang','Lindy','Alice','Leimei','Jack']
print(sorted(name)) # 正着排
print(name)
# 输出:
# ['Alice', 'Jack', 'Leimei', 'Lindy', 'Yangyang']
# ['Yangyang', 'Lindy', 'Alice', 'Leimei', 'Jack']
计算元素出现次数
count(n)
返回元素 n在列表中出现的次数
zoo = ["熊猫", "长颈鹿", "金丝猴", "熊猫", "长颈鹿", "大象", "熊猫", "海獭", "羊驼", "熊猫", "海獭", "金丝猴", "熊猫", "大象", "长颈鹿", "羊驼"]
print(zoo.count("熊猫"))
# 输出 5,元素"熊猫"在列表 zoo 中出现5次
拷贝和清空列表
# clear
name = ['Yangyang','Lindy','Alice','Leimei','Jack','Yangyang']
name.clear()
print(name)
# 输出:[]
# copy
name = ['Yangyang','Lindy','Alice','Leimei','Jack','Yangyang']
name1 = name.copy()
print(name1)
# 输出:['Yangyang', 'Lindy', 'Alice', 'Leimei', 'Jack', 'Yangyang']
copy和直接赋值的不同:
如果直接赋值,改变赋值的对象number1
,原来的number
也会被修改
number = [2,3,4,5,6,7,8]
number1 = number
number1[1] = 1
print(number)
print(number1)
# 输出:
# [2, 1, 4, 5, 6, 7, 8]
# [2, 1, 4, 5, 6, 7, 8]
如果是copy,则相互不影响
number = [2,3,4,5,6,7,8]
number1 = number.copy()
number1[1] = 1
print(number)
print(number1)
# 输出:
# [2, 3, 4, 5, 6, 7, 8]
# [2, 1, 4, 5, 6, 7, 8]
4.6 列表所有方法
dir(list)
'append', # 添加列表元素
'clear', # 清空列表
'copy', # 拷贝列表
'count', # 返回元素在列表中出现的次数
'extend', # 拓展列表
'index', #查找元素出现的位置
'insert', # 插入列表元素
'pop', # 删除列表元素,这个元素你还要用
'remove', # 删除列表元素,根据内容删
'reverse', # 反转列表元素
'sort' # 永久性排序
zip()
:将两个列表中的元素一一组成对,形成一个新的对象
range(a,b,c)
:a,b,c为数字。a为开始,b为结尾,c为间隔;a省略时默认为0,c省略时默认为1
len()
:返回列表、字符串长度
sorted()
:临时排序
del
:删除列表元素-根据位置
4.7 列表计算
number = list(range(20))
print(number)
# 输出:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
print(min(number))
# 输出:0
print(max(number))
# 输出:19
print(sum(number))
# 输出:190
4.8 实践:操作列表
建立一个空列表,把你最喜欢的五个东西依次添加进去,然后把所有的方法,都给它倒腾一遍,确保自己能熟练运用。
请在作业的最后一行输出:
昵称:第4节课作业