欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

列表 (list)

程序员文章站 2024-01-06 00:02:22
...

一、 输入、输出函数

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或者切片