列表简介
用方括号表示([])列表,并用逗号分隔其中的元素
bicycles=['trek','cannondale','redline','specialized']
print(bicyle)
执行结果:['trek','cannondale','redline','specialized']
一、访问列表元素
知道元素的索引后可以直接访问列表中的任意元素
bicycles=['trek','cannondale','redline','specialized']
print(bicyles[0])
执行结果:trek
【注意】
- 索引从0开始计算
- 访问最后一个元素可以用索引-1,倒数第二用-2....如此类推,但是不能超出列表长度
bicycles=['trek','cannondale','redline','specialized']
print(f"{bicyles[1]} {bicyles[-1]}")
执行结果:cannondale specialized
二、修改、添加和删除元素
1)修改列表元素——xxx[元素位置]
motorcycles=['honda','yamaha','suzuki']
motorcycles[0]='ducati'
print(motorcycles)
执行结果:['ducati','yamaha','suzuki']
2)添加元素
1.在列表末尾添加元素——xxx.append(添加元素)
motorcycles=['honda','yamaha','suzuki']
motorcycles.append('ducati')
print(motorcycles)
执行结果:['honda','yamaha','suzuki','ducati']
2.在列表中插入元素——xxx.insert(插入位置,插入元素)
motorcycles=['honda','yamaha','suzuki']
motorcycles.insert(0,'ducati')
print(motorcycles)
执行结果:['ducati','honda','yamaha','suzuki']
3.在列表中删除元素——del xxx和xxx.pop(不填或元素位置)和remove(指定元素)
①del——删除后无法再访问该元素
motorcycles=['honda','yamaha','suzuki']
del motorcycles[0]
print(motorcycles)
执行结果:['yamaha','suzuki']
②pop()——删除这个元素的同时会返回该元素,之后无法在列表中再访问
#1.不指定要删除的元素,删除列表中最后一个元素并返回
motorcycles=['honda','yamaha','suzuki']
poped_motorcycles=motorcycles.pop()
print(f"{poped_motorcycles},{motorcycles}")
执行结果:suzuki,['honda','yamaha']
#2.指定要删除的元素,删除列表指定元素并返回
motorcycles=['honda','yamaha','suzuki']
poped_motorcycles=motorcycles.pop(1)
print(f"{poped_motorcycles},{motorcycles}")
执行结果:yamaha,['honda','suzuki']
③remove()——不知道要删除元素的位置,但知道他的值
motorcycles=['honda','yamaha','suzuki','ducati']
motorcycles.remove('ducati')
print(motorcycles)
执行结果:['honda','yamaha','suzuki']
【注意】remove()只删除第一个指定的值,如果列表中存在多个相同的值,应用循环来确保每个值都被删除
三、对列表进行排列
1)xxx.sort()——对列表进行永久排序,会改变原列表
cars=['bmw','audi','toyota','subaru']
cars.sort()
print(cars)
执行结果:[‘audi','bmw','subaru','toyota']
添加参数reverse=True实现顺序反转
cars=['bmw','audi','toyota','subaru']
cars.sort(reverse=True)
print(cars)
执行结果:['toyota','subaru','bmw',‘audi']
2)sorted(xxx)——对列表进行临时排序,返回一个临时序列,不会改变原列表
cars=['bmw','audi','toyota','subaru']
print(sorted(cars))
print(cars)
执行结果:
[‘audi','bmw','subaru','toyota']
['bmw','audi','toyota','subaru']
添加参数reverse=True实现顺序反转
cars=['bmw','audi','toyota','subaru']
print(sorted(cars,reverse=True))
print(cars)
执行结果:
['toyota','subaru','bmw',‘audi']
['bmw','audi','toyota','subaru']
3)xxx.reverse()——反转列表,会改变原列表
cars=['bmw','audi','toyota','subaru']
cars.reverse()
print(cars)
执行结果:['subaru','toyota','audi','bmw']
4)len(xxx)——得到列表长度
cars=['bmw','audi','toyota','subaru']
print(len(cars))
执行结果:4
四、遍历列表
使用for循环遍历列表
days=['Monday','Tuesday','Wensday','Thursday','Friday']
for day in days:
print(day)
print("All days!")
执行结果:
Monday
Tuesday
Wensday
Thursday
Friday
All days!
注意:
- Python使用缩进来进行划分代码块,如上述代码中第一个print进行了缩进,打印了五次天数;而第二个print没有缩进,说明是在for循环之外,只打印一次
- for循环使用‘:’开始自己的代码块,并且代码块中至少要有一条语句
不必要的缩进
Python中会指出你不必要的缩进,如:
number=5
print(number==5)
#会报错,因为进行了不必要的缩进
五、数值列表
1)rang()创建数值列表
1.利用range()创建连续数值列表
numbers=[]
#方法1,使用range(a,b)
for value in range(0,6)
numbers.append(value)
#方法2,使用range(a)
for value in range(6)
numbers.append(value)
#方法3,list()可以将range()的结果直接转换为列表
numbers=list(range(0,6))
print(numbers)
执行结果都为:[0, 1, 2, 3, 4, 5]
2.利用range()创建不连续数值列表
#使用range(a,b,c),会根据c设置步长
numbers=list(range(1,6,2))
执行结果:[1, 3, 5]
2)列表解析
列表解析会相对来说比较复杂,如以下代码把for循环与创建新元素的代码合并成一行:
squares=[values**2 for value in range(1,11)]
print(squares)
执行结果:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
3)对数字列表的简单统计
有几个专门处理数字列表的Python函数:
numbers=[values for values in range(1,11)]
print(numbers)
print(min(numbers))
print(max(numbers))
print(sum(numbers))
执行结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
10
55
3)切片
要创建切片,可以指定第一个元素和最后一个元素的索引(从0开始)。
names=['a','b','c','d','e','f']
"""方法1:指定第一个元素和最后一个元素"""
print(names[1:3])
#执行结果:['b', 'c']
"""方法2:不指定第一个元素,指定最后一个元素"""
print(names[:3])
#执行结果:['a', 'b', 'c']
"""方法3:指定第一个元素,不指定最后一个元素"""
print(names[1:])
#执行结果:['b', 'c', 'd', 'e' , 'f']
"""方法4:指定第一个元素和最后一个元素,指定步长"""
print(names[1:5:2])
#执行结果:['b', 'd']
4)复制列表
1.深度复制
深度复制会使两个变量同时指向同一个列表,其中一个变量进行操作都会影响其他变量。
names_01=['a','b','c','d','e','f']
names_02=names_01
print(names_01)
print(names_02)
names_02.pop()
print(names_01)
print(names_02)
执行结果:.
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e']
['a', 'b', 'c', 'd', 'e']
2.浅复制
浅复制会把一个列表的副本复制给另外一个变量,对列表进行操作不会互相影响
"""可以使用切片[:]进行复制副本"""
names_01=['a','b','c','d','e','f']
names_02=names_01[:]
print(names_01)
print(names_02)
names_02.pop()
print(names_01)
print(names_02)
执行结果:.
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e', 'f']
['a', 'b', 'c', 'd', 'e']
六、元组
Python将不能修改的值称为不可变的,而不可变的列表称为元组。
1)定义元组
names_01=('a','b','c','d','e','f')
names_02=names_01[:]
print(names_01)
print(names_02)
执行结果:.
('a', 'b', 'c', 'd', 'e', 'f')
('a', 'b', 'c', 'd', 'e', 'f')
元组也可以像列表一样使用切片,但是元组的唯一特点就是不可改变元组的元素
2)修改元组的量
虽然不可以修改元组的元素,但是可以改变存储元组的变量(修改整个元组)
names=('a','b','c','d','e','f')
print(names)
names=(50,80,90)
print(names)
执行结果:.
('a', 'b', 'c', 'd', 'e', 'f)
(50, 80, 90).