2020-09-22

我的博客第六篇

1.序列
。序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引。
。索引
。可变序列:列表(list)、字典(dict)
。不可变序列:字符串(str),元组(tuple)

2.列表
。列表是Python中的一个对象
。列表的作用
。列表中可以保存多个有序的数据
。列表是用来存储对象的对象

3.切片
。切片是指从现有列表中获得一个子列表
。通过切片来获取指定的元素
。语法:列表【起始:结束:步长】
。通过切片获取元素时,会包括起始位置的元素, 不会包括结束位置的元素
。起始位置和结束位置的索引可以不写
。如果省略结束位置,则会从当前的开始位置一直截取到最后
。如果省略开始位置,则会从第一个元素截取到结束的元素,但是不包括结束的元素
。如果开始位置和结束位置都省略,则会从第一个元素开始截取到最后一个元素
。步长表示每次获取元素的间隔,默认是1(可以省略不写)
。步长不能是0,但可以是负数

4.通用操作
。+和*
。+可以将两个列表拼接成一个列表
。*可以将列表重复指定的次数(注意2个列表不能做乘法,要和整数做乘法运算)
。in 用来检查指定元素是否在列表当中
。not in 用来检查指定元素是否不再列表当中
。len() 获取列表中元素的个数
。max() 获取列表中最大值
。min() 获取列表中最小值
。list.index(x[,start[,end]])
。第一个参数 获取指定元素在列表中的位置
。第二个参数 表示查找的起始位置
。第三个参数 表示查找的结束位置
。list.count(x)统计指定元素在列表中出现的个数

5.修改列表
。通过索引修改
。通过切片修改
。del删除 del list[起始:结束]
。append() 向列表的最后添加一个元素
。insert() 向列表指定的位置插入一个元素 insert(arg1,arg2) 参数1:要插入的位置 参数2:要插入的元素
。extend() 使用一个新的序列来扩展当前序列(他会将该序列中的元素添加到列表中)参数需要传递一个序列
。pop() 根据索引删除并返回指定的元素
。remove() 删除指定元素(如果相同值的元素有多个,只会删除第一个)
。reverser() 翻转列表
。sort(key=None,reverse=False)用来对列表中的元素进行排序 reverse:True反序;False正序

6.for循环
。语法:
for 变量 in 序列(遍历的规则):
代码块
。range(起始位置,结束位置,步长) 起始位置默认为0,步长默认为1
。start:计数从start开始。默认是从0开始。
例如:for i in range(9): 等价于 for i in range(0,9):
。stop:计数到stop结束,但不包过stop。
例如:range(0,5) 是 [0,1,2,3,4] 没有5
。step:步长,默认为1.
例如:range(0,5) 等价于 range(0,5,1)

练习

列表练习:
#列表可以存放很多不同类型的数据:
list1 = [123,'python',True,[1,2,3],'列表']
print(list1)  
#结果:[123, 'python', True, [1, 2, 3], '列表']
#列表也是一个对象

list1 = [123,'python',True,[1,2,3],'列表']
print(list1[3])
#结果 [1, 2, 3]
#取长度
print(len(list1))
#结果 5
print(list1[-1])
#结果 列表

切片练习:
hero = ['郭靖','黄蓉','惜若','黄药师','洪七公']
print(hero[0:2])
#结果  ['郭靖', '黄蓉']
#再次输入 print(hero)
#结果是不变的  ['郭靖','黄蓉','惜若','黄药师','洪七公']

#切片不会影响原来的序列,而是会生成新的列表
hero = ['郭靖','黄蓉','惜若','黄药师','洪七公']
print(hero[-1:-3:-1])
#结果 ['洪七公', '黄药师']
#如果想取 ‘惜若’和‘黄药师’如下:
print(hero[-3:-1])

#通用操作:
a = [1,2,3] + [4,5,6]
print(a)
#结果 [1, 2, 3, 4, 5, 6]

a = [1,2,3] * 2
print(a)
#结果 [1, 2, 3, 1, 2, 3]

a = [1,2,3,4,5] - [1,2,3]
print(a)
#结果 会报错

#in 用来检测指定元素是否在列表中
#not in 用来检测指定元素是否不在列表中
a = [1,2,3,4,5] 
print(1 in a)
#结果 True

a = [1,2,3,4,5] 
print(6 not in a)
#结果 True

a = '1,2,3,4,5' 
print('6' in a)
#结果 False

a = '1,2,3,4,5' 
print(6 in a)
#结果 报错 

a = [1,2,3,4,5,6,7] 
print(max(a))
#结果 7

a = [1,2,3,4,5,6,7] 
print(min(a))
#结果 1

#list.index('数据') 查找数据 
a = ['郭靖','杨过','黄蓉','欧阳锋','洪七公','黄药师','王重阳']
print(a.index('杨过'))
#结果 1

#list.count(‘元素名’)  获取指定元素在列表中的数量
#list.index('数据') 查找数据 返回的是一个下表索引
a = ['郭靖','杨过','黄蓉','欧阳锋','黄蓉','黄药师','洪七公','黄药师','王重阳']
print(a.count('黄蓉'))
#结果 2

#修改列表
#通过索引修改列表
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[1] = '惜若'
print(a)
#结果 ['郭靖', '惜若', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']

#切片修改
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
print('修改前:',a)
a[1:2] = '郭襄'
print('修改后:',a)
#结果 
修改前: ['郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']
修改后: ['郭靖', '郭', '襄', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[2:4] = '锦绣','大地'
print(a)
#结果:
['郭靖', '杨过', '锦绣', '大地', '黄药师', '洪七公', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[1:2] = ['锦绣']
print(a)
#结果
['郭靖', '锦绣', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[0:0] = ['郭子仪']
print(a)
#结果
['郭子仪', '郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[-1:-1] = ['郭子仪']
print(a)
#结果
['郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', '洪七公', '郭子仪', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
print(a[::2])    #2个步长
#结果
['郭靖', '欧阳锋', '黄药师', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
print(a[::3])
#结果
['郭靖', '黄蓉', '王重阳']

#当通过切片来修改数据,使用了步长,你替换的元素必须和切片的元素一致
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
a[::2] = ['梅超风','梅超风','梅超风','王大大']
print(a)
#结果
['梅超风', '杨过', '梅超风', '黄蓉', '梅超风', '洪七公', '王大大']

#del list【索引号】 关键字删除
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师','洪七公','王重阳']
del a[1]
print(a)
#结果
['郭靖', '欧阳锋', '黄蓉', '黄药师', '洪七公', '王重阳']

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师',[[1,2,3,4],2,4]]    #删除列表中的3
del a[5][0][2]
print(a)
#结果 
['郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', [[1, 2, 4], 2, 4]]

#添加操作
#list.append() 向列表最后添加一个元素
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师',[[1,2,3,4],2,3,4]]
a.append('dasdasdasd')
print(a)
#结果 
['郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', [[1, 2, 3, 4], 2, 3, 4], 'dasdasdasd']

#list.insert() 向列表中指定的位置插入一个元素,第一个参数是插入的位置,第二个参数是要插入的元素
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师']
a.insert(2,'天空霸邪')
print(a)

#list.extend()使用新的序列添加进去 添加到列表最后
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师']
a.extend(['郭大侠','黄大姐'])
print(a)
#结果
['郭靖', '杨过', '欧阳锋', '黄蓉', '黄药师', '郭大侠', '黄大姐']

#清空操作  list.clear()
a.clear()

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

a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师']
r = a.pop(1)
print(r,a)
#结果 
杨过 ['郭靖', '欧阳锋', '黄蓉', '黄药师']

#list.remove()  删除指定元素
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师']
a.remove('杨过')
print(a)
#结果
['郭靖', '欧阳锋', '黄蓉', '黄药师']

#list.reverse() 反转列表
a = ['郭靖','杨过','欧阳锋','黄蓉','黄药师']
a.reverse()
print(a)
#结果
['黄药师', '黄蓉', '欧阳锋', '杨过', '郭靖']

#list.sort() 对列表中的元素进行排序,默认是升序
a = list('sdfljsdlfjsdlfjsldfjsd;a;a;sss')
a.sort()
print(a)
#结果
[';', ';', ';', 'a', 'a', 'd', 'd', 'd', 'd', 'd', 'f', 'f', 'f', 'f', 'j', 'j', 'j', 'j', 'l', 'l', 'l', 'l', 's', 's', 's', 's', 's', 's', 's', 's']

a = list('sdfljsdlfjsdlfjsldfjsd;a;a;sss')
a.sort(reverse=True)
print(a)
#结果
['s', 's', 's', 's', 's', 's', 's', 's', 'l', 'l', 'l', 'l', 'j', 'j', 'j', 'j', 'f', 'f', 'f', 'f', 'd', 'd', 'd', 'd', 'd', 'a', 'a', ';', ';', ';']

#语法: for 变量 in 序列:
#				   代码块
a = ['郭靖','王致和','黄大仙','梅超风','逆天而行','不闻不问','随风起舞']
for i in a:
    print(i)
#结果
郭靖
王致和
黄大仙
梅超风
逆天而行
不闻不问
随风起舞

list1 = [1,2,3,4,5]
for i in list1:
    i += 1
print(list1)
#结果 
# [1, 2, 3, 4, 5]  结果不变,在for循环里改变的东西 不会影响外面的列表

list1 = [1,2,3,4,5]
list2 = []
for i in list1:
    i += 1
    list2.append(i)
print(list2)
#结果
[2, 3, 4, 5, 6]

作业

  1. 现在有 a = [1,2,3,4,5,6] 不通过函数的形式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程
a = [1,2,3,4,5,6]
print('修改前',a)
print('修改后',a[::-1])
#结果
修改前 [1, 2, 3, 4, 5, 6]
修改后 [6, 5, 4, 3, 2, 1]
  1. 给 用户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])
  1. 有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素
lst1 = [11,22,33]
lst2 = [22,33,44]
lst3 = []
for i in lst1:
#    print(i)
    for x in lst2:
        if i == x:
            lst3.append(i)
print(lst3)
#结果
[22, 33]
  1. 现在有8位老师,3个办公室,要求将8位老师随机的分配到三个办公室中
import random
office = [[],[],[]]
teacher = ['1','2','3','4','5','6','7','8']
for i in teacher:
    x = random.randint(0,2)
    office[x].append(i)
print(office)
#结果
[[‘2’, ‘7’], [‘3’, ’5’], [’1’, ’4’, ’6’, ’8’]]

扩展知识:

#随机出来之后判断三个办公室是否有为空的现象,诺出现就重新随机生成
import random
while True:
    teachers = ['A','B','C','D','E','F','G','H']
    offices = [[],[],[]]
    
    for teacher in teachers:
        num = random.randint(0,2)
        offices[num].append(teacher)
    
    if len(offices[0]) == 0 or len(offices[1]) == 0 or len(offices[2]) == 0:
        continue
    else:
        print(offices)
        break
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值