列表 (list)
一、 输入、输出函数
1.输入函数:print()函数
(1)默认每一个print函数,输出完内容后会输出一个换行
(2)一个print函数输出多个内容的时候,内容之间是用空格隔开
(3)内容后面加 end= 来设置结束标志,(默认是\n)
(4)通过设置 sep 的值,来设置多个内容之间的间隔符(默认是' ')
print('aa',1,end='\n',sep=',')
2.输入函数:input()函数
(1)input()函数可以接收从控制台输入的内容(以回车为标志结束)
(2)input()函数会阻塞线程,即程序执行到input的时候会停下来,等待用
户输入,输入完成后才会继续执行下面的内容
(3)用户输入到的信息,后台接收到的数据是以字符串的形式返回的(在python2.x中
输入的是数字的时候,可能返回int类型或者浮点型数据)
value=input('请输入一个整数:')
print('name',value,type(value)) #name 12 <class 'str'>
练习:猜数字游戏
要求:随机产生一个1-100的整数,输入的数字和随机产生的一样是,就显示猜对了,并且游戏结束但输入的数字大于或小于随机数,就提示大了或小了,然后让其重新输入
import random #先导入random(随机)函数
random_num=random.randint(1,100) #在1-100之间随机产生一个数
print(random_num)
count=0
while True:
num = int(input('请输入一个数:'))
count+=1
if num == random_num:
print('恭喜你猜对了!')
if count >=7:
print('继续加油')
if count==1:
print('太厉害了')
break
if num < random_num:
print('小了')
if num > random_num:
print('大了')
二、列表
列表、字典、元祖、集合都是序列,都是容器类型的数据类型
列表(list):用来存储多个数据的一种数据类型,里面储存的单个数据叫元素
特点:
1.有序的
2.可变的(可变指的是容器的内容的个数和值可变)
3.元素可以是任何类型的数据
列表的值:用[]将列表的元素括起来,多个元素之间用逗号隔开,[] --->空列表
1.声明列表
列表命名一般是复数 ,例:names[]
list1 = [] # 创建空列表
print(type(list1)) # <class 'list'>
(1)声明一个变量,赋一个列表值
list2 = [1, 2, [1, 2], {'a': 1}, 'a']
print(type(list2), list2) # <class 'list'> [1, 2, [1, 2], {'a': 1}, 'a']
(2)将其他数据类型转化成列表
list3 = list('212jjan')
print(list3) # ['2', '1', '2', 'j', 'j', 'a', 'n']
(3)生成式(了解)
list4 = list(i for i in range(10))
print(list4) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list4 = list(i * 2 for i in range(10))
print(list4) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
list4 = list(i * 2 for i in range(10) if i % 3 == 0)
print(list4) # [0, 6, 12, 18]
2.获取列表元素
列表中的每一个元素都对应一个下标:0~列表长度-1; -1~-列表长度
(1)获取单个元素:列表名[下标]
下标不能越界
names=['1','2','3','4','5','6','7','8']
print(names[3]) #4
(2)获取部分元素(切片)
<1>列表名[开始下标:结束下边:] 获取从开始下标到结束下标前所有的元素,结果是个小列表
<2>列表名[起始下标:结束下标:步进] 从开始下标开始,每次下标值加步进获取下一个元素,直到结束下标为止
<3>起始下标和结束下标都可以缺省
<4>如果步进是正数,起始下标缺省就从第一个元素开始获取;如果步进是负数,就从最后一个元素往前获取
<5>结束下标缺省,步进是正数,获取到最后一个,步进数负数,从后往前获取到第一个元素
names=['1','2','3','4','5','6','7','8']
print(names[1:3]) #['2', '3']
print(names[-3:-1]) #['6', '7']
print(names[::-1]) #['8', '7', '6', '5', '4', '3', '2', '1']
(3)一个一个的获取列表中所有的元素(遍历列表)
利用循环将列表中的元素挨个取出来
for循环遍历--->遍历元素
while循环遍历--->遍历下标
scores=[45,86,23,85,22,96,84]
# for循环遍历(遍历元素)
for item in scores:
print(item)
'''
结果:
45
86
23
85
22
96
84
'''
# while循环遍历(遍历下标)
index=0
while index<len(scores):
print(scores[index])
index+=1
'''
结果:
45
86
23
85
22
96
84
'''
3.获取列表的长度(获取列表元素的个数)
print(len(scores)) #7
添加列表元素(3种)
1.append(元素)
列表.append(元素)
功能:在列表的末尾添加一个元素
skills=[]
skills.append('气体源流')
print(skills) #['气体源流']
skills.append('拘灵遣将')
print(skills) #['气体源流', '拘灵遣将']
2.insert函数
列表.insert(下标,元素) (注意:下标可以越界)
功能:在指定下标签前插入一个元素
skills.insert(1,'通天禄')
print(skills) #['气体源流', '通天禄', '拘灵遣将']
"""插入的下标可以越界"""
skills.insert(10,'通天禄') #插到最后
print(skills) #['气体源流', '通天禄', '拘灵遣将', '通天禄']
skills.insert(0,'通天禄') #插到最前面
print(skills) #['通天禄', '气体源流', '通天禄', '拘灵遣将', '通天禄']
3. +
列表1+列表2
功能:将列表2中的元素和列表1中的元素合并,并组成一个新的列表
new_skills=skills+['丰厚气门','阿威十八式']
print(new_skills) #['通天禄', '气体源流', '通天禄', '拘灵遣将', '通天禄', '丰厚气门', '阿威十八式']
练习:从控制台输入10个学生的成绩,然后保存在一个列表中
scores=[]
for _ in range(10):
score=float(input('请输入成绩:'))
scores.append(score)
print(scores)
4.删除列表元素(3种)
注意:不管是添加元素还是删除元素,都会重新分配下标
del和remove是删除,而pop是移动到其他地方了,可以单独在保存起来
1.del 语句
del可以删除任何数据
del 列表[下标]:删除列表中指定下标的元素(注意:下标不可以越界)
films=['肖生克的救赎','阿甘正传','赌圣','摔跤吧爸爸','我不是药神','逃学威龙','英雄本色','赌圣']
del films[1]
print(films)
#['肖生克的救赎','赌圣', '摔跤吧爸爸', '我不是药神', '逃学威龙', '英雄本色', '赌圣']
2.remove方法
列表.remove(元素):删除列表中指定的元素
注意:若列表中有多个同一元素,就删除从左往右数的第一个该元素
注意:如果要删除的元素不再列表中,会报错
films.remove('赌圣')
print(films)
#['肖生克的救赎', '摔跤吧爸爸', '我不是药神', '逃学威龙', '英雄本色', '赌圣']
3.pop方法
列表.pop():将列表中的最后一个元素取出来
列表.pop(下标):将列表中指定下标的元素取出来 (注意:下标不可以越界8)*
film=films.pop()
print(films,film)
#['肖生克的救赎', '摔跤吧爸爸', '我不是药神', '逃学威龙', '英雄本色']
# ['肖生克的救赎', '摔跤吧爸爸', '我不是药神', '逃学威龙', '英雄本色'] 赌圣
film=films.pop(1)
print(films,film)
# ['肖生克的救赎', '摔跤吧爸爸', '我不是药神', '逃学威龙', '英雄本色'] 赌圣
# ['肖生克的救赎', '我不是药神', '逃学威龙', '英雄本色'] 摔跤吧爸爸
练习:#scores = [23, 45, 45, 78,32,90, 89,1],删除所有小于60分的成绩
scores = [23, 43, 45, 78, 32, 90, 89, 10, 9, 1]
# [23, 43, 45, 78, 32, 90, 89, 10, 9, 1] 23 1
# [43, 45, 78, 32, 90, 89, 10, 9, 1] 45 2
# [43,78, 32, 90, 89, 10, 9, 1] 32 3
# [43,78,90, 89, 10, 9, 1] 89 4
# [43,78,90, 89, 10, 9, 1] 10 5
# [43,78,90, 89, 9, 1] 1 6
# [43,78,90, 89, 9]
#new_score = score[:]
#for item in new_score:
for item in scores[:]:
if item < 60:
scores.remove(item)
print(scores)
5.修改元素(1种)
列表名[下标]=新的值
通过下标获取运算,然后赋值,(下标不可以越界)
names=['金秀贤','张家辉','刘德华','迪丽热巴']
names[3]='易烊千玺'
print(names) #['金秀贤', '张家辉', '刘德华', '易烊千玺']
6.列表的其他操作
(1)len(列表):获取列表的长度(元素的个数)
(2)列表1+列表2:让列表1和列表2的元素组合在一起后产生一个新的列表
(3)列表*数字:让列表中的元素重复N次,然后 产生一个新的列表
(4)in 和 not in操作
元素 in 列表:判断指定的元素是否在指定的列表中--->值是布尔值(True,False
元素 not in列表:判断指定元素是否不在指定的列表中--->值是布尔值(True,False)
print(len([1,2,3,4])) #4
print(len(names)) #4
new_names=names+['周杰伦','王力宏']
print(new_names) #['金秀贤', '张家辉', '刘德华', '易烊千玺', '周杰伦', '王力宏']
print([1,2]*2) #[1, 2, 1, 2]
result='王俊凯' not in names
print(result) #True
7.获取列表中的最大最小元素
max(列表)
min(列表)
print(max([1,2,3,0,122])) #122
print(min(['a','b','dss'])) #a
例:获取一个数字列表中的最大值
numbers=[1,2,24,53,445,0]
# print(max([1,2,24,53,445,0])) #445
max1=numbers[0]
for item in numbers:
if item>max1:
max1=item
print(max1) #0
8.获取列表中出现的次数
count:获取元素在列表中出现的次数
numbers=[-1,2,24,53,445,0]
print(numbers.count(-1)) #1
9.extend
列表.extend(序列):将列表中的每个元素,添加到列表中
names.extend(['王祖贤'])
print(names) #['金秀贤', '张家辉', '刘德华', '易烊千玺', '王祖贤']
10.index
列表.index(元素):获取指定元素在指定列表中的索引(如果元素有多个,则取第一个)
print(names.index('张家辉')) #1
11.reverse()
列表.reverse():反向列表中的元素(直接操作原来列表,不会产生新的列表)
numbers=[1,2,3,4]
new_numbers=numbers.reverse()
print([numbers,new_numbers]) #[[4, 3, 2, 1], None]
12.sort
列表.sort():对列表进行排序 (升序排)
numbers=[1,23,42,31,65,0,48]
numbers.sort() #(升序)
print(numbers) #[0, 1, 23, 31, 42, 48, 65]
numbers.sort(reversed=True)
print(numbers) #(降序)
13.clear
列表.clear(): 清空列表中的元素
numbers.clear()
# numbers = [] # 效果同上
print(numbers)
14.copy
7.列表.copy(): 将列表中的元素全部拷贝一份创建一个新的列表
names = ['张三', '李四']
# new_names1 = names.copy()
new_names1 = names[:]
print(new_names1)
注意:通过一个列表变量给另一个列表变量赋值的时候,赋的是地址;两个列表对元素进行操作的时候会相互影响。 想要避免这个问题就使用copy或者切片