2020-09-23

1.序列(sequence)

·基本概念
1.序列是Python中最基本的⼀种数据结构。序列⽤于保存⼀组有序的数据,所有的数据在序列当中都有⼀个唯⼀的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
2.数据结构指计算机中数据存储的方式
·序列的分类
1.可变序列(序列中的元素可以改变):例如 列表(list)字典(dict)
2.不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

2.列表(list)

·列表是Python中的⼀个对象
·列表的作用
1. 列表中可以保存多个有序的数据
2. 列表是⽤来存储对象的对象
·列表的使用
1.列表的创建:通过[]来创建⼀个空列表
 #列表可以存放很多不同类型的数据
 list1 = [12, 'python', True, None, [1, 2, 3]]
 print(list1)
 #列表也是一个对象:存储对象的对象
 print(list1[3])
 print(len(list1))
 print(list1[-1])
·切片
1.切⽚是指从现有列表中获得⼀个⼦列表
2.通过切⽚来获取指定的元素
3.语法: 列表[起始 : 结束 : 步⻓]
4.通过切⽚获取元素时,会包括起始位置的元素,不会包括结束位置的元素
5.起始位置和结束位置的索引可以不写
·如果省略结束位置, 则会从当前的开始位置⼀直截取到最后
·如果省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结束的元素
·如果开始位置和结束位置都省略, 则则会从第⼀个元素开始截取到最后⼀个元素
6.步长表示每次获取元素的间隔,默认是1(可以省略不写)
7.步长不能是0,但可以是是负数
#切片是指从现有的序列当中,去一个子序列,我们可以通过切片去获取
#语法: list[起始位置:结束为止:步长]   左闭右开区间
#默认语法: [0:最后:1]
#切片不会影响原来的序列,而是会生成新的列表
hero = ['郭靖','杨过', '黄蓉', '欧阳锋', '洪七公']
print(hero[0:2])     #['郭靖', '杨过']
print(hero)            #['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公']
print(hero[-1:-3:-1])      #['洪七公', '欧阳锋']
print(hero[-1:2])          #[]

3.通用操作

· + 和 *
1.+ 可以将两个列表拼接成⼀个列表
2.* 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
 #+ 法操作
 a = [1, 2, 3] + [4, 5, 6]

 #* 法操作
 a = [1, 2, 3] * 2
·in 和 not in
·in⽤来检查指定元素是否在列表当中
·not in ⽤来检查指定元素是否不在列表当中
·len() 获取列表中元素的个数
·max() 获取列表中最⼤值
·min() 获取列表中最⼩值
·list.index(x[, start[, end]])
1.第⼀个参数 获取指定元素在列表中的位置
2.第⼆个参数 表示查找的起始位置
3.第三个参数 表示查找的结束位置
·ist.count(x) 统计指定元素在列表中出现的个数
in #用来检测指定元素是否在列表中
print(4 in a)
not in  #用来检测指定元素是否不在列表中
a = [1, 2, 3]
a = '1234'
print('4' not in a)

max()
print(max([1, 2, 3, 4, 5]))
min()
print(min([1, 2, 3, 4, 5]))

#list.index('元素名') 查找数据  返回的是一个下表索引
hero = ['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公']
print(hero.index('杨过'))

#list.count('元素名')  获取之地东元素在类表中的数量
hero = ['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公', '洪七公', '洪七公']
str1 = 'abbbaccca'
print(str1.count('a'))

4.修改列表

·通过切⽚来修改(起始就是给切⽚的内容重新赋值,但是赋值的内容必须是⼀个序列)
·当设置了步⻓时,序列中元素的个数必须和切⽚中元素的个数保持⼀致
·通过切⽚来删除元素
1.del list[起始 : 结束]
2.list = []
#通过索引修改列表
hero = ['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公', [[1, 2, 3], 2, 3]]
hero[1] = '郭襄'
print(hero)

print('修改前:', hero)
hero[1:2] = '郭襄'
hero[1:3] = ['郭襄']
hero[-1:-1] = ['郭子仪']
#当通过切片来修改数据,使用了步长,你替换的元素必须和切片的元素一致
hero[::2] = ['郭子仪'] * 3

print('修改后:', hero)

str1 = 'python'
str1 = list(str1)
str1[1] = 'j'

str2 = str(str1)
print(str1)
del list[索引号] #关键字删除
del hero[5][0][2]
print(hero)

#增删改查

5.列表的方法

·append() 像列表的最后添加⼀个元素
·insert(arg1,arg2) 像列表指定位置插⼊⼀个元素 参数1:要插⼊的位置 参数2:要插⼊的元素
·extend(iterable) 使⽤⼀个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递⼀个序列
·pop() 根据索引删除并返回指定元素
·remove() 删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)
·reverse() 翻转列表
·sort(key=None,reverse=False) ⽤来对列表中的元素进⾏排序 reverse:True反序;False 正序
添加操作
list.append() #像列表最后添加一个元素

hero.append('郭子仪')
print(hero)

#list.insert() 像向列表中指定的位置插入一个元素,第一个参数是要插入的位置,第二个 参数是要插入的元素
hero.insert(2, '郭子仪')
print(hero)
hero = ['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公']
#list.extend()使用新的序列添加进去  添加到列表最后
hero.extend(['郭襄', '郭子仪', ['郭襄', '郭子仪']])
print(hero)

#清空操作  list.clear()
hero.clear()
print(hero)


#列表的删除操作
#list.pop() 根据索引删除并返回执行的元素, 如果不传递索引,默认删除最后一个
hero = ['郭靖', '杨过', '黄蓉', '欧阳锋', '洪七公']
result = hero.pop(1)
print(result, hero)

#list.remove()  删除制定元素
hero.remove('杨过')
print(hero)


#list.reverser()  翻转列表
hero.reverse()
print(hero)

#list.sort() 对列表中的元素进行排序,默认是升序
hero = list('sdfbndfsdnmdmnsdmnfdmnbsfdgmnsfdgh')
hero.sort(reverse=True)
print(hero)

6.遍历列表

·for循环
1.通过for循环来遍历列表
  语法
  for 变量 in 序列 (遍历的规则):
           代码块
2. 注意: for循环的代码块会执⾏多次,序列中有⼏个元素就会执⾏⼏次。每执⾏⼀次就会将序列中的⼀个元素赋值给变量,所以我们可以通过变量来获取列表中的元素
·range(start, stop[, step])
参数说明
1.·start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
2.stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1,2, 3, 4]没有5
3.step:步⻓,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
#print(range(9))
#语法: range(开始位置,结束为止,步长) 左闭右开型
#print(list(range(9)))
for i in range(9):
print(i)    
输出
0
1
2
3
4
5
6
7
8

作业

现在有 a = [1,2,3,4,5,6] 不通过函数的形式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程
a = [1,2,3,4,5,6] 
print(a[::-1])
b = []
for i in  a :
  print (a[i-1])
  c = [a[i-1]]
  b = [a[i-1]] + b
给 ⽤户9次机会 猜1 - 10 个数字随机来猜数字。如果随机的数字和⽤户输⼊的数字⼀致则表示正确,如果不⼀致则表示错误。最终结果要求用户怎么也猜不对
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
i = 1
while i < 10:
    num = int(input('请输入1-10的数'))
    print('对不起,您猜错了')
    if num in list1:
        list1.remove(num)
    else:
       print('对不起,您已经猜过这个数了')
    i += 1

print('正确答案是%s' % list1[0])
有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
for i in lst1:
    for j in lst2:
       if i == j:
           print(i)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值