学习笔记之列表的使用

一、列表的通用操作

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)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值