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
posted @ 2018-06-24 17:46  大海无量,苦海无边  阅读(141)  评论(0编辑  收藏  举报