1、在学习列表之前,重新复习一下编码的规则
回顾编码解析:
(1)ASCII码:
由字母、数字以及特殊字符构成的;
每一个字符为一个字节,1字节byte=8位bit
(2)unicode:又称万国码,由字母、数字、特殊字符和中文构成,每个字符都是32位:4个字节,包括1一个英文字母是4个字节
(3)utf-8:unicode的升级版,由字母、数字、特殊字符和中文构成
字母、数字、特殊字符:每个字符1个字节
中文24位 :每个字符3个字节
(4)gbk :由ascii码演变过来,只在中国用
字母、数字、特殊字符:1个字节
中文16位 :2个字节
window系统的默认编码方式GBK
=============================list(列表的操作)=====================================
1、列表的元素(方法同获取字符串元素)
例子:
li = ['alex',[1,2,3],'江河','女神','长江']
#获取列表li的第一个元素
li_1 = li[0]
print(li_1)
#通过切片的形式获取列表li部分元素
li_part = li[0:3]
print(li_part)
#获取列表倒序
li_part = li[-1:-3:-1]
li_part_1 = li[-1::-1]
print(li_part)
print(li_part_1)
2、列表元素的增加
例子:
#在列表末尾添加新的元素,使用方法 append('元素')
li.append('li')
print(li)
#通过索引在列表的任意位置添加元素 insert(index,object)
li.insert(0,'ll')
print(li)
在列表中添加新的值,持续不断的添加,录入q退出
#在列表中添加新的值,持续不断的添加,录入q退出
while 1:
user_input = input('用户输入新的元素值:')
if str(user_input.lower()) != 'q':
li.append(user_input)
print(li)
else:
print(li)
break
(1)迭代式添加,如果是字符串,每个字符是一个元素;如果是列表可以添加多个元素
li = ['alex',[1,2,3],'江河','女神','长江']
# li.extend('北大青鸟')
print(li) # ['alex', [1, 2, 3], '江河', '女神', '长江', '北', '大', '青', '鸟']
li.extend(['北大','青鸟']) # 添加列表可以一次添加多个元素
print(li) #['alex', [1, 2, 3], '江河', '女神', '长江', '北大', '青鸟']
3、列表元素的删除
(1)pop()
语法:
列表名称.pop() # 默认删除列表最后一个元素
可以删除指定索引的元素
删除的元素可以赋值给变量
li = ['alex',[1,2,3],'江河','女神','长江']
li_1 = li.pop()
print(li)
print(li_1)
#['alex', [1, 2, 3], '江河', '女神']
#长江
(2)remove()
语法:
列表名称.remover() # 按照列表中的元素删除,删除元素无返回值
li = ['alex',[1,2,3],'江河','女神','长江']
li.remove('江河')
print(li)
(3)clear()
语法:
列表名称.clear() # 清空列表
li = ['alex',[1,2,3],'江河','女神','长江']
li.clear()
print(li) # []
(4)del
语法:
del 列表名称 # 删除列表
del 列表名称[0:3] # 删除列表的部分元素
li = ['alex',[1,2,3],'江河','女神','长江']
del li[0:3] # 删除列表部分元素
del li # 删除列表
print(li)
4、列表元素的修改
(1)语法:列表名称.[0] = '修改后的元素值'
li = ['alex',[1,2,3],'江河','女神','长江']
li[0] = 'll'
print(li)
(2)切片修改:
如果修改的值是字符串,每一个字符是一个元素,如果添加的字符少于修改元素,则修改成添加的元素,剩余的未修改索引元素自动删除,如果多余修改的索引,则增加添加的元素
li = ['alex',[1,2,3],'江河','女神','长江']
li[0:2] = 'a'
print(li)
#['a', '江河', '女神', '长江']
li = ['alex',[1,2,3],'江河','女神','长江']
li[0:2] = 'abcde'
print(li)
#['a', 'b', 'c', 'd', 'e', '江河', '女神', '长江']
如果修改成的值是列表,则按照列表元素添加修改,其他同上
li = ['alex',[1,2,3],'江河','女神','长江']
li[0:2] = ['werw','1212','qwqwqw','sdsd']
print(li)
#['werw', '1212', 'qwqwqw', 'sdsd', '江河', '女神', '长江']
5、列表元素的查找
li = ['alex',[1,2,3],'江河','女神','长江']
#查找列表的每一个元素
for i in li:
print(i)
li = ['alex',[1,2,3],'江河','女神','长江']
#切片查询列表的部分元素
l = li[0:3]
print(l)
li = ['alex',[1,2,3],'江河','女神','长江']
# 查询列表的长度(公共方法包括:列表、字符串、字典、元组)
print(len(li))
#5
(2)查看列表中某一个元素出现的次数,包括列表,字符串,字典,元组
li = ['alex',[1,2,3],'1','江河','1','女神','长江','1']
num = li.count('1')
print(num)
(3)列表中通过元素找索引的方法:index('元素',开始查找的索引,结束查找的索引)
li = ['alex',[1,2,3],'1','江河','1','女神','长江','1']
index_1 = li.index('1',5)
print(index_1)
(4)列表元素正向排序的方法:sort() # 必须是数字
li = [1,3,4,2,7,9,14,10]
li.sort() #正向排序
print(li)
li.sort(reverse=True) #倒序
print(li)
(5)使用冒泡法排序的方法排序
def li_sort(li):
for j in range(len(li)-1):
for i in range(len(li)-1-j):
if li[i]>li[i+1]:
li[i],li[i+1] = li[i+1],li[i]
return li
li_1 = li_sort(li)
print(li_1)
(6)列表元素反转reverse()
li = ['alex',[1,2,3],'1','江河','1','女神','长江','1']
li.reverse() # 列表元素反转
print(li)
6、列表的嵌套
(1)获取列表元素中列表的某个值
li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
#取列表中11
li_11 = li[4][0]
print(li_11)
(2)修改列表元素首字母大写方法:capitalize()
li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
li[1] = li[1].capitalize()
print(li[1]) # Pay
(3)列表元素中替换字符串的方法:replace()
replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次
li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
li[4][3] = li[4][3].replace('good','江河')
print(li)
# ['beautiful', 'pay', 1, 2, [11, 23, 25, '江河'], 16]
(4)元组为只读列表,可循环查询,可切片(儿子不能修改,孙子能改)
li = ('beautiful','pay',1,2,[11,23,25,'good'],16)
li[4][1] = '列表'
print(li)
# ('beautiful', 'pay', 1, 2, [11, '列表', 25, 'good'], 16)
li = ('beautiful','pay',1,2,[11,23,25,'good'],16)
li[4] = '列表'
print(li)
# 报错
# TypeError: 'tuple' object does not support item assignment
(5)列表转成字符串连接list ---> str 用join()方法(注意:列表必须是纯字符串)
li = ['1212','江河']
s = ''.join(li)
print(s)
(6)字符串转换成列表str(str---->list)用split(),同时也可以截取字符串
s = "asd 江 河"
s1 = s.split() # 转换成列表
s2 = s.split('d')[0] # 截取部分字符串
print(s1) # ['asd', '江', '河']
print(s2) # as
(7)range(start, stop[, step])函数可以创建一个整数列表,一般用在for循环中,start默认是0,stop结束,不包括
#for循环
for i in range(0,10,2):
print(i)
for i in range(10,0,-2): # 倒着打印
print(i)
#通过使用rang来打印列表中列表元素
li = ['beautiful','pay',1,2,[11,23,25,'good'],16]
for i in range(len(li)):
if type(li[i]) == list:
for i in li[i]:
print(i)
else:
print(li[i])
(8)input:计算用户输入的内容input中索引为奇数and并且对应的元素为数字的个数isdigt()(没有则个数为0)
while 1:
count = 0
number1 = input('请输入数字:')
for i in range(len(number1)):
if i%2 != 0 and number1[i].isdigit():
count += 1
print(count)
=======================练习==============================
1、lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
1)将列表lis中的’tt’变成大写(用两种方式)。
lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']
# lis[3][2][1][0] = 'TT'
lis[3][2][1][0] = lis[3][2][1][0].upper()
print(lis)
2)将列表中的数字3变成字符串’100’(用两种方式)。
lis[1] = '100'
lis[3][2][1][1] = '100'
print(lis)
3、开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符: 敏感词列表 li = ["李老师","东京",”兰花”,”衣服”] 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中; 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。(有问题?)
li_replace = []
while 1:
input_1 = input("请输入")
li_1 = ["李老师", "东京",'兰花','衣服']
for i in li_1:
if i in input_1:
input_1 = input_1.replace(i,"***")
li_replace.append(input_1)
print(li_replace)