1.列表

1)定义:列表由[ ]表示,每一项元素使用逗号隔开,列表什么元素都能装,能装对象的对象,列表可以装大量元素

2)列表的索引和切片

①列表的切片和字符串一摸一样

1 lsr = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝"]
2 print(lsr[1][1])
3 输出:
4
View Code

 ②列表中切片,切出来的还是一个列表

lsr = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝"]
print(lsr[1:3])
输出:
['奥特曼', '舌尖上的中国']
View Code

③切片时,同样顾头不顾尾

lsr = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝"]
print(lsr[-3:-1])
输出:
['奥特曼', '舌尖上的中国']
View Code

 ④从头到尾切,且每隔两个切一个

lsr = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
print(lsr[2::2])
输出:
['舌尖上的中国', '金刚']
View Code

 ⑤倒着切片

1 lsr = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
2 print(lsr[-1:-5:-2])
3 输出:
4 ['金刚', '舌尖上的中国']
View Code

 3)列表的增删改查(列表的长度是可变的)

①增加:在原有的列表上进行追加(在列表屁股后追加)

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.append("金刚狼")
print(lst)
输出:
['葫芦娃', '奥特曼', '舌尖上的中国', '海绵宝宝', '金刚', '金刚狼']
View Code

 ②增加:往列表的某个具体位置添加元素(其他元素往后移)

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.insert(0,"西游记")
print(lst)
输出:
['西游记', '葫芦娃', '奥特曼', '舌尖上的中国', '海绵宝宝', '金刚']
View Code

 ③增加:迭代添加元素(需要加[ ],如果不加,就会把字符串中每个元素添加进去)

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.extend("西游记")
print(lst)
输出:
['葫芦娃', '奥特曼', '舌尖上的中国', '海绵宝宝', '金刚', '西', '', '']
View Code

 #通过加[]的方式添加元素

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.extend(["西游记","三国演义","水浒转"])
print(lst)
输出:
['葫芦娃', '奥特曼', '舌尖上的中国', '海绵宝宝', '金刚', '西游记', '三国演义', '水浒转']
View Code

 注:append一次只能添加一个元素,extend一次可以添加多个元素;insert是在指定位置添加

④删除:删除列表中某个固定位置的元素(但是会将删除的元素返回)pop

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
data = lst.pop(1)
print(data)
print(lst)
输出:
奥特曼
['葫芦娃', '舌尖上的中国', '海绵宝宝', '金刚']
View Code

 ⑤删除:移除列表中的元素(元素不同不会报错)remove

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.remove("舌尖上的中国")
print(lst)
输出:
['葫芦娃', '奥特曼', '海绵宝宝', '金刚']
View Code

 ⑥删除:切片删除列表中元素

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
del lst[1:3]
print(lst)
输出:
['葫芦娃', '海绵宝宝', '金刚']
View Code

 ⑦删除:删除列表中所有元素

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst.clear()
print(lst)
输出:
[]
View Code

 ⑧修改:修改列表中元素

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst[1] = "西游记"
print(lst)
输出:
['葫芦娃', '西游记', '舌尖上的中国', '海绵宝宝', '金刚']
View Code

 ⑨修改:切片修改元素(本质:先删除后添加)

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst[1:3] = ["西游记"]
print(lst)
输出:
['葫芦娃', '西游记', '海绵宝宝', '金刚']
注:若不加【】为迭代添加
View Code

 #修改:切片修改元素的时候,如果步长不是1,需要注意元素的个数,否则会报错

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
lst[1::2] = ["西游记","水浒传"]
print(lst)
输出:
['葫芦娃', '西游记', '舌尖上的中国', '水浒传', '金刚']
View Code

 ⑩查找:通过for循环以迭代的方式进行遍历列表元素

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
for e in lst:
    print(e)
View Code

 ⑪以列表索引进行查找

lst = ["葫芦娃","奥特曼","舌尖上的中国","海绵宝宝","金刚"]
print(lst[1])
输出:
奥特曼
View Code

 4)列表的嵌套(使用降维操做对响应元素进行增删改查)

lst = ["葫芦娃","奥特曼",["舌尖上的中国","海绵宝宝",["西游记","三国演义","水浒传","apple"]]]
lst[2][2][3] = lst[2][2][3].upper()
lst[2][2][0] = "红楼梦"
print(lst)
输出:
['葫芦娃', '奥特曼', ['舌尖上的中国', '海绵宝宝', ['红楼梦', '三国演义', '水浒传', 'APPLE']]]
View Code

 5)列表常用方法/操作

①计算列表中某个元素出现的次数

lst = ["葫芦娃","奥特曼","西游记","三国演义","葫芦娃"]
print(lst.count("葫芦娃"))
输出:
2
View Code

②对列表中的元素进行排序(默认升序)

lst = [25,10,12,33,2,9,14]
lst.sort()
print(lst)
输出:
[2, 9, 10, 12, 14, 25, 33]
View Code

③对列表中的元素进行倒叙排序

lst = [25,10,12,33,2,9,14]
lst.sort(reverse=True)
print(lst)
输出:
[33, 25, 14, 12, 10, 9, 2]
View Code

④将列表中的元素进行反转(即倒叙输出)

lst = ["葫芦娃","奥特曼","西游记","三国演义","葫芦娃"]
lst.reverse()
print(lst)
输出:
['葫芦娃', '三国演义', '西游记', '奥特曼', '葫芦娃']
View Code

 ⑤求列表的长度

lst = ["葫芦娃","奥特曼","西游记","三国演义","葫芦娃"]
print(len(lst))
输出:
5
View Code

注:输入list按下ctrl+鼠标点击可看到列表相关方法

2.元组

1)元组的定义:通过()将元素括起来,只读列表,只能看,啥也不能干(即不能对元组中的元素进行增删改操作)

注:如果()中只有一个元素,那么它不能算做一个元组,还是原来的数据类型

tup = (2)
print(type(tup))
输出:
<class 'int'>
View Code

 ①元组中如果只有一个元素,需要在元组中写一个逗号()

tup = (2,)
print(type(tup))
输出:
<class 'tuple'>
View Code

 ②定义一个空元组

tup = tuple()
print(tup)
print(type(tup))
输出:
()
<class 'tuple'>
View Code

 ③定义一个元组

tup = ("人民币","美元","英镑","欧元")
print(tup)
输出:
('人民币', '美元', '英镑', '欧元')
View Code

 2)元组的查找

①查找:查找元组中固定位置元素(按照索引查找)

tup = ("人民币","美元","英镑","欧元")
print(tup[2])
输出:
英镑
View Code

②查找:元组的切片查找(切出来的还是一个元组)

tup = ("人民币","美元","英镑","欧元")
print(tup[::2])
输出:
('人民币', '英镑')
View Code

 ③按照for循环进行查找

tup = ("人民币","美元","英镑","欧元")
for i in tup:
    print(i)
View Code

 3)元组本身的元素是不可变的,但是元组的子元素可发生改变(即只管元组第一层的元素)

tup = ("人民币","美元","英镑",[])
tup[3].append("冥币")
print(tup)
输出:
('人民币', '美元', '英镑', ['冥币'])
View Code

 #如下操作会报错

tup = ("人民币","美元","英镑","apple")
tup[3]=tup[3].upper()
print(tup)
报错:TypeError: 'tuple' object does not support item assignment
View Code

 注:元组的第一层是不能进行赋值的,内部元素是没有要求的(内部元素可变就可变,内部元素本身不可变就不能变,如元组内部是列表就可变,是字符串就不可变

3.range(可迭代对象)

①输出0n-1

for i in range(10):
    print(i)
View Code

②从n至n-1

for i in range(5,10):
    print(i)
View Code

③按照步长切片

for i in range(5,10,2):
    print(i)
View Code

④倒着取值

for i in range(100,90,-1):
    print(i)
View Code

例:获取到列表的索引,拿到索引后,再通过索引获取列表的元素

lst= ["人民币","美元","英镑","冥币"]
for i in range(len(lst)):
    print(lst[i])
输出:
人民币
美元
英镑
冥币
View Code

4.练习

 1)将列表lst=["lpl","lol","dnf"]转换为lpl_lol_dnf

lst = ["lpl","lol","dnf"]
s = ""
for i in lst:
    s = s + i + "_"
print(s[:len(s)-1])
输出:
lpl_lol_dnf
View Code

2)查找列表ltr中的元素,移除每一个元素的空格,并找出以"A"或者"a"开头,并且以"c"结尾的所有元素,并添加到一个新的列表中,最后循环打印这个新列表

ltr = ["apple","dnf ","Abc "," la ji","LPLc"]
lst = []
for i in ltr:
    i = i.replace(" ","")
    if (i.startswith("A") or i.startswith("a")) and i.endswith("c"):
        lst.append(i)
print(lst)
输出:
['Abc']
View Code

3)开发敏感词语过滤程序,提示用户输入的评论内从,如果输出的内容中包含特殊的字符,将用户输入的铭感词汇转换为对等的*,并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中;lst = ["fagong","耶稣","邪教","传销"]

①替换

lst = ["fagong","耶稣","邪教","传销"]
content = input("请输入评论内容:")
for i in lst:
    if i in content:
        content = content.replace(i,"*"*len(lst))
print(content)
输出:
请输入评论内容:fagong是一个邪教组织,不是一个传销组织
****是一个****组织,不是一个****组织
View Code

②替换后放入列表中

lst = ["fagong","耶稣","邪教","传销"]
lst_new= []
content = input("请输入评论内容:")
for i in lst:
    if i in content:
        content = content.replace(i,"*"*len(lst))
lst_new.append(content)
print(lst_new)
输入输出:
请输入评论内容:fagong是一个邪教组织,不是一个传销组织
['****是一个****组织,不是一个****组织']
View Code

4)有如下列表,循环打印列表中的值遇到子列表,再次循环打印,如果遇到大写,转成小写

lst = ["apple","banana","orange",["Dog","pig","cat"],["Tree","flower"]]
for i in lst:
    if type(i) == list:
        for e in i:
            if type(e) == str:
               print(e.lower())
            else:
               print(e)
    else:
            if type(i) == str:
                print(i.lower())
            else:
                print(i)
View Code

5)把班级学生的数学考试成绩录入到一个列表中:并求平均值;要求:录入的时候要带着学生姓名和成绩;例如:张三_44

lst = []
while 1:
    stu = input("请输入学生姓名和成绩(姓名_成绩):")
    if stu.upper() == "Q":
        break
    else:
        lst.append(stu)
print(lst)
#求平均值
sum = 0
for i in lst:
    score = i.split("_")
    sum += int(score[1])
print("平均值:",sum/len(lst))
['zdz_10', 'zzm_20', 'zc_30']
平均值: 20.0
View Code

补充:当列表中的元素数量很多时,不要使用insert()、pop()等方法,会降低程序效率