巨蟒python全栈开发-第4天 列表&元组&range
今日内容大纲
1. 什么是列表
定义: 能装对象的对象
在python中使用[]来描述列表, 内部元素用逗号隔开. 对数据类型没有要求
列表存在索引和切片. 和字符串是一样的.
2. 相关的增删改查操作(重点)
添加:
1. append() 追加
2. insert(位置, 元素) 插入指定元素到指定位置
删除:
1. pop(index) 根据索引删除
2. remove(元素) 根据元素删除
修改:
索引修改
lst[索引] = 元素
查询:
for循环.
3. 列表的嵌套
多个列表互相嵌套
4. 列表的其他操作
1. count() 计数
2. sort() 排序 reverse = True
3. reverse() 翻转
4. len() 求长度
5. 什么是元组
能装对象的对象. 不可变数据类型. 一旦确认好. 不可更改
只读列表
可以迭代
6. 元组的嵌套
和列表一样.都可以互相嵌套.
元组的不可变: 指向不变
7. range(重点, 难点)
只要会数数就行
range(n) [0, n)
range(m,n) [m, n)
range(m,n,p) [m,n) 每隔p取一个
8.# 重点
for i in range(len(lst)):
i 索引
lst[i] 元素
DAY4 -基础数据类型之(list,tuple)
本节主要内容:
1.列表
2.列表的增删改查
3.列表的嵌套
4.元组和元组的嵌套
5.range
一.列表
1.1 列表的介绍
列表是python的基础数据类型之⼀ ,其他编程语言也有类似的数据类型. 比如JS中的数 组, java中的数组等等. 它是以[ ]括起来, 每个元素用' , '隔开而且可以存放各种数据类型:
列表相比于字符串. 不仅可以存放不同的数据类型. 而且可以存放⼤量的数据. 32位 python可以存放: 536870912个元素, 64位可以存放: 1152921504606846975个元素.⽽且列 表是有序的(按照你保存的顺序),有索引, 可以切片方便取值.
2.2 列表的索引和切片
列表和字符串⼀样也拥有索引:
列表的切片:
⼆. 列表的增删改查
1. 增, 注意, list和str是不⼀样的. lst可以发生改变. 所以直接就在原来的对象上进行了操作
2. 删除 pop, remove, clear, del
3. 修改 索引切片修改
4. 查询, 列表是⼀个可迭代对象, 所以可以进⾏for循环
5. 其他操作
三. 列表的嵌套
采用降维操作,⼀层⼀层的看就好,就没有问题
四. 元组和元组嵌套 元组: 俗称不可变的列表.又被成为只读列表, 元组也是python的基本数据类型之⼀, 用小括号括起来, 里面可以放任何数据类型的数据, 查询可以. 循环也可以. 切片也可以. 但就是不能 改.
关于不可变, 注意: 这里元组的不可变的意思是子元素不可变,而子元素内部的子元素是可 以变, 这取决于子元素是否是可变对象. 元组中如果只有⼀个元素. ⼀定要添加⼀个逗号, 否则就不是元组
元组也有count(), index(), len()等⽅法. 可以自己测试使用
五. range range可以帮我们获取到⼀组数据. 通过for循环能够获取到这些数据.
今日作业:
1.写代码,有如下列表,按照要求实现每⼀个功能
- # li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- # 1)计算列表的⻓度并输出
- ''''''
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- print(len(li))
- '''
- # 2)列表中追加元素"seven",并输出添加后的列表
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.append('seven') #这部分不可以直接写在append里边
- print(li)
- '''
- # 3)请在列表的第1个位置插⼊元素"Tony",并输出添加后的列表
- '''#两种理解方式
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.insert(1,'Tony') #这部分不可以直接写在append里边
- print(li)
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.insert(0,'Tony')
- print(li)
- '''
- # 4)请修改列表第2个位置的元素为"Kelly",并输出修改后的列表
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li[1]='Kelly'
- print(li)
- '''
- # 5)请将列表l2=[1,"a",3,4,"heart"]的每⼀个元素添加到列表li中,⼀⾏代码实
- # 现,不允许循环添加。
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- l2=[1,"a",3,4,"heart"]
- li.extend(l2)
- print(li)
- '''
- # 6)请将字符串s = "qwert"的每⼀个元素添加到列表li中,⼀⾏代码实现,不
- # 允许循环添加。
- '''
- #重点复习,从最大值索引加1开始切片
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- s="qwert"
- li[5:]=s
- print(li)
- '''
- '''
- # 7)请删除列表中的元素"eric",并输出添加后的列表
- #这是错题不做
- '''
- # 8)请删除列表中的第2个元素,并输出删除的元素和删除元素后的列表
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- del li[1]
- print(li)
- '''
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.pop(1)
- print(li)
- '''
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.remove('WuSir')
- print(li)
- '''
- # 9)请删除列表中的第2⾄4个元素,并输出删除元素后的列表
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- del li[1:4]
- print(li)
- '''
- # 10)请将列表所有得元素反转,并输出反转后的列表
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- li.reverse()
- print(li)
- '''
- # 11)请计算出"alex"元素在列表li中出现的次数,并输出该次数。
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- s=li.count('alex')
- print(s)
- '''
3,写代码,有如下列表,按照要求实现每⼀个功能。
- # lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- # 1)将列表lis中的"tt"变成⼤写(⽤两种⽅式)。
- '''
- 方法一:
- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][0]='TT'
- print(lis)
- '''
- '''
- #方法二:
- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][0]=lis[3][2][1][0].upper()
- print(lis)
- '''
- # 2)将列表中的数字3变成字符串"100"(⽤两种⽅式)。
- '''#列表中有两个三,在这里我只实现一个3,做下实验
- # 方法一:
- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][1]='100'
- print(lis)
- '''
- '''
- #方法二:
- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][1]=str(lis[3][2][1][1]+97)
- print(lis)
- '''
- # 3)将列表中的字符串"1"变成数字101(⽤两种⽅式)。
- '''
#方法一- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][2]=int(lis[3][2][1][2])+100
- print(lis)
- '''
- """
- #方法二:
- lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
- lis[3][2][1][2]=101
- print(lis)
- """
- 4.请⽤代码实现:
- # li = ["alex", "eric", "rain"]
- # 利⽤下划线将列表的每⼀个元素拼接成字符串"alex_eric_rain"
- '''#重点记忆
- li = ["alex", "eric", "rain"]
- s=''
- for i in li:
- s+=i+'_'
- s=s.rstrip('_')
- print(s)
- '''
- '''
- li = ["alex", "eric", "rain"]
- li='_'.join(li)
- print(li)
- '''
- '''#while方法实现
- li = ["alex", "eric", "rain"]
- count = 0
- ll = ""
- while count <= len(li) -1:
- ll =ll + (li[count])+"_"
- count += 1
- print(ll.strip("_"))
- '''
- '''
- li = ["alex", "eric", "rain"]
- count = 0
- ll = ""
- while count <= len(li):
- ll =ll + (li[count])+"_"
- count += 1
- print(ll.strip("_"))
- '''
- 5.利⽤for循环和range打印出下⾯列表的索引。
- # li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- '''
- li = ["alex", "WuSir", "ritian", "barry", "wenzhou"]
- for i in range(len(li)):
- print(i,li[i])
- '''
6.利⽤for循环和range找出100以内所有的偶数并将这些偶数插⼊到⼀个新列表中。
- l=[]
- for i in range(101):
- if i%2==0:
- l.append(i)
- print(l)
7.利⽤for循环和range 找出50以内能被3整除的数,并将这些数插⼊到⼀个新列表中
- l7=[]
- for i in range(51):
- if i%3==0:
- l7.append(i)
- print(l7)
8.利⽤for循环和range从100~1,倒序打印。
- '''#正序打印1-100
- for i in range(1,101):
- print(i)
- '''
- '''
- #倒叙打印100-1//重点记忆//
- for i in range(100,0,-1):
- print(i)
- '''
9.利⽤for循环和range从100~10,倒序将所有的偶数添加到⼀个新列表中,然后对列表的元素进⾏筛选,将能被4整除的数留下来。
- l=[]
- k=[]
- for i in range(100,9,-2):
- l.append(i)
- print(l)
- for s in l:
- if s%4==0:
- k.append(s)
- print(k)
10.利⽤for循环和range,将1-30的数字⼀次添加到⼀个列表中,并循环这个列表,将能被3整除的数改成*。
- '''#重点记忆这道题,尤其是后半部分
- l1=[]
- for i in range(1,31):
- l1.append(i)
- print(l1)
- k=0
- for s in l1:
- if s%3==0:
- l1[k]="*"
- k+=1
- print(l1)
- '''
- 11,查找列表li中的元素,移除每个元素的空格,并找出以"A"或者"a"开头,并
以"c"结尾的所有元素,并添加到⼀个新列表中,最后循环打印这个新列表。
li = ["TaiBai ", “ale xC", “AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
- '''
- #重点记忆:前半部分,怎么去掉空格的,深入了解方法
- lk=[]
- s=0
- li = ["TaiBai ", "ale xC", "AbC ", "egon", " ri TiAn", "WuSir", " aqc"]
- while s<len(li):
- li[s]=li[s].replace(" ",'')
- s+=1
- print(li)
- for i in li:
- if (i.startswith('A') or i.startswith('a'))and i.endswith('c'):
- lk.append(i)
- print(lk)
- '''
- 12,开发敏感词语过滤程序,提示⽤户输⼊评论内容,如果⽤户输⼊的内容中
包含特殊的字符:
敏感词列表 li = ["苍⽼师", "东京热", "武藤兰", "波多野结⾐"]
则将⽤户输⼊的内容中的敏感词汇替换成等⻓度的*(苍⽼师就替换***),并添
加到⼀个列表中;如果⽤户输⼊的内容没有敏感词汇,则直接添加到上述的列
表中。
- '''
- #重点记忆,没做出来
- #字符串操作,利用列表的遍历作为条件,进行字符串的操作replace
- l=[]
- li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
- s=input('请输入评论内容:')
- for i in li:
- s=s.replace(i,len(i)*'*')
- l.append(s)
- print(l)
- '''
- '''
- l=[]
- li = ["苍老师", "东京热", "武藤兰", "波多野结衣"]
- while 1:
- s=input('请输入评论内容:')
- if s.upper()=='Q':
- break
- for i in li:
- s=s.replace(i,len(i)*'*')
- l.append(s)
- print(l)
- '''
- 13,有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。
我想要的结果是:
1
3
4
alex
3
7,
8
taibai
5
ritian
- '''
- 重点复习:没有思路,做这个题目
- #用==,而不是is
- #先判断列表
- #打印出来的结果没有引号
- li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
- for i in li:
- if type(i)==list:
- for ii in i:
- if type(ii) is str:
- print(ii.lower())
- else:
- print(ii)
- else:
- if type(i)==str:
- print(i.lower())
- else:
- print(i)
- '''
- 14. 把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
要带着⼈名录⼊, 例如: 张三_44
- '''#这道题目没做出来//第一版问题比较多
- sum=0
- l=[]
- while 1:
- k=input('按Q退出,其他键继续录入成绩:').upper()
- if k=='Q':
- break
- s=input('请输入名字和成绩例如,张三_44:')
- l.append(s)
- print(l)
- avg=input('按1求平均值,其他键退出:')
- if avg==1:
- for i in l:
- a,b=i.split('_')
- sum+=int(b)
- print('平均值是:',sum/len(l))
- '''
- '''#参考高手版本
- #思路整理:两个input合成1句话写
- #sum在下边用,直接写在下边
- #不用判断输入什么,只要第一个input有,输入Q,就直接退出
- l=[]
- while 1:
- k=input('按Q退出,或者请输入学生的姓名和成绩(姓名_成绩):').upper()
- if k=='Q':
- break
- l.append(k)
- print(l) #在这里可以清晰看到输入的哪些姓名_成绩
- sum=0
- for i in l:
- a,b=i.split('_') #这里用到了解包
- sum+=int(b)
- print('平均值是:',sum/len(l))
- '''
- '''#高手版本
- lst = []
- while 1:
- s = input("请输入学生的姓名和成绩(姓名_成绩),输入Q退出:")
- if s.upper() == "Q":
- break
- lst.append(s)
- sum = 0
- for i in lst:
- a = i.split("_")
- sum += int(a[1])
- print(sum / len(lst))
- '''
- 15. 敲七游戏. 从0开始数数. 遇到7或者7的倍数要在桌上敲⼀下. 编程来完成敲七
- '''#第一版
- s=int(input('请输入数字:'))
- cou=0
- l=[]
- for i in range(1,s+1):
- l.append(i)
- for i in l:
- if i%7==0:
- l[cou]='咣'
- cou+=1
- print(l)
- '''
- '''
- #第二版
- #思路:1.输入数字,定义索引常量0,定义空列表
- # 2.用for,把输入数字的1到数字,添加到列表中
- # 3.用for遍历,判断是不是7的倍数,或者数字里含有7
- # 4.对这些数字进行修改
- #5.打印
- s=int(input('请输入数字:'))
- cou=0
- l=[]
- for i in range(1,s+1):
- l.append(i)
- for i in l:
- if i%7==0 or '7' in str(i):
- l[cou]='咣'
- cou+=1
- print(l)
- '''
- '''#第三版:高手优化版本
- #思路:1.创建空列表,输入任意数字
- 2.用for和range,创建1串数字
- 3.在for循环中,用if判断是不是7的倍数或者含有数字7,
- 4.通过用空列表,进行添加
- 5.最后打印列表
- #利用列表进行添加:
- l = []
- n = int(input("输入任意数:"))
- for i in range(1,n+1):
- if i % 7 == 0 or "7" in str(i) :
- l.append("咚")
- else:
- l.append(i)
- print(l)
- '''
16.(升级题) 编写程序. 完成⼼动⼥⽣的筛选. (升级题)
- ⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
运⾏效果- 多练习这个版本,复习
- count=0
- l=[]
- while count<5:
- shu=input('请输入您心仪的女生(您还可以输入%s个):'%(5-count))
- l.append(shu)
- count+=1
- print('您当前的心仪女生有:')
- a=0
- for i in range(len(l)): #这个地方要注意
- print(f'编号:{a+1},名字:{l[a]}')
- a+=1
- print("请输入你更喜欢的三位女生的编号")
- b=0
- b1=[]
- while b<3:
- b += 1
- better_love=input(f"请输入第{b}个美眉的编号:")
- b1.append(better_love)
- c=0
- for i in range(len(b1)):
- print(f'编号:{c+1},名字:{b1[c]}')
- c+=1
- print('最后三选一')
- d=int(input('请输入你最喜欢的人的编号:'))
- print(f'程序帮你选出来了,你最喜欢的是{b1[d-1]}妹子')
- '''1版
- # count = 5
- # l = []
- # while count > 0:
- # s = input("请输入你心仪的女生(你还可以输入%s次);" % (count))
- # l.append(s)
- # count -= 1
- # print("你当前心仪的女生有:")
- #
- # a = 1
- # for el in l:
- # print("编号: %s,名字: %s" % (a,el))
- # a += 1
- # print("请输入你更喜欢的三个女人的编号:")
- #
- # b = 1
- # l1 = []
- # while b <= 3:
- # s2 = input("请输入第%s个美眉的编号;" % (b))
- # l1.append(l[int(s2)-1])
- # b += 1
- # print("更喜欢的新鲜出炉;")
- #
- # a1 = 1
- # l2 = []
- # for el1 in l1:
- # print("编号: %s,名字: %s" % (a1,el1))
- # a1 += 1
- # print("最后了,三选一:")
- # s3 = input("输入你最喜欢的人的编号:")
- # l2.append(l1[int(s3)-1])
- # print("程序帮你选出来了,你喜欢的是%s妹子." % (l2[0]))
- '''
- #2版
- # lst = []
- # lst2 = []
- # count = 0
- # count2 = 0
- # while count < 10:
- # xindong = input(f"请输入你的心动女生(你还可以输入{10 - count}个:)")
- # lst.append(xindong)
- # count += 1
- # print('您当前的心仪女生有:')
- # for i in range(len(lst)):
- # print(f"编号:{i + 1}, 名字:{lst[i]}")
- # print('请输入你更喜欢的三个女生的编号')
- # while count2 < 3:
- # xindong2 = int(input(f"请输入第{1 + count2}个美眉的编号:"))
- # lst2.append(lst[xindong2 - 1])
- # count2 += 1
- # print('更喜欢的新鲜出炉')
- # for i in range(len(lst2)):
- # print(f"编号:{i + 1}, 名字:{lst2[i]}")
- # print('最后三选一')
- # xindong3 = int(input("请输入你喜欢的人的编号"))
- # print(f"程序帮你选出来了,你最喜欢的妹子是{lst2[xindong3 - 1]}")
巨蟒python全栈开发-第4天 列表&元组&range的更多相关文章
- 巨蟒python全栈开发-第13天 内置函数 匿名函数lambda
一.今日内容总览 1.内置函数(1):并不是每一个内置函数都是那么常用 上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0 ...
- 巨蟒python全栈开发-第10天 函数进阶
一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...
- 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from
一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 ...
- 巨蟒python全栈开发linux之centos1
1.linux服务器介绍 2.linux介绍 3.linux命令学习 linux默认有一个超级用户root,就是linux的皇帝 注意:我的用户名是s18,密码是centos 我们输入密码,点击解锁( ...
- 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理
一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...
- 巨蟒python全栈开发linux之centos6
1.nginx复习 .nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件 在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器 我们下载 ...
- 巨蟒python全栈开发linux之centos3
1.作业讲解 (1)递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} 下面中的路径没有必要换,在哪里创建都行,根目录下或者tmp目录下或者其 ...
- 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查
内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...
- 巨蟒python全栈开发-第11阶段 ansible_project2
一个NB的网站: https://www.toolfk.com/ CDN:将用户的需求送到最近的节点:内容分发网络 有些是专门做CDN的工具 常用的markdown是需要知道的,短信有字数限制. we ...
随机推荐
- 点滴积累【other】---win2003 service pack2 IIS 无法复制CONVLOG.EXE CONVLOG.EX_(转载)
在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了下资料,说是在运行-中输入”esentutl /p %windir%/security/database/seced ...
- [MySQL] Innodb參数优化
innodb_buffer_pool_size innodb_buffer_pool_size 參数用来设置Innodb 最基本的Buffer(Innodb_Buffer_Pool)的大小,也就是缓存 ...
- 在centos 5.11上安装pylint
上午花了两三个小时在折腾pylint的安装. 如果是普通的linux倒也简单,只用运行一个pip install pylint就行了. 可是偏偏那么巧,服务器的版本是centos 5.11 这个版本对 ...
- Atitit. html 使用js显示本地图片的设计方案.doc
Atitit. html 使用js显示本地图片的设计方案.doc 1. Local mode 是可以的..web模式走有的不能兰.1 2. IE8.0 显示本地图片 img.src=本地图片路径无 ...
- SqlServer 数据分页
select * from ( select ROW_NUMBER() over (partition by name order by name) rowid,* from table ) t
- jquery Ajax Queue 队列实现
有时候我们需要按顺序调用一组ajax,这些ajax需要有先后顺序,类似于同步的ajax,那么我们可以通过以下的方式来实现: (这个Ajax用到jQuery.post) //定义一个AJAX队列 $.n ...
- how to identify your .NET Framework version
scenario: when I try to install github-windows on my PC, got such error "lower .NET Framework V ...
- Hadoop项目实战
这个项目是流量经营项目,通过Hadoop的离线数据项目. 运营商通过HTTP日志,分析用户的上网行为数据,进行行为轨迹的增强. HTTP数据格式为: 流程: 系统架构: 技术选型: 这里只针对其中的一 ...
- 第二百零四节,jQuery EasyUI,Dialog(对话框)组件
jQuery EasyUI,Dialog(对话框)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解EasyUI中Dialog(窗口)组件的使用方法,这个组件依赖 ...
- <!>表格语法
<table aling=left>...</table>表格位置,置左 <table aling=center>...</table>表格位置,置中 ...