列表和元组

一、昨日内容回顾以及作业讲解

  int str bool
  str: s1 = '太白123abc'
    • 索引:
        s1[0]
        s1[-1]
        s1[:3]
        s1[:5:2]
        s1[-1:-4:-1]
        s1[-1:-6:-2]
    • 常用操作方法:
        • upper lower 大小写转换
        • startswith endswith  确认是否串是否以某字符开始或者结尾
        • split 分割:str ---> list
          • 默认按照空格
          • 可以指定分隔符
        • strip :默认去除字符串两边的空格、换行符、制表符
        • isdecimal isalpha isalnum
        • format 格式化输出
        • count 某个袁术出现的次数
        • join 连接
        • replace 替换
        • len() 获取数据的元素个数
    • for循环

二、今日内容大纲

  • 列表的初识
  • 列表的索引切片
  • 列表的增删改查
  • 列表的嵌套
  • 元组的初识(了解)
  • 元组的简单应用(了解)
  • range

1.列表的初识

  • why : int bool str:‘123 True 太白’
     • str : 存储少量的数据
     • str:切片还是对其进行任何操作,获取的内容全都是str 类型,存储的数据单一
  • what:list
     • lis = [100, 'alex' ,True,[1,2,3]] 承载任意数据类型,存储大量的数据
     • python常用的容器型数据类型。list 列表,其他语言:Java: 数组。
     • 列表是有序的,可索引,切片(步长)。
 

2. 索引、切片、步长

lis = [100, '太白',True,[1,2,3]]
#索引
print(lis[0],type(lis[0]))
print(lis[1],type(lis[1]))
print(lis[2],type(lis[2]))
print(lis[3],type(lis[3]))

#切片
print(lis[:2])

#步长
print(lis[:-1:2])



结果:
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
100 <class 'int'>
太白 <class 'str'>
True <class 'bool'>
[1, 2, 3] <class 'list'>
[100, '太白']
[100, True]
#相关练习题:
li = [1, 3, 2, "a", 4, "b", 5,"c"]
#通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
l1 = li[0:3]
print(l1)
#通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
l2 = li[3:-2]
print(l2)
#通过对li列表的切片形成新的列表l3,l3 = [3,"a","b"]
l3 = li[1:-2:2]
print(l3)
#通过对li列表的切片形成新的列表l4,l4 = ["b","a",3]
l4 = li[-3:-8:-2]
print(l4)

3.列表的增删改查

# 列表的创建
# 方式一
l1 = [1, 2, 'Alex']
print("l1",l1)

# 方式二
l2 = list()
print("l2:",l2)
l3 = list('afagadgsd')
print("l3",l3)

# 方式三:列表推导式,后面讲

# 增删改查
# append 末尾增加
l1 = ['屌丝', '小白', '女神', '老师']
l1.append('大神')
print(l1)

# insert 指定索引位置插入
l1 = ['屌丝', '小白', '女神', '老师']
l1.insert(2,'test')
print(l1)

#extend 迭代着追加
l1 = ['屌丝', '小白', '女神', '老师']
l1.extend('test')
print(l1)
l1 = ['屌丝', '小白', '女神', '老师']
l1.extend([123,'test'])
print(l1)

# pop 按照索引位置删除
l1 = ['屌丝', '小白', '女神', '老师']
l1.pop(-2)
print(l1)
l1.pop()  #默认删除最后一个
print(l1)

# remove 指定删除元素,如果有重名元素,默认删除从左数第一个
l1 = ['屌丝', 'test', '小白', '女神', 'test', '老师', 'test']
l1.remove('test')
print(l1)

# clear 清空序列(了解)
l1 = ['屌丝', '小白', '女神', '老师']
l1.clear()
print(l1)

#del 按照索引删除
l1 = ['屌丝', '小白', '女神', '老师','asfaf','agad']
del l1[2]
print(l1)
del l1[::2]     # 按照切片步长删除
print(l1)

#
# 按照索引改值
l1 = ['屌丝', '小白', '女神', '老师']
l1[0] = '男神'
print(l1)
#按照切片改
l1 = ['屌丝', '小白', '女神', '老师']
l1[2:] = 'afadgda'
print(l1)
#按照步长改
l1 = ['屌丝', '小白', '女神', '老师', 'test']
l1[::2] = 'abc'
print(l1)

#
l1 = ['屌丝', '小白', '女神', '老师', 'test']
for i in l1:
    print(i)

 

 

4.列表的嵌套

l1 = [1, 2, 'taibai', [1, 'alex', 3,]]
# 1, 将l1中的'taibai'变成大写并放回原处。
l1[2] = l1[2].upper()
print(l1)
# 2,给小列表[1,'alex',3,]追加一个元素,'老男孩教育'。
l1[3].append('老男孩教育')
print(l1)
# 3,将列表中的'alex'通过字符串拼接的方式在列表中变成'alexsb
l1[3][1] += 'sb'
print(l1)

 

5.元组(了解)

只读列表。存大量的数据,可以索引,切片(步长), (100, '太白', True, [1, 2, 3])
tu = (100, '太白', True, [1, 2, 3])
tu[1] = 'aa'   #不能修改

结果
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
Traceback (most recent call last):
  File "D:\pythonProject\python3\day10\s1.py", line 2, in <module>
    tu[1] = 'aa'
TypeError: 'tuple' object does not support item assignment



tu = (100, '太白', True, [1, 2, 3])
tu[3][1] = 'aa'
print(tu)


结果:
D:\pythonProject\python3\venv\Scripts\python.exe D:\pythonProject\python3\day10\s1.py 
(100, '太白', True, [1, 'aa', 3])

6.range

类似于列表,自定制数字范围的数字列表
li = range(9)
print(li)
print(list(li))
for i in li:
    print(i)

# 步长
for i in range(0,10,2):
    print(i)

for i in range(10,1,-1):
    print(i)

 

7.列表常用的方法

count 统计元素在列表中出现的次数

lis = [1,2,3,12,1,2,3,456,1]
print(lis.count(1))


index(方法用于从列表中找出某个值第一个匹配项的索引位置)
lis = [1,2,3,12,1,2,3,456,1]
print(lis.index(1))

sort (方法用于在原位置对列表进行排序)

lis = [1,2,3,12,1,2,3,456,1]
lis.sort()
print(lis)


结果:
[1, 1, 1, 2, 2, 3, 3, 12, 456]

reverse (方法将列表中的元素反向存放)。

lis = [1,2,3,12,1,2,3,456,1]
lis.reverse()
print(lis)

结果:
[1, 456, 3, 2, 1, 12, 3, 2, 1]

 

 

 三、今日总结

1. 列表的所有的方法全部都要记住,背过(除去了解的)append insert extend pop remove del clear 。
2. 列表的嵌套一定要会。
 

 练习题:

# Day03作业及默写

# 有变量name = " aleX leNb " 完成如下操作:
name = "aleX leNb"

# 移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
# 判断 name 变量是否以 "al" 开头,并输出结果
print(name.startswith('al'))
# 判断name变量是否以"Nb"结尾,并输出结果
print(name.endswith('Nb'))
# 将 name 变量对应的值中的 所有的"l" 替换为 "p",并输出结果
print(name.replace('l','p'))
# 将name变量对应的值中的第一个"l"替换成"p",并输出结果
print(name.replace('l','p',1))
# 将 name 变量对应的值根据 所有的"l" 分割,并输出结果。
print(name.split('l'))
# 将name变量对应的值根据第一个"l"分割,并输出结果。
print(name.split('l',1))
# 将 name 变量对应的值变大写,并输出结果
print(name.upper())
# 将 name 变量对应的值变小写,并输出结果
print(name.lower())
# 判断name变量对应的值字母"l"出现几次,并输出结果
print(name.count('l'))
# 如果判断name变量对应的值前四位"l"出现几次,并输出结果
print(name.count('l',0,3))
# 请输出 name 变量对应的值的第 2 个字符?
print(name[1])
# 请输出 name 变量对应的值的前 3 个字符?
print(name[:3])
# 请输出 name 变量对应的值的后 2 个字符?
print(name[-2:])
# 2.有字符串s = "123a4b5c"
s = "123a4b5c"
# 通过对s切片形成新的字符串s1,s1 = "123"
print(s[0:3])
# 通过对s切片形成新的字符串s2,s2 = "a4b"
print(s[3:6])
# 通过对s切片形成新的字符串s3,s3 = "1345"
print(s[:7:2])
# 通过对s切片形成字符串s4,s4 = "2ab"
print(s[1:6:2])
# 通过对s切片形成字符串s5,s5 = "c"
print(s[-1])
# 通过对s切片形成字符串s6,s6 = "ba2"
print(s[-3:0:-2])
print(s[-3::-2])
# 使用while和for循环分别打印字符串s="asdfer"中每个元素。
s="asdfer"
for i in s:
    print(i)
# 使用for循环对s="asdfer"进行循环,但是每次打印的内容都是"asdfer"。
s = "asdfer"
for i in s:
    print(s)

# 使用for循环对s="abcdefg"进行循环,每次打印的内容是每个字符加上sb, 例如:asb, bsb,csb,...gsb。
s="abcdefg"
for i in s:
    print(i + 'sb')


# 使用for循环对s="321"进行循环,打印的内容依次是:"倒计时3秒","倒计时2秒","倒计时1秒","出发!"。
s = "321"
for i in s:
    msg = "倒计时{0}秒"
    print(msg.format(i))
print("出发!")

# 实现一个整数加法计算器(多个数相加):
# 如:content = input("请输入内容:") 用户输入:5+9+6 +12+ 13,然后进行分割再进行计算。
# content = input("请输入内容:")
# lis = content.split('+')
# num_sum = 0
# for i in lis:
#     resut = int(i.strip())
#     num_sum += resut
# print("等于:",num_sum)


# 计算用户输入的内容中有几个整数(以个位数为单位)。
# ​ 如:content = input("请输入内容:") # 如fhdal234slfh98769fjdla
# content = input("请输入内容:")
# cnt = 0
# for i in content:
#     if i.isdecimal():
#         cnt += 1
# print("整数有:",cnt)

# 选做题:写代码,完成下列需求:
# 用户可持续输入(用while循环),用户使用的情况:
# 输入A,则显示走大路回家,然后在让用户进一步选择:
# 是选择公交车,还是步行?
# 选择公交车,显示10分钟到家,并退出整个程序。
# 选择步行,显示20分钟到家,并退出整个程序。
# 输入B,则显示走小路回家,并退出整个程序。
# 输入C,则显示绕道回家,然后在让用户进一步选择:
# 是选择游戏厅玩会,还是网吧?
# 选择游戏厅,则显示 ‘一个半小时到家,爸爸在家,拿棍等你。’并让其重新输入A,B,C选项。
# 选择网吧,则显示‘两个小时到家,妈妈已做好了战斗准备。’并让其重新输入A,B,C选项。
# while 1:
#     content = input("请输入回家方式(A/B/C):")
#     if content.upper() == 'A':
#         print("走大路回家")
#         vehicle = input("请输入交通工具(1/2):")
#         if int(vehicle) == 1:
#             print("选择公交车,显示10分钟到家")
#             break
#         else:
#             print("选择步行,显示20分钟到家")
#             break
#     elif content.upper() == 'B':
#         print("走小路回家")
#         break
#     else:
#         print("绕道回家")
#         msg = input("请输入游戏厅或者网吧(1/2):")
#         if int(msg) == 1:
#             print("选择游戏厅,一个半小时到家,爸爸在家,拿棍等你")
#         else:
#             print("选择网吧,两个小时到家,妈妈已做好了战斗准备")



# **选做题:**判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海 ⾃来⽔来⾃海上
# content = input("请输入内容:")
# if content == content[::-1]:
#     print("输入的内容是回文")

# 制作趣味模板程序需求:等待⽤户输⼊名字、地点、爱好,根据⽤户的名字和爱好进行任意现实 如:敬爱可亲的xxx,最喜欢在xxx地⽅⼲xxx
# name = input("请输入姓名:")
# city = input("请输入地点:")
# hobby = input("请输入爱好:")
# msg = "敬爱可亲的{0},最喜欢在{1}地⽅⼲{2}"
# print(msg.format(name,city,hobby))

 

 
# 1.写代码,有如下列表,按照要求实现每一个功能
li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
# 计算列表的长度并输出
#print(len(li))
# 列表中追加元素"seven",并输出添加后的列表
# li.append('seven')
# print(li)
# 请在列表的第1个位置插入元素"Tony",并输出添加后的列表
# li.insert(0,'Tony')
# print(li)
# 请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
# li[1] = 'Kelly'
# print(li)
# 请将列表l2=[1,"a",3,4,"heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
# l2=[1,"a",3,4,"heart"]
# li.extend(l2)
# print(li)
# 请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
# s = "qwert"
# li.extend(s)
# print(li)
# 请删除列表中的元素"ritian",并输出添加后的列表
# li.remove('ritian')
# print(li)
# 请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
# li.pop(1)
# print(li)
# 请删除列表中的第2至4个元素,并输出删除元素后的列表
# del li[1:4]
# print(li)

# 2.写代码,有如下列表,利用切片实现每一个功能
li = [1, 3, 2, "a", 4, "b", 5,"c"]
# 通过对li列表的切片形成新的列表l1,l1 = [1,3,2]
# l1 = li[0:3]
# print(l1)
# 通过对li列表的切片形成新的列表l2,l2 = ["a",4,"b"]
# l2 = li[3:6]
# print(l2)
# 通过对li列表的切片形成新的列表l3,l3 = ["1,2,4,5]
# l3 = li[::2]
# print(l3)
# 通过对li列表的切片形成新的列表l4,l4 = [3,"a","b"]
# l4 = li[1:6:2]
# print(l4)
# 通过对li列表的切片形成新的列表l5,l5 = ["c"]
# l5 = li[-1:]
# print(l5)
# 通过对li列表的切片形成新的列表l6,l6 = ["b","a",3]
# l6 = li[-3::-2]
# print(l6)

# 3.写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 30, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
# 将列表lis中的"tt"变成大写(用两种方式)。
# lis[3][2][1][0] = lis[3][2][1][0].upper()
# print(lis)
# 将列表中的数字3变成字符串"100"(用两种方式)。
# lis[3][2][1][1] = str(lis[3][2][1][1] + 97)
# print(lis)
# 将列表中的字符串"1"变成数字101(用两种方式)。
# lis[3][2][1][2] = int(lis[3][2][1][2] + '01')
# print(lis)

# 4.请用代码实现:
li = ["alex", "wusir", "taibai", 2]
# 利用下划线将列表的每一个元素拼接成字符串"alex_wusir_taibai"
# l1 = li[0:3]
# print('_'.join(l1))

# 5.利用for循环和range打印出下面列表的索引。
# li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
# num = 0
# for i in li:
#     print(num)
#     num += 1


# 6.利用for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
# li = []
# for i in range(100):
#     if i % 2 == 0:
#         li.append(i)
# print(li)

# 7.利用for循环和range 找出50以内能被3整除的数,并将这些数插入到一个新列表中。
# li = []
# for i in range(50):
#     if i % 3 == 0:
#         li.append(i)
# print(li)

# 8.利用for循环和range从100~1,倒序打印。
# for i in range(100,0,-1):
#     print(i)

# 9.利用for循环和range从100~10,倒序将所有的偶数添加到一个新列表中,然后对列表的元素进行筛选,将能被4整除的数留下来。
# li = []
# for i in range(100,9,-1):
#     if i % 2 ==0:
#         li.append(i)
# for i in li:
#     if i % 4 != 0:
#         li.remove(i)
# print(li)

# 10.利用for循环和range,将1-30的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成*。
# li = list(range(1,31))
# for i in range(len(li)):
#     if li[i] % 3 == 0:
#         li[i] = '*'
# print(li)

# 11.查找列表li中的元素,移除每个(for)元素的空格 strip,
# 并找出以"A"或者"a"开头startswith,并以"c"结尾的所有元素 endswith,并添加到一个新列表new_l = []中,最后循环for 打印这个新列表。
# li = ["TaiBai ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc", 'a c', 'adfdfdgdc']
# new_l = []
# for i in range(len(li)):
#     li[i] = li[i].strip()
#     if li[i].upper().startswith('A') and li[i].endswith('c'):
#         new_l.append(li[i])
# print(new_l)
# for i in new_l:
#     print(i)



# 12.开发敏感词语过滤程序,提示用户输入input评论内容,如果用户输入的内容中包含特殊的字符:
# 敏感词列表 li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
# 则将用户输入的内容中的敏感词汇替换成等长度的*(苍老师就替换***),并添加到一个列表中;
# 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
# li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
# comment = input("请输入评论内容:")
# comment_lis = []
# for i in li:
#     if i in comment:
#         comment = comment.replace(i,'*' * len(i))
# comment_lis.append(comment)
# print(comment_lis)




# 13.有如下列表(选做题)
# li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
# # 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
# for i in li:
#     if type(i) == list:
#         for j in i:
#             print(j)
#     else:
#         print(i)

# 明日默写内容
# 将列表的增删改查不同的方法全部写出来,
# 增:
# append  在末尾增加
# insert  根据索引增加
# extend  迭代着增加
# 删:
# pop     根据索引删除,默认最后以为
# remove  根据元素删除,删除首个
# del     更加索引或者切片删除
# 改:     直接根据切片或者所有修改
# 查:     直接根据切片或者所有修改

# 例如:增:有三种,append:在后面添加。Insert按照索引添加,
# expend:迭代着添加。

 

          
        
  
posted @ 2022-11-08 15:15  小白_XiaoBai  阅读(33)  评论(0)    收藏  举报