一、列表的通用操作
1.1、加号
可以将2个列表拼接成一个列表
lst = [1,2,3] + [4,5,6]
# lst=[1,2,3,4,5,6]
1.2、乘号
可以将列表指定重复的次数。
lst1 = [1,2,3] + [1,2,3]
lst = [1,2,3] * 2
#注意:序列与序列不能相乘
#错误示例:
list1 =[1,2,3] * [1,2,3]
1.3、in 和not in
用来检测指定的元素是否存在于列表中 如果在返回True 不在返回False.
heros = ['百里玄策','裴擒虎','韩信','李白','赵云']
print( '李白' in heros)
# True
print('云中君' in heros)
#False
print( '李白'not in heros)
#False
print('云中君' not in heros)
#True
1.4、len()
获取列表的长度,即列表中元素的个数。
heros = ['百里玄策','裴擒虎','韩信','李白','赵云']
print(len(heros))
#5
1.5、max()和min()
min()获取列表中的最小值
max()获取列表中的最大值
number = [1,2,3,4,5,6,7]
print(min(number))
#1
print(max(number))
#7
注意使用max()和min()时,列表内的元素类型应相同。原理都是都是转化ASXII后比较大小。
1.6、list.index()
获取指定元素在列表中的位置
index() 第二个参数表示的起始位置 第三个参数表示的是结束的位置
heros = ['百里玄策','裴擒虎','韩信','李白','赵云','云中君','猴子','李白','橘右京']
print(heros.index('李白'))
#3
print(heros.index('李白',4))
#7
print(heros.index('李白',4,8))
#7
1.7、list.count
list.count() 统计指定元素在列表中出现的次数
heros = ['百里玄策','裴擒虎','韩信','李白','赵云','云中君','猴子','李白','橘右京']
print(heros.count('安琪拉'))
#0
print(heros.count('李白'))
#2
二、修改列表
2.1、下标索引值
heros = ['百里玄策','裴擒虎','韩信','李白']
heros[1] = '橘右京'
print(heros)
#['百里玄策', '橘右京', '韩信', '李白']
2.2、del 关键字
heros = ['百里玄策','裴擒虎','韩信','李白']
del heros[0]
print(heros)
#['裴擒虎', '韩信', '李白']
2.3、切片 + 步长
通过切片来修改元素
如果替换的元素大于原有的元素,多余的元素会一次往后顺延
如果替换的元素小于原有的元素,原有被切片的元素变成替换的元素
heros = ['百里玄策','裴擒虎','韩信','李白']
heros[0:3]=['安琪拉','妲己','王昭君']
print(heros)
#['安琪拉', '妲己', '王昭君', '李白']
heros[0:3] =['赵云','云中君','猴子','李白','橘右京']
print(heros)
#['赵云', '云中君', '猴子', '李白', '橘右京', '李白']
heros = ['百里玄策','裴擒虎','韩信','李白']
heros[0:3]=['上官婉儿']
print(heros)
#['上官婉儿', '李白']
heros = ['百里玄策','裴擒虎','韩信','李白']
heros[0:0]=['梦奇']
print(heros)
#['梦奇', '百里玄策', '裴擒虎', '韩信', '李白']
设置步长之后,序列中的元素的个数必须和你切片的元素的个数保持一致,多于或少于切片元素的个数都会报错.
heros = ['赵云','云中君','猴子','李白','橘右京']
print(heros[::2])
#['赵云', '猴子', '橘右京'] 三个元素
heros[::2]=['安琪拉','妲己','王昭君']
print(heros)
#['安琪拉', '云中君', '妲己', '李白', '王昭君']
三、列表的方法
3.1、append()
向列表的最后添加一个元素,只能是一个元素。
heros = ['百里玄策','裴擒虎','韩信','李白']
heros.append('吉吉国王')
print(heros)
#['百里玄策', '裴擒虎', '韩信', '李白', '吉吉国王']
3.2、insert()
向列表指定的位置插入一个元素,有两个参数:参数1为要插入的位置;参数2为要插入的元素。
heros = ['百里玄策','裴擒虎','韩信','李白']
heros.insert(1,'百里守约')
print(heros)
#['百里玄策', '百里守约', '裴擒虎', '韩信', '李白']
3.3、extend()
需要一个序列作为参数,它会将该序列中的元素他点击到当前的列表当中.
heros = ['百里玄策','裴擒虎','韩信','李白']
heros.extend(['橘右京','百里守约','后羿'])
print(heros)
#['百里玄策', '裴擒虎', '韩信', '李白', '橘右京', '百里守约', '后羿']
3.4、pop()
根据索引删除并返回删除的元素.每次只能删除一个元素。不传递索引值默认删除最后一个。
heros = ['百里玄策','裴擒虎','韩信','李白']
print(heros.pop(1))
print(heros)
# 裴擒虎
# ['百里玄策', '韩信', '李白']
print(heros.pop())
#李白
3.5、remove()
remove() 根据指定值来删除元素 没有返回值。每次只能删除一个元素。
heros = ['百里玄策','裴擒虎','韩信','李白']
result=heros.remove('李白')
print(heros,result)
#['百里玄策', '裴擒虎', '韩信'] None
3.6、clear()
清空列表
heros = ['百里玄策','裴擒虎','韩信','李白']
heros.clear()
print(heros)
#[]
3.7、reverse()
翻转列表
heros = ['百里玄策','裴擒虎','韩信','李白']
heros.reverse()
print(heros)
#['李白', '韩信', '裴擒虎', '百里玄策']
3.8、 sort()
默认升序排列,添加参数reverse=True则进行降序排列。
number = [1,2,3,4,8,6,7,9]
number.sort()
print(number)
#[1, 2, 3, 4, 6, 7, 8, 9]
number = [1,2,3,4,8,6,7,9]
number.sort(reverse=True)
print(number)
#[9, 8, 7, 6, 4, 3, 2, 1]
四、遍历列表
遍历列表指的是将列表中的元素提取出来
4.1、 while的实现步骤原理
heros = ['百里玄策','裴擒虎','韩信','李白','赵云','云中君','猴子','李白','橘右京']
i=0
while i<len(heros):
print(heros[i])
i+=1
4.2、for循环的实现原理
for循环的代码会执行多次,序列中有几个元素就会执行几次,每执行一次就会将序列中的元素赋值给变量,所以我们可以通过变量来获取列表中的元素。
'''
语法
for 变量 in 序列(遍历的规则):
代码块
'''
heros = ['百里玄策','裴擒虎','韩信','李白','赵云','云中君','猴子','李白','橘右京']
for i in heros:
print(i)
4.3、range()函数的特点以及和for 循环的配合使用
- range()函数
语法:range(start,stop,step)start是开始,默认是从0开始;stop为结束,不包括结束;step为步长,默认为1。
```
a = list(range(10))
print(a)
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
b=list(range(1,10,2))
print(b)
#[1, 3, 5, 7, 9]
```
- 配合for循环非常方便的来执行循环的次数 range()中传递几就循环几次
#找100以内能够被3整除的数
for i in range(1,101):
if i % 3 == 0:
print(i)
五、小练习
1.给用户9次机会猜1 - 10个数字随机来猜数字。如果随机的数字和用户输入的数字一致则表示正确,如果不一致则表示错误。最终结果要求用户怎么也猜不对。(不考虑输入的合法性)
a=list(range(1,11))
i = 1
while i<10:
num=int(input('请输入你猜的数字:'))
if num not in a:
print('请不要输入重复的数字,或者不在1-10中的数字,你还有%s次机会'%(10-i))
continue
else:
a.remove(num)
i += 1
print('你猜错了,你还有%s次机会' %(10-i))
else:
print('正确答案是%s' %a[::])
#考虑输入的合法性
import random
print('你有九次机会来猜1-10个数字')
a=list(range(1,11)) #建立列表赋值给变量a
i = 1 #变量值初始化
while i<10: #循环条件
try:
num=int(input('请输入你猜的数字:'))
i += 1 # 更新初始变量值
if num >0 and num % 1 == 0:
if num not in a: #判断输入的数字是否在列表中
print('请不要输入重复的数字,或者不在1-10中的数字,你还有%s次机会'%(10-i))
continue #跳过本次循环
else:
a.remove(num) #删除列表中的这个元素
print('你猜错了,你还有%s次机会' %(10-i))
else:
print('请输入自然数,你还有%s次机会'%(10-i))
except:
i += 1
print('输入错误,你还有%s次机会'%(10-i))
else:
b=random.choice(a[::]) #在列表a中随机一个数赋值给b
print('正确答案是%s' %b)
2.有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素.
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
for i in lst1: #遍历lst1的元素
for j in lst2:
if i == j: #判断相同的元素
print(i)