今日内容大纲
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的更多相关文章

  1. 巨蟒python全栈开发-第13天 内置函数 匿名函数lambda

    一.今日内容总览 1.内置函数(1):并不是每一个内置函数都是那么常用 上菜:内置函数部分//思维导图:https://www.processon.com/view/link/5b4ee15be4b0 ...

  2. 巨蟒python全栈开发-第10天 函数进阶

    一.今日主要内容总览(重点) 1.动态传参(重点) *,** *: 形参:聚合 位置参数*=>元组 关键字**=>字典 实参:打散 列表,字符串,元组=>* 字典=>** 形参 ...

  3. 巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from

    一.今日主要内容总览(重点) 1.生成器(目的:帮助我们创建对象) (1)生成器的本质就是迭代器 (2)一个一个的创建对象 (3)创建生成器的方式: 1.生成器函数 2.通过生成器表达式来获取生成器 ...

  4. 巨蟒python全栈开发linux之centos1

    1.linux服务器介绍 2.linux介绍 3.linux命令学习 linux默认有一个超级用户root,就是linux的皇帝 注意:我的用户名是s18,密码是centos 我们输入密码,点击解锁( ...

  5. 巨蟒python全栈开发-第20天 核能来袭-约束 异常处理 MD5 日志处理

    一.今日主要内容 1.类的约束(对下面人的代码进行限制;项目经理的必备技能,要想走的长远) (1)写一个父类,父类中的某个方法要抛出一个异常 NotImplementedError(重点) (2)抽象 ...

  6. 巨蟒python全栈开发linux之centos6

    1.nginx复习 .nginx是什么 nginx是支持反向代理,负载均衡,且可以实现web服务器的软件 在129服务器中查看,我们使用的是淘宝提供的tengine,也是一种nginx服务器 我们下载 ...

  7. 巨蟒python全栈开发linux之centos3

    1.作业讲解 (1)递归创建文件夹/tmp/oldboy/python/{alex,wusir,nvshen,xiaofeng} 下面中的路径没有必要换,在哪里创建都行,根目录下或者tmp目录下或者其 ...

  8. 巨蟒python全栈开发django5:组件&&CBV&FBV&&装饰器&&ORM增删改查

    内容回顾: 补充反向解析 Html:{% url ‘别名’ 参数 %} Views:reverse(‘别名’,args=(参数,)) 模板渲染 变量 {{ 变量名 }} 逻辑相关 {% %} 过滤器: ...

  9. 巨蟒python全栈开发-第11阶段 ansible_project2

    一个NB的网站: https://www.toolfk.com/ CDN:将用户的需求送到最近的节点:内容分发网络 有些是专门做CDN的工具 常用的markdown是需要知道的,短信有字数限制. we ...

随机推荐

  1. php.ini配置与中国间隔12小时间设置方法

    打开php.ini 配置文件找到date.timezone把=号后面的参数改成这个date.timezone = Etc/GMT+4即可,这样与中国的时间误差即能达到12小时

  2. MySQL怎样存储IP地址

    为什么要问如何存储IP 首先就来阐明一下部分人得反问:为什么要问IP得怎样存,直接varchar类型不就得了吗? 其实做任何程序设计都要在功能实现的基础上最大限度的优化性能.而数据库设计是程序设计中不 ...

  3. atitti.atiNav 手机导航组件的设计

    atitti.atiNav 手机导航组件的设计 1.1. 三大按键导航功能,back,menu ,home1 1.2. header页头组件,为移动页面顶部的导航条设计.1 1.3. 页头主题设计1 ...

  4. JS事件类型详解

    一般事件 onclick IE3.N2 鼠标点击时触发 此事件 ondblclick IE4.N4 鼠标双击时触发 此事件 onmousedown IE4.N4 按下鼠标时触发 此事件 onmouse ...

  5. 跑测试没有web环境的情况

    有时候 当你跑测试的main方法的时候,会有一些莫名其妙的错误,明明mave pom的包是全的,web跑起来不会报错,可是在main方法下就是报错了,这个时候引入  <dependency> ...

  6. linux学习笔记29---命令watch

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...

  7. mysql数据库表修改某一列的类型

    下面列出:1.增加一个字段alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空alter table use ...

  8. java.lang.IllegalArgumentException: n must be positive

    public static String randomKey(){ Random random = new Random(); int key = random.nextInt(((int)Syste ...

  9. 2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 二分+贪心

    /** 题目:2016-2017 ACM-ICPC CHINA-Final Ice Cream Tower 链接:http://codeforces.com/gym/101194 题意:给n个木块,堆 ...

  10. Eqs - poj 1840(hash)

    题意:对于方程:a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0 ,有xi∈[-50,50], xi != 0, any i∈{1,2,3,4,5}. 现在给出a1,a2,a3, ...