python学习内容.04
本节主要内容:
1. 列表 2. 列表的增删改查 3. 列表的嵌套 4. 元组和元组嵌套 5. range
一. 列表 1.1 列表的介绍 列表是python的基础数据类型之一 ,其他编程语言也有类似的数据类型. 比如JS中的数组, java中的数组等等. 它是以[ ]括起 来, 每个元素用' , '隔开而且可以存放各种数据类型: lst = [1, '哈哈', "吼吼", [1,8,0,"百度"], ("我","叫", "元", "组"), "abc", {"我叫":"dict字典"},{"我叫集合","集合"}] 列表相比于字符串. 不仅可以存放不同的数据类型. 而且可以存放大量的数据. 32位python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.而且列表是有序的(按照你保存的顺序),有索引, 可以切片方便取值.
2.2 列表的索引和切片 列表和字符串一样也拥有索引: lst = ["麻花藤", "王剑林", "马芸", "周鸿医", "向华强"] print(lst[0]) # 获取第一个元素 print(lst[1]) print(lst[2])
lst[3] = "流动强" # 注意. 列表是可以发生改变的. 这里和字符串不一样 print(lst) # ['麻花藤', '王剑林', '马芸', '流动强', '向华强']
s0 = "向华强" s0[1] = "美" # TypeError: 'str' object does not support item assignment 不允许改变 print(s0) 列表的切片: lst = ["麻花藤", "王剑林", "马芸", "周鸿医", "向华强"] print(lst[0:3]) # ['麻花藤', '王剑林', '马芸'] print(lst[:3]) # ['麻花藤', '王剑林', '马芸']
print(lst[1::2]) # ['王剑林', '周鸿医'] 也有步长 print(lst[2::-1]) # ['马芸', '王剑林', '麻花藤'] 也可以倒着取
print(lst[-1:-3:-2]) # 倒着带步长 二. 列表的增删改查
1. 增, 注意, list和str是不一样的. lst可以发生改变. 所以直接就在原来的对象上进行了操作
lst = ["麻花藤", "林俊杰", "周润发", "周芷若"]
print(lst) lst.append("wusir") print(lst)
lst = [] while True: content = input("请输入你要录入的员工信息, 输入Q退出:") if content.upper() == 'Q': break lst.append(content) print(lst)
lst = ["麻花藤", "张德忠", "孔德福"] lst.insert(1, "刘德华") # 在1的位置插入刘德华. 原来的元素向后移动一位 print(lst)
# 迭代添加 lst = ["王志文", "张一山", "苦海无涯"] lst.extend(["麻花藤", "麻花不疼"]) print(lst)
2. 删除
pop, remove, clear, del lst = ["麻花藤", "王剑林", "李嘉诚", "王富贵"] print(lst) deleted = lst.pop() # 删除最后一个 print("被删除的", deleted) print(lst)
el = lst.pop(2) # 删除2号元素 print(el) print(lst)
lst.remove("麻花藤") # 删除指定元素 print(lst) # lst.remove("哈哈") # 删除不存在的元素会报错 # # print(lst)
lst.clear() # 清空list print(lst)
# 切片删除 del lst[1:3] print(lst)
3. 修改
索引切片修改 # 修改 lst = ["太白", "太黑", "五色", "银王", "日天"] lst[1] = "太污" # 把1号元素修改成太污 print(lst)
lst[1:4:3] = ["麻花藤", "哇靠"] # 切片修改也OK. 如果步长不是1, 要注意. 元素的个数 print(lst)
lst[1:4] = ["李嘉诚个龟儿子"] # 如果切片没有步长或者步长是1. 则不用关心个数 print(lst)
4. 查询, 列表是一个可迭代对象, 所以可以进行for循环
for el in lst: print(el)
5. 其他操作
lst = ["太白", "太黑", "五色", "银王", "日天", "太白"] c = lst.count("太白") # 查询太白出现的次数 print(c)
lst = [1, 11, 22, 2] lst.sort() # 排序. 默认升序 print(lst) lst.sort(reverse=True) # 降序 print(lst)
lst = ["太白", "太黑", "五色", "银王", "日天", "太白"] print(lst) lst.reverse() print(lst)
l = len(lst) # 列表的长度 print(l)
三. 列表的嵌套 采用降维操作.一层一层的看就好.
lst = [1, "太白", "wusir", ["马虎疼", ["可口可乐"], "王剑林"]]
# 找到wusir print(lst[2])
# 找到太白和wusir print(lst[1:3])
# 找到太白的白字 print(lst[1][1])
# 将wusir拿到. 然后首字母大写. 再扔回去 s = lst[2] s = s.capitalize() lst[2] = s print(lst) # 简写 lst[2] = lst[2].capitalize() print(lst)
# 把太白换成太黑 lst[1] = lst[1].replace("白", "黑") print(lst)
# 把马虎疼换成马化疼
lst[3][0] = lst[3][0].replace("虎", "化") print(lst[3][0])
lst[3][1].append("雪碧") print(lst)
四. 元组和元组嵌套 元组: 俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之一, 用小括号括起来, 里面可以放任何数据类型 的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能改.
tu = (1, "太白", "李白", "太黑", "怎么黑") print(tu)
print(tu[0]) print(tu[2]) print(tu[2:5]) # 切片之后还是元组
# for循环遍历元组 for el in tu: print(el)
# 尝试修改元组 # tu[1] = "马虎疼" # 报错 'tuple' object does not support item assignment
tu = (1, "哈哈", [], "呵呵") # tu[2] = ["fdsaf"] # 这么改不行
tu[2].append("麻花藤") # 可以改了. 没报错 tu[2].append("王剑林") print(tu) 关于不可变, 注意: 这里元组的不可变的意思是子元素不可变. 而子元素内部的子元素是可以变, 这取决于子元素是否是可变对 象.
元组中如果只有一个元素. 一定要添加一个逗号, 否则就不是元组
tu = (1,) print(type(tu)) 元组也有count(), index(), len()等方法. 可以自己测试使用
五. range range可以帮我们获取到一组数据. 通过for循环能够获取到这些数据.
for num in range(10): print(num)
for num in range(1, 10, 2): print(num)
for num in range(10, 1, -2): # 反着来, 和切片一样 print(num)
作业内容:
1,写代码,有如下列表,按照要求实现每一个功能
li = ["alex", "WuSir", "ritian", "barry", "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[1]="Kelly"
5)请将列表l2 = [1, "a", 3, 4, "heart"]的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
l2 = [1, "a", 3, 4, "heart"]
li.extend([l2])
print(li)
6)请将字符串s = "qwert"的每一个元素添加到列表li中,一行代码实现,不允许循环添加。
s = "qwert"
li.extend([s])
print(li)
7)请删除列表中的元素"eric", 并输出添加后的列表
li.remove("eric")
print(li)
8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
s=li.pop(2)
print(s)
print(li)
9)请删除列表中的第2至4个元素,并输出删除元素后的列表
del li[2:4]
print(li)
10)请将列表所有得元素反转,并输出反转后的列表
li.reverse()
print(li)
11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
print(li.count("alex")) 1次
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"]
l1=li[3:6]
print(l1)
3)通过对li列表的切片形成新的列表l3, l3 = ["1,2,4,5]
l1=li[0::2]
print(l1)
4)通过对li列表的切片形成新的列表l4, l4 = [3, "a", "b"]
l1=li[1:6:2]
print(l1)
5)通过对li列表的切片形成新的列表l5, l5 = ["c"]
l1=li[7]
print(list(l1))
6)通过对li列表的切片形成新的列表l6, l6 = ["b", "a", 3]
l1=li[5:0:-2]
print(l1)
3, 写代码,有如下列表,按照要求实现每一个功能。
lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
1)将列表lis中的"tt"变成大写(用两种方式)。
01..lis[3][2][1][0]=lis[3][2][1][0].upper()
print(lis)
02.lis[3][2][1][0]=lis[3][2][1][0].swapcase()
print(lis)
2)将列表中的数字3变成字符串"100"(用两种方式)。
01.lis[1]="100"
lis[3][2][1][1]="100"
print(lis)
02.lis=str(lis).replace("3","'100'")
print(lis)
3)将列表中的字符串"1"变成数字101(用两种方式)。
01:'''lis[3][2][1][2]=101
print(lis)
'''
02:lis=str(lis).replace("'1'","101")
print(lis)
4, 请用代码实现:li = ["alex", "eric", "rain"]
利用下划线将列表的每一个元素拼接成字符串"alex_eric_rain"
li[0:3]=["alex_eric_rain"]
print(li)
5,利用for循环和range打印出下面列表的索引。li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
a=len(li)
for li in range(0,a):
print(li)
6,利用for循环和range找出100以内所有的偶数并将这些偶数插入到一个新列表中。
for s in range(2,100,2):
a = list(range(2, 100, 2))
print(a)
7,利用for循环和range
找出50以内能被3整除的数,并将这些数插入到一个新列表中。
for s in range(3,50,3):
a=list(range(3,50,3))
print(a)
8,利用for循环和range从100
~1,倒序打印。
for s in range(100,1,-1):
a=list(range(100,1,-1))
a.reverse()
print(a),
for lis in range(100,10,-2):
9,利用for循环和range从100~10,倒序将所有的偶数添加到一个新列表中然后对列表的元素进行筛选,将能被4整除的数留下来。
a=list(range(100,10,-2))
index=0
while index<len(a):
if a[index]%4==0:
print(a[index])
index=index+1
else:
index=index+1
10,利用for循环和range,将1 - 30
的数字一次添加到一个列表中,并循环这个列表,将能被3整除的数改成 *。
for lis in range(1,30):
lis=list(range(1,30))
index=0
while index<len(lis):
if lis[index]%3==0:
print(lis[index])
index=index+1
else:
index=index+1
11,查找列表li中的元素,移除每个元素的空格,并找出以"A"或者"a"开头,并以"c"结尾的所有元素,并添加到一个新列表中,
最后循环打印这个新列表。li = ["TaiBai ", "alexC", "AbC ", "egon", " riTiAn", "WuSir", " aqc"]
b=[]
for a in li:
s=a.strip()
if (s.startswith("A")or s.startswith("a"))and s.endswith("c"):
b.append(s)
for x in b:
print(x)
12,开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:
敏感词列表
li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
则将用户输入的内容中的敏感词汇替换成等长度的 *(苍老师就替换 ** *),并添加到一个列表中;如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
13,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循环打印列表中的每个元素,遇到列表则再循环打印出它里面的元素。
我想要的结果是:
1
3
4
"alex"
3
7,
8
"taibai"
5