列表

序列(sequence)

基本概念

  • 序列是Python中最基本的一种数据结构。序列用于保存一组有序的数据,所有的数据在序列当中都有一个唯一的位置(索引)并且序列中的数据会按照添加的顺序来分配索引
  • 数据结构指计算机中数据存储的方式

序列的分类

  • 可变序列(序列中的元素可以改变):例如 列表(list)
  • 不可变序列(序列中的元素不能改变):例如 字符串(str)元组(tuple)

列表(list)

  • 列表是Python中的一个对象
  • 列表的作用:
    列表中可以保存多个有序的数据
    列表是用来存储对象的对象
  • 列表的使用
    列表的创建:通过[]来创建一个空列表
list_1=[True, None,1,'1','a','切尔西',1.0,[True, None,1,'a','切尔西',1.0]]

切片

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

通用操作

  • +和 *
    + 可以将两个列表拼接成一个列表 * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
    * 可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)
list1 = [1, 2, 3] + [4, 5, 6]
list2 = [1, 2, 3] * 2
  • in 和 not in
    in用来检查指定元素是否在列表当中
    not in 用来检查指定元素是否不在列表当中
  • len() 获取列表中元素的个数
  • max() 获取列表中最大值
  • min() 获取列表中最小值
  • list.index(x[, start[, end]])
    第一个参数 获取指定元素在列表中的位置
    第二个参数 表示查找的起始位置
    第三个参数 表示查找的结束位置
  • list.count(x) 统计指定元素在列表中出现的个数
1 in list_1
'1'not in  list_1
len(list_1)
list_1.count(1)
print(list_1.find('e'))  # 返回的是索引
print(list_1.index(2))  # 只能找到第一个值的索引并返回出来, 没有找到就报错

修改列表

  • 通过切片来修改(起始就是给切片的内容重新赋值,但是赋值的内容必须是一个序列
  • 当设置了步长时,序列中元素的个数必须和切片中元素的个数保持一致
  • 通过切片来删除元素
    del list[起始 : 结束]
    list = []
list1 = ['德罗巴', '兰帕德', '巴拉克', '穆里尼奥', '切赫']
list1[1] = '芒特'#通过索引来修改 兰帕德改为了芒特
del list1[1]#关键字删除 索引为1的芒特被删除了
list1[0:2] = '切尔西'#相当于索引0与1的位置变成了'切''尔''西' 索引2是取不到的,所以原来的索引2保留
#['切', '尔', '西', '巴拉克', '穆里尼奥', '切赫']

# 通过切片来进行修改,当我们通过切片来进行元素的替换时,如果使用了绝对值不是1的步长,那么你取了多少个数据就要用多少个数据替换

list1[1::2] = [123, 456, 789]#ValueError: attempt to assign sequence of size 3 to extended slice of size 2

直观感受修改列表

list_a=[1,2,3,4,5,6,7,8]
list_a[0:1:1]=['a','b','c']#其实只是把索引0位置变成了'a''b''c',后面元素保留
print(list_a)
list_a[0:5:2]=['a','b','c']#list_a[0:4:2]=['a','b','c'] 取4的时候会报错
print(list_a)#步长为2,索引0的地方变成了'a',索引为2的地方变成了'b',索引为4的地方变成了'c',索引为5的地方不变
#['a', 2, 'b', 4, 'c', 6, 7, 8]

总结:通过切片修改列表时:
当步长为1时,左闭右开区间替换
当步长的绝对值为2或及以上时就是直接替换 list_a[0:5:2]=[‘a’,‘b’,‘c’]及list_a[0:6:2]=[‘a’,‘b’,‘c’]结果是一样的,区别在哪还不清楚但是7,8就会报错。

列表的更新

  • append() 像列表的最后添加一个元素
  • insert(arg1,arg2) 像列表指定位置插入一个元素 参数1:要插入的位置 参数2:要插入的元素
  • extend(iterable) 使用一个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递一个序列
list2=[]
list2.append('切尔西第一次')
list2.append('切尔西第二次')
list2.insert(1,'切尔西第三次')#在索引为1的地方插入
list2.extend(['1','2'])#在列表末尾追加一个其他列表
  • pop() 根据索引删除并返回指定元素
  • remove() 删除指定元素 (如果相同值的元素有多个,只会删除第一个)
list1 = ['德罗巴', '兰帕德', '巴拉克', '穆里尼奥', '切赫']
list1.remove('穆里尼奥')
del_1 = list1.pop(1)#索引为1的兰帕德被删除了
del_2 = list1.pop() #记得加括号,最后一个索引被删除
  • reverse() 翻转列表
list1=[1,'1','切尔西',[1,2,3]]
list1.reverse()
  • sort(key=None,reverse=False) 用来对列表中的元素进行排序 reverse:True反序;False 正序
list3 =['切尔西','切尔犀','c','cbc']#['切尔西', '切尔犀', 'cbc', 'c']
list3.sort(reverse=True)
list4 =[1,2,8,5,3,4]
list4.sort(reverse=True)#[8,5,4,3,2,1],降序排列
list4.sort(reverse=False)#[1, 2, 3, 4, 5, 8],升序排列

break 和 continue 语句

  • break 可以用来立即退出循环语句,包括else语句
  • continue 用来跳过当次循环

普通的continue

i = 0
while i < 8:
    i += 1
    if  i ==5:
        continue
    print(i,end='')

else:
  print()
  print('切尔西')
#输出:
# 1234678
# 切尔西

continue死亡之作

i = 0 
while i < 8:
    if i == 5:
       continue
    i += 1
    print(i)
else:
  print('切尔西')
#当i变成5时跳出循环然后进入while i<8 i==5 又跳出循环然后进入while i<8 i==5然后就好家伙
#进入了无限月读模式

普通的break

i = 0 
while i < 10:
   i += 1
   if i == 4:
      break
   print(i,end='')
else:
  print('切尔西')
#输出为:123,i=4时直接跳出循环包括else

break嵌套循环

j = 0
while  j < 2:
   i = 0
   j += 1
   while i < 10:
       i += 1
       if i == 4:
           break
       print(i,end='')
   else:
       print('嵌套循环里的切尔西被跳过了')
else:
    print()
    print('这是嵌套循环外的切尔西')
#输出为:
# 123123
# 这是嵌套循环外的切尔西

#j=0小于2j变成了1
#当i=4时跳出了第二个循环打印123但是j在最外层循环又进入while  j < 2的循环又打印了123然后j=2直接进行else

作业

现在有 a = [1,2,3,4,5,6] 用多种方式实现列表的反转([6,5,4,3,2,1]) 并写出推导过程

a = [1, 2, 3, 4, 5, 6]
print(a[::-1])#方法一:切片直接步长为-1
a.reverse()#方法二:直接翻转
a.sort(reverse=True)#方法三:因为原列表从小到大排列的,所以直接降序排列

有两个列表 lst1 = [11, 22, 33] lst2 = [22, 33, 44]获取内容相同的元素

lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
same_Element = list(set(lst1).intersection(set(lst2)))#取出相同元素即取交集
print(same_Element)
lst1 = [11, 22, 33]
lst2 = [22, 33, 44]
same_Element = [i for i in lst1 if i in lst2]
print(same_Element)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值