列表 list
列表基础
[]表示列表,其中元素可以没有任何关系
bicycles = ["aa","bb","cc"]
print(bicycles[0])
注:索引从0开始而不是1
访问最后一个元素,索引-1
print(bicycles[-1].title)
Cc
同样的索引-2返回倒数第二个列表元素,以此类推。
元素操作
修改:bicycles[0] = “abc”
添加:
列表末尾:bicycles.append(“forever”)
指定位置:bicycles.insert(0,‘suzuki’) 在索引为0处添加空间,将后面的元素后移一个位置。
删除元素:
1、del语句(按位置删除,且删除后不再需要该值)
bicycles = ["aa","bb","cc"]
print(bicycles)
del bicycles[0]
print(bicycles)
这里删除的是索引为0的位置的元素
['aa', 'bb', 'cc']
['bb', 'cc']
2、pop删除 从列表中删除,仍然需要改值
默认弹出最后一位
bicycles = ["aa","bb","cc"]
print(bicycles)
popped_bicycles = bicycles.pop()
print(bicycles)
print(popped_bicycles)
['aa', 'bb', 'cc']
['aa', 'bb']
cc
也可指定弹出索引位置
bicycles = ["aa","bb","cc"]
print(bicycles)
popped_bicycles = bicycles.pop(0)
print(bicycles)
print(popped_bicycles)
['aa', 'bb', 'cc']
['bb', 'cc']
aa
3、remove删除 根据值删除
bicycles = ["aa","bb","cc"]
print(bicycles)
bicycles.remove("aa")
print(bicycles)
['aa', 'bb', 'cc']
['bb', 'cc']
注:方法remove()只能删除第一个指定的值
组织列表
1、sort 永久排序
cars = ["bmw","audi","toyota","hongqi"]
print(cars)
cars.sort()
print(cars)
['bmw', 'audi', 'toyota', 'hongqi']
['audi', 'bmw', 'hongqi', 'toyota']
如果要排列反序,cars.sort(reverse = True),得到
['toyota', 'hongqi', 'bmw', 'audi']
2、sorted()对列表进行临时排序
cars = ["bmw","audi","toyota","hongqi"]
print(cars)
print(sorted(cars))
print(cars)
['bmw', 'audi', 'toyota', 'hongqi']
['audi', 'bmw', 'hongqi', 'toyota']
['bmw', 'audi', 'toyota', 'hongqi']
如果要排列反序,sorted(cars,reverse = True)
3、倒着打印列表
cars.reverse()
4、确定列表长度
len(cars)
操作列表
遍历列表
for car in cars:
print(car)
bmw
audi
toyota
hongqi
依序从cars中提取字符串并存入变量car中。for后记得加冒号:
注意命名约定:
for item in list_of_items:
for dog in dogs
Python根据缩进来判断代码行与前一个代码行的关系(C中的{})
创建数字列表
1、函数range()
for value in range(1,5):
print(value)
1
2
3
4
注:只打印1-4,函数range()从指定的第一个值开始数,并在到达你指定的第二个值后停止,**因此输出不包含第二个值。**如果要打0-4,可以range(5),或者range(0,5)
2、创建数字列表
用list()将range()结果直接转换为列表。
numbers=list(range(1,5))#
print(numbers)
[1, 2, 3, 4]
range()函数还可以指定步长,如range(1,11,2),即从1开始步长为2直到等于或者超过11(等于或者超过就不显示了)
[1, 3, 5, 7, 9]
栗子:
squares = []
for value in range(1,7,2):
squares.append(value ** 2)#平方
print(squares)
[1, 9, 25]
3、简单统计
min() max() sum()
4、列表解析
squares = [value **2 for value in range(1,7,2)]
#for value in range(1,7,2):
#squares.append(value ** 2)
print(squares)
列表解析将for循环和创建新元素的代码合并成一行。注意,这里的for语句的结尾没有冒号:
[1, 9, 25]
使用列表的一部分
1、切片
players = ["aa","bb","cc","dd","ee"]
print(players[0:3])#打印0 1 2位置的值
print(players[:2])#打印0 1位置的值
print(players[2:])#打印2 3 4位置的值
print(players[-2:])#打印倒数2个位置的值
['aa', 'bb', 'cc']
['aa', 'bb']
['cc', 'dd', 'ee']
['dd', 'ee']
2、遍历切片
for player in players[:3]:
print(player.title())
Aa
Bb
Cc
3、复制列表
players = ["aa","bb","cc","dd","ee"]
super_players = players[:]
ugly_players = players
super_players.append("superman")
ugly_players.append("uglyman")
print(players)
print(super_players)
print(ugly_players)
['aa', 'bb', 'cc', 'dd', 'ee', 'uglyman']
['aa', 'bb', 'cc', 'dd', 'ee', 'superman']
['aa', 'bb', 'cc', 'dd', 'ee', 'uglyman']
从上述结果可以看出,如果没有使用切片赋值[:],ugly_players其实是和players绑定在一起的,两个变量共同变化。!!
如果使用切片赋值[:],super_players与players就无关了,成为互相不相关的变量。
元组
概念区分:
列表适用于存储程序运行期间可能变化的数据集。
元组适用于存储程序运行期间不可变(不可修改)的数据。
1、定义元组
使用圆括号来标识
dimensions = (200,30,50)
print(dimensions[0])
print(dimensions[1])
虽然标识用(),但是表示索引时依然用[]
200
30
可在调试界面看到,dimensions类别是tuple(n. [计] 元组,重数),而之前列表players类别是list
如果修改元组值
dimensions = (200,30,50)
print(dimensions[0])
print(dimensions[1])
dimensions[0] =2
得到错误:
Traceback (most recent call last):
File "D:/code/python code/PythonCrashCourse/ex3/extest.py", line 24, in <module>
dimensions[0] =2
TypeError: 'tuple' object does not support item assignment
可知并不能修改元组的值
2、修改元组变量
如果必须修改元组不可呢?可以直接更新元组变量。
dimensions = (200,30,50)
print(dimensions)
dimensions =(2,3,5)
print(dimensions)
(200, 30, 50)
(2, 3, 5)
木有问题,不会报错了!
设置代码格式
PEP 8是最古老的python改进提案之一,其中包括了代码格式设置指南。
缩进:每级缩进4个空格,且最好不要混用制表符和空格
行长:每行不超过80字符,注释行长不超过72字符
不要再程序中过多的使用空行