一,列表
1)定义:
[]内以逗号分隔,按照索引,存放各种数据类型,每一个位置代表一个元素
2)特性:
1 可存放多个值
2 按照从左到右的顺序定义列表元素,下标为零开始顺序访问,有序
3可修改指定索引位置对应的值,是可变的,
3)列表的操作和字符串一样
1,切片是和字符串一样的
#例1
lst=["猪八戒","孙悟空","唐僧","沙僧",["观音","如来","蓝灯","十八罗汉",["太上老君","太白金星","哪吒","木吒","金吒"]]]
print(lst[3])
print(lst[4][4][3])
print(lst[4][4][2:5:2])
print(lst[::-2])
print(lst[::-1])
#例2
lst = ["华仔", '赫本', '赵四', "孙艺珍", '车太贤']
print(lst[3][1]) # 索引拿到的是元素
print(lst[-3])
print(lst[1:3]) # 切片也一样
print(lst[::-2]) # 反着切也OK
2.列表的增删改查
#_1新增
lst = ["西红柿首富","无双", "影", "超能泰坦"]
print(lst.append("")) # 可变的数据类型 没有返回值
# 追加。 添加到末尾(重点)
lst.append("找到你")
lst.append("鬼子来了")
lst.append("前任4")
print(lst)
# 插入
lst.insert(0, "建国大业") # 插入, 效率不高. 索引的变更
lst.insert(2, "美国往事")
迭代添加
lst.extend("周杰伦") # ["周杰伦"][0]
lst.extend(["倚天屠龙记", "乡村爱情"])
print(lst)
#_2删除
lst = ["杰森斯坦森", "勒布朗詹姆斯", "尼古拉斯凯奇", "郭达森"]
pop() 弹出一个, 默认弹出最后一个
lst.pop()
lst.pop(1) # 可以弹出指定位置的元素
ret = lst.pop() # 返回值是被删除的元素
ret = lst.pop(2)
print(ret)
remove # 移除 , 指定元素, 删除第一个
lst.remove("勒布朗詹姆斯") #
lst.remove("尼古拉斯凯奇")
#切片删除
del lst[2] # 类似pop
del lst[2:] # 批量删除
del lst[1:5:2] # 切片删除
lst.clear() # 清空列表
print(lst)
#_3修改
lst = ["周杰伦", "周笔畅", "周星驰", "周润发"]
lst[1] = "周星星" # 指定索引去修改. (重点)
lst[1:3] = "马虎疼" # 迭代修改
lst[1:3] = ["马虎疼"]
lst[::2] = ["马虎疼", "王健林"] # 当切片出来的内容步长如果不是1:元素的个数必须要匹配
lst[::2] = "马云"
print(lst)
#_4查询
lst = ["胡辣汤", "猪脚饭", "吱吱冒油的猪蹄子", "猪头肉"]
food表示列表中的每一项
for food in lst: # 列表可以使用for循环。 list是一个可迭代对象
print(food)
lst = [1, 2, 4, 21, 4, 2, 22, 123, 4, 68]
lst.sort() # 排序. 从小到大. 升序
lst.sort(reverse=True) # 倒序。 降序. 从大到小
lst.reverse() # 翻过来
print(lst)
print(len(lst)) # 长度
#_5列表的嵌套
lst = [["葫芦娃", "黑猫警长","西游记"], ["武斗乾坤", "wahaha", "斗破苍穹", "盘龙"], ["三体", "明朝那些事儿"]]
print(lst[1][0])
print(lst[2][2][0])
#_降维: 一层一层的找
# 把wahaha中的a换成b
lst[1][1] = lst[1][1].replace("a", "b") # 多层嵌套的时候如果进行操作。 需要重新赋值。 原因是替换的内容是一个 字符串
lst[1].insert(1, "大闹天宫") # 对于内部元素如果是可变的数据类型。 直接改就行了
print(lst)
二,元组
定义: tuple表示 , 由()组成内部元素用逗号隔开
特点:不可变 只读列表。 也有索引 和切片功能
t = ("周杰伦", "哇哈哈", "爽歪歪", "酸酸乳", "三鹿奶粉", "AD钙奶")
print(t[1])
print(t[1:5]) # 切片的结果是一个元组
print(t[1:5:2])
t[1] = "益力多" # TypeError: 'tuple' object does not support item assignment #元组的不可变. 元组的不可变指的是元组内部第一层元素的内存地址
t = ("张无忌", "周芷若", "赵敏")
t[0] = "胡辣汤"
t = ("周润发", "周星驰", ["渣渣辉","古天绿","陈小春"])
t[2].append("李嘉诚")
print(t)
lst1 = [] # 新列表
lst2 = list() # 新列表
print(lst1, lst2)
t1 = () # 元祖
t2 = tuple() # 元祖
print(t1, t2)
# 元组如果只有一个元素。必须加逗号
t1 = (1, 3, 5, 7, 9,) # () 运算符 优先级
lst = ["哈哈", ]
print(t1)
print(lst)
三,for循环用来查找列表中元素和索引
lst = ["语文", "数学", "英语", "代数", "体育", "生物", "生物第二学期"]
for ke in lst: # 默认的for循环会忽略掉索引
print(ke)
# 获取到元素的索引和元素-背下来
for i in range(len(lst)):
# i #是索引
# lst[i] #获取元素
print(i, lst[i]) s = "我今天下午要吃鸡"
for i in range(len(s)):
print(i, s[i])
四,练习
li=["alex","WuSer","ritian","wenzhou"]
1)计算列表的长度并输出
print(len(li))
2)列表中追加元素"seven"并输出添加后的列表
li.append("seven")
print(li)
3)请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表
li.insert(1,"Tony")
print(li)
4) 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
li[2]=" Kelly"
print(li)
5)请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实
现,不允许循环添加
l2=[1,"a",3,4,"heart"]
li.extend(l2[0:])
print(li)
print(li)
6)请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不
s="qwert"
li.extend(s)
print(li)
7) 添加"eric"元素,并输出结果
li.append("eric")
print(li)
8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
li.pop(2)
print(li)
9)请删除列表中的第2⾄4个元素,并输出删除元素后的列表
del li[2:5]
print(li)
10)请将列表所有得元素反转,并输出反转后的列表
li.reverse()
print(li)
11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
count=0
for i in li :
if [i]==["alex"] :
count +=1
continue
print(count)
2,写代码,有如下列表,利用切片实现每一个功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
# 1)通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
l1=li[0:3]
print(l1)
# 2)通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
l2=li[3:6]
print(l2)
# 3)通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
l3=li[0::2]
print(l3)
# 4)通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
l4=li[1:6:2]
print(l4)
# 5)通过对li列表的切片形成新的列表l5,l5 = ["c"]
l5=[li[-1]]
print(l5)
# 6)通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
l6=li[-3::-2]
print(l6)
3,写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 5, "k", ["qwe", 20, ["k1", ["tt", 3, ""]], 89], "ab", "adv"]
1)将列表lis中的"tt"变成大写(用两种方式)。
方式1
lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)
方式2
lis[3][2][1][0]=lis[3][2][1][0].replace("tt","TT")
print(lis)
2)将列表中的数字3变成字符串""(用两种方式)。
方式1
lis[3][2][1][1] = ""
方式2
lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
方式三
lis[3][2][1][1] = str(lis[3][2][1][1]).replace("", "")
3)将列表中的字符串""变成数字101(用两种方式)。
方式1
lis[3][2][1][2] = int(lis[3][2][1][2]+"")
方式2
lis[3][2][1][2] = int(lis[3][2][1][2].replace("", ""))
4, 请用代码实现:
li = ["alex", "eric", "rain"] 利用下划线将列表的每一个元素拼接成字符串 "alex_eric_rain"
#方法一
li=["alex","eric","rain"]
li[0:] =["alex_eric_rain"]
print(li)
#方法二
li = ["alex", "eric", "rain"]
s = ""
for name in li:
s += name+"_"
print(s.strip("_"))
print(s[:len(s)-1]) # 当我确定最后一个一定是_的时候
#方法三
print("_".join(li))
5.利用for循环和range打印出下面列表的索引。
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
for index in range(0,len(li)):
print(index)
6.利⽤for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
ko=[]
for i in range(0,100):
if i%2==0:
ko.append(i)
print(ko)
7.利用for循环和range找出50以内能被3整除的数,并将这些数插入到一个新列表中。
ko=[]
for i in range(0,50):
if i%3 ==0:
ko.append(i)
print(ko)
8.利⽤for循环和range从100~1,倒序打印。
ko=[]
for i in range(1,101):
ko.append(i)
print(ko[::-1])
9.利⽤for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。
ko=[]
for i in range(10,100):
if i%2==0:
ko.append(i)
for j in ko:
if j%4==0:
print(j)
10,利用for循环和range,将1 - 30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成 *
ko=[]
for i in range(1,30):
ko.append(i)
for j in range(len(ko)):
if ko[j]%3 ==0:
ko[j] = "*"
print(ko)
11,查找列表li中的元素,移除每个元素的空格,并找出以 "A"或者"a"开头,并以"c"结尾的所有元素,并添加到一个新列表中,
最后循环打印这个新列表。li = ["TaiBai ", “alexC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
li = ["TaiBai ", "alexC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
ko=[]
for i in li :
li=i.strip()
if i.capitalize().startswith("A") and i.endswith("c")==1:
ko.append(i)
print(ko)
12,开发敏感词语过滤程序,提示⽤用户输入评论内容,如果用户输户的内容中包含特殊的字符:
敏感词列表li = ["苍老师", "东京热", "武藤兰", "波多野结⾐"]
则将用户输入的内容中的敏感词汇替换成等长度的 *(苍老师就替换 ** *),并添
加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列 表中。
lis=[]
li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
content= input("请输入评论:")
for i in li :
if i in content:
content = content.replace(i,"*"*len(i))
lis.append(content)
print(content)
13,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
#循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。我想要的结果是:
'''1
3
4
"alex"
3
7,
8
"taibai"
5
ritian
'''
for el in li:
if type(el) == list:
for el2 in el:
if type(el2) == str:
print(el2.lower())
else:
print(el2)
else:
if type(el)==str:
print(el.lower())
else:
print(el)
14. 把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
要带着⼈名录⼊, 例如: 张三_44
lis=[]
while 1:
content=input("请输入信息:")
if content.upper() == "Q":
break
lis.append(content)
#总分
scot=0
for i in lis:
scot += int(i.split("_")[1])
print(scot)
#平均分
print(scot/len(lis))
15. 敲七游戏. 从0开始数数. 遇到7或者7的倍数要在桌上敲⼀下. 编程来完成敲 七
lis=[]
n=int(input("请输入一个数:"))
for i in range(0,n):
if i%7==0 or "" in str(i):
lis.append("咣")
else:
lis.append(i)
print(lis)
16. (升级题) 编写程序. 完成⼼动⼥⽣的筛选. (升级题)
⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
运⾏效果:
lis=[]
i=0
while i< 10 :
nh="请输入心仪的女生"+"(你还可以输入" + str(10-i) +"个)"
xd = input(nh+":")
i+=1
lis.append(xd)
index=0
for j in lis :
index+=1
print("编号:"+ str(index) + ", " +"名字:" + j )
lst=[]
count=1
while count<=3 :
hh="请输入第"+ str(count) + "个美眉的编号:"
gxh= int(input(hh + ":"))
count +=1
lst.append(lis[gxh-1])
index2 = 0
for h in lst:
index2 +=1
print("编号:" + str(index2) + ", " + "名字:" + h)
love =int(input("请输入你喜欢的编号:"))
print("程序选出来了你喜欢的是" + lst[love-1])