Python列表基础
列表的应用场景
思考:有一个人的姓名,怎么书写存储程序?
答:变量。
思考:如果一个班级100位学生,每个人的姓名都要存储,应该如何书写程序?声明100个变量吗?
答:列表即可, 列表一次性可以存储多个数据。
格式
变量名=[数据1, 数据2, 数据3, 数据4......]
- 列表可以一次性存储多个数据,且可以为各种不同数据类型。
常用操作
- 列表的作用是一次性存储多个数据,程序员可以对这些数据进行的操作有:增、删、改、查。
查找
len()
- 返回列表长度,即列表中数据的个数。
len(list)
下标
- 与字符串下标一样的规则
- 也可切片获得一个新的子列表
如:
holidays=["4.30","5.1","5.2","5.3","5.4"]
print(f"五一假期:{holidays}")
print(f"五一假期的第一天:{holidays[0]}")
print(f"五一假期的最后一天:{holidays[4]}")
index()
- 语法
list.index(value, begin, end)
- 返回指定数据所在位置的下标 。如果查找的数据不存在则报错。
- begin,end,规定查找范围:[begin,end)
如:
animals=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
index=animals.index("猴")
print(f"猴的下标:{index}")
index=animals.index("猴",0,8)
print(index)
count()
- 统计指定数据在当前列表中出现的次数。
list.count(value)
判断
in
- 判断指定数据是否在某个列表中,如果在返回True,否则返回False
answer=["A","B","C","D"]
while(True):
x=input("A\tB\tC\tD\n请输入您的答案:")
if x in answer:
print("已成功提交答案!")
break
else:
print("不在选项范围内,请重新答题!")
not in
- 判断指定数据是否在某个列表序列,如果不在返回True,否则返回False
answer=["A","B","C","D"]
while(True):
x=input("A\tB\tC\tD\n请输入您的答案:")
if x not in answer:
print("不在选项范围内,请重新答题!")
else:
print("已成功提交答案!")
break
增加
- 作用:增加指定数据到列表中。
- 对列表本身进行操作,操作之后改变了列表的内容
append()
-
在列表结尾追加单个数据
-
如果这个数据是序列(list、tuple、dict),也把它当成整体添加到列表中。
-
语法
list.append(value)
如
names=["张三","李四"]
print(names)
names.append("王二麻子")
print(names)
names.append(["琪琪","恰恰","蹦蹦","拉拉"])
print(names)
extend()
- 列表结尾追加数据,如果数据是一个序列,则将这个序列拆散,逐一添加到列表中。
- 语法
list.extend(数据)
如:
names=["张三","李四"]
print(names)
names.extend("赵钱孙李")
print(names)
names.extend(["琪琪","恰恰","蹦蹦","拉拉"])
print(names)
insert()
- 指定位置新增数据。
- 语法
list.insert(index, value)
删除
del
- 语法
del list/list[index]
- 删除整个列表
holidays=["4.30","5.1","5.2","5.3","5.4"]
print(f"五一假期:{holidays}")
- 删除指定数据
holidays=["4.30","5.1","5.2","5.3","5.4"]
del holidays[3]
del holidays[3]
print(f"五一假期:{holidays}")
pop()
-
删除指定下标的数据(默认为最后一个),并返回该数据。一般用变量接受返回的数据,进行相应操作。
-
语法
popped=list.pop(index)
如:
holidays=["4.30","5.1","5.2","5.3","5.4"]
gone=holidays.pop()
print(f"{gone}照常上课")
gone=holidays.pop(-1)
print(f"{gone}照常上课")
print(f"五一假期:{holidays}")
remove()
-
移除列表中某个数据的第一个匹配项。
-
语法
list.remove(value)
如:
my_game=["bug","bug","bug","bug","bug","bug"]
print(my_game)
my_game.remove("bug")
print(my_game)
my_game.remove("bug")
print(my_game)
clear()
list.clear()
- 清空列表,得到空列表
[]
如
holidays=["4.30","5.1","5.2","5.3","5.4"]
holidays.clear()
print(f"五一假期:{holidays}")
修改
- 修改指定下标数据
list[index]=new_value
如:
my_game=["bug","bug","bug","success","bug","bug"]
print(my_game)
my_game[3]="bug"
print(my_game)
reverse()
- 倒置列表
如:
weights=[50,49,48,47,46,45]
print("体重变化:",end=" ")
for weight in weights:
print(f"{weight}kg",end=" ")
print()
weights.reverse()
print("体重变化:",end=" ")
for weight in weights:
print(f"{weight}kg",end=" ")
sort()
-
可对列表进行排序
-
语法
list.sort(key=None, reverse=False)
-
key 可选,为自定义函数,可指定排序标准
-
reverse可选,默认为升序,若指定为True则降序
-
字符串默认按字符码大小排序
如:
nums=[10,2,4,3,6,78]
nums.sort()
print(nums)
nums.sort(reverse=True)
print(nums)
sorted()
- 对列表的拷贝进行排序,返回一个排完序的新列表
- 语法:
sorted(list,key=None, reverse=False)
- 语法细节同
sort()
复制
copy()
copy_list=list.copy()
- 返回list的拷贝
切片法
copy_list=list[:]
循环遍历
while
nums=[1,2,3,4,5,6]
i=0
while i<len(nums):
print(nums[i])
i+=1
for
nums=[1,2,3,4,5,6]
for i in range(len(nums)):
print(nums[i])
#或者
for num in nums:
print(num)
元组
元组的应用场景
-
思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
-
答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。
num_list = [10, 20, 30]
num_list[0] = 100
- 一个元组可以存储多个数据,元组内的数据是不能修改的
格式
变量名=(数据1, 数据2, 数据3, 数据4......)
- 元组特点:定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。
# 多个数据元组
rgb = (0, 255, 255)
# 单个数据元组
name= ("Lily",)
#空元组
none=()
- 如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的这个数据的数据类型
t1 = (10,)
print(type(t1)) # tuple
t2 = (20)
print(type(t2)) # int
t3 = ('hello')
print(type(t3)) # str
常见操作
修改
-
元组内的直接数据不支持修改。
-
元组内的直接数据如果修改则立即报错
tuple1 = ('aa', 'bb', 'cc', 'bb') tuple1[0] = 'aaa'
但是如果元组里面有列表,修改列表里面的数据则是支持的。
tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30) print(tuple2[2]) # 访问到列表 tuple2[2][0] = 'aaaaa' print(tuple2) # 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)
-
可以对整个元组变量重新赋值
rgb=(6,6,6)
rgb[0]=66 #不行
rgb=(66,6,6) #行
查找
len()
- 统计元组中数据的个数。
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1)) # 4
下标
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0]) # aa
print(tuple1[0:2]) #(aa,bb)
index()
tuple.index(value)
- 查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。
count()
- 统计某个数据在当前元组出现的次数。
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb')) # 2
删除
del
- 语法
del tuple
- 只能删除一整个元组;不支持像列表那样删除单个数据
遍历循环
while
months=(1,2,3,4,5,6,7,8,9,10,11,12)
i=0
while i<len(months):
print(mouths[i])
i+=1
for
months=(1,2,3,4,5,6,7,8,9,10,11,12)
for i in range(len(months)):
print(months[i])
#或者
for month in months:
print(month)