python基础 day4 列表、元组、range
一、列表初识 list
-
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据。
-
32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。
-
列表是有序的,有索引值,可切片,方便取值。
1.列表的索引、切片、步长
li = [100, 'jason', False, [1, 2, 3]]
# 索引
print(li[0], type(li[0]))
print(li[1], type(li[1]))
print(li[-1], type(li[-1]))
# 切片
print(li[1:3])
print(li[:2])
print(li[1:])
# 步长
print(li[::2])
print(li[::-2])
2.列表的增删改查
-
增
-
- append 追加
l1 = ['jason', '杨森', '真哥', '大富'] l1.append('臭弟弟') print(l1)
-
- insert 插入
l1 = ['jason', '杨森', '真哥', '大富'] l1.insert(1, 'aloha') print(l1)
-
- extend 迭代追加
l1 = ['jason', '杨森', '真哥', '大富'] l1.extend('abcd') print(l1) l1.extend(['aloha', 'fuck']) print(l1)
-
-
删
-
- pop 按照索引位置删除
l1 = ['jason', '杨森', '真哥', '大富'] l1.pop(1) print(l1) print(l1.pop(-2)) # 返回值就是删除的元素 print(l1) l1.pop() # 默认删除列表中最后一个元素 print(l1)
-
- remove 指定元素删除,如果由重名元素,默认删掉从左至右第一个
l1 = ['jason', '杨森', '真哥', '大富'] l1.remove('真哥') print(l1)
-
- clear 清空列表
l1 = ['jason', '杨森', '真哥', '大富'] l1.clear() print(l1)
-
- del 列表和字典通用的方法
l1 = ['jason', '杨森', '真哥', '大富'] del l1[2] # 按照索引删除 l2 = ['jason', '杨森', '真哥', '大富', 'aloha', 'carly'] del l2[::2] # 按照切片(步长)删除 print(l2)
-
-
改
l1 = ['jason', '杨森', '真哥', '大富']
l1[1] = '臭屌丝' # 按照索引修改
print(l1)
l1[::2] = ['hhh', 'aloha'] # 按照切片(步长)去改
print(l1)
- 查
l1 = ['jason', '杨森', '真哥', '大富']
for i in l1:
print(i)
3.列表的嵌套(重点)
引入:
l1 = [1, 2, 'carly', [1, 'jason', 3]]
# 1.将l1中的'carly'变成大写并放回原处
l1[2] = l1[2].upper()
print(l1)
# 2.给小列表[1, 'jason', 3]追加一个元素,'python'
l1[-1].append('python')
print(l1)
# 3.将列表中的'jason'通过字符拼接的方式在列表中变成jasonnb
l1[-1][1] += 'nb'
print(l1)
练习:
lis = [2, 3, "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[1] = '100'
lis[3][2][1][1] = '100'
print(lis)
# 将列表中的字符串"1"变成数字101(用两种方式)。
lis[3][2][1][2] = 101
print(lis)
二、元组 tuple (了解)
只读列表,可以存大量的数据,可以索引,切片(步长)
tu = (1, 2, 'carly', [1, 'jason', 3])
元组中嵌套的列表可以任意增删改查
tu = (1, 2, 'carly', [1, 'jason', 3])
tu[-1].pop(1)
print(tu)
tu[-1].remove(1)
print(tu)
tu[-1].clear()
print(tu)
tu[-1].append(1)
tu[-1].insert(0, 'jason')
tu[-1].extend([3, 'carly'])
print(tu)
三、range
类似于列表,子定制数字范围的数字列表
r = range(10)
print(r)
for i in r:
print(i)
for i in range(1, 10):
print(i)
for i in range(1, 10, 2):
print(i)
l1 = ['jason', '杨森', '真哥', '大富']
for i in range(len(l1)):
print(i)
四、练习
练习一
敏感词检测
开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:敏感词列表 list1 = ["葵", "明日花绮罗", "三上悠亚", "天使萌"]则将用户输入的内容中的敏感词汇替换成等长度的(三上悠亚就替换***),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
list1 = ["葵", "明日花绮罗", "三上悠亚", "天使萌"]
user_talk = []
while 1:
s1 = input('请输入评论内容:')
for i in list1:
if i in s1:
s1 = s1.replace(i, len(i) * '*')
user_talk.append(s1)
print(user_talk)
练习二
for 循环打印嵌套列表
# 循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
list1 = [1, 2, 3, "jason", [4, 5, 6, "carly"], 7, "love"]
for i in list1:
if type(i) == list:
for j in i:
print(j)
else:
print(i)
练习三
字符串反转
#方法一:
name = 'yangsen'
temp = []
name2 = ''
for i in name :
temp.insert(0, i)
for j in temp:
name2 += j
print(name2)
#方法二
print(name[::-1])
练习四
列表去重
list1 = [1, 2, 2, 3, 3, 3, 3, 3, 3, 4, 5, 5, 5, 6]
list2 = []
for i in list1:
if i not in list2:
list2.append(i)
print(list2)
练习五
python打印乘法口诀表
for i in range(1, 10):
for j in range(1, i+1):
print('{}*{}={}\t'.format(j, i, i*j), end='') # end=''代表以''结尾,''为空代表不换行
print()