【Python】第五部分 列表

【Python】第五部分 列表



5. 列表

5.1 列表的特点

  1. 列表是有序的
  2. 索引映射的是唯一的数据
  3. 列表可以存储重复的数据
  4. 可以混存不同的数据类型
  5. 根据需要动态的分配和回收内存

5.2 列表的创建

# 1. 直接写[]
# 2. list([])
arr = ['hello', 'world', 123, True]
arr2 = list(['hello', 'world', 456, True])
print(arr)
print(arr2)
print(arr[0])
print(arr2[3])

5.3 获取指定元素的索引

需要注意的是:

  • 如果在列表中查找的元素内容有重复的,当它找到第一个的时候就会停止查找并且返回索引
  • 如果查找不到元素内容则会报错
arr3 = list(['hello', 'world', 789, False, 'hello'])
print(arr3.index('hello'))  # 0

# index(element,start,stop)可以再传入两个参数
# 第二个参数为要查找的起点,另一个为终点(不包含终点)
print(arr3.index('hello', 1, 5))  # 4

5.4 获取列表中指定的元素

正向索引 0 --> N-1
反向索引 -N --> -1
如果指定的索引不存在,则报错
在这里插入图片描述

arr4 = ['GG', 'Hello', 'Tree', 123, 456]
print(arr4[2])  # Tree
print(arr4[-3])  # Tree

5.5 获取多个元素(切片)

列表名[start:stop:step] ,注意:不包括(stop)
切片的结果是:对原列表的拷贝,产生一个新的列表

arr5 = ['GG', 'Hello', 'Tree', 123, 456]
list1 = arr5[1:3:1]
print(arr5, id(arr5))  # ['GG', 'Hello', 'Tree', 123, 456] 2583478125512
print(list1, id(list1))  # ['Hello', 'Tree'] 2583478125576

# 步长默认为 1
list1 = arr5[1:3:]
print(list1)  # ['Hello', 'Tree']

# start默认为 0
list1 = arr5[:5:1]
print(list1)  # ['GG', 'Hello', 'Tree', 123, 456]

# stop默认为 N
list1 = arr5[3::1]
print(list1)  # [123, 456]

5.6 列表元素的判断和遍历

arr6 = [10, 20, 30, 40, 50, 60]
print(50 in arr6)  # True
print(100 in arr6)  # False
print(50 not in arr6)  # False

for item in arr6:
    print(item, end='\t')
    print()

5.7 列表的添加操作

添加的方法:append( )、extend( )、insert( )、切片

# 1. append() 在原数组上进行修改,作用:在列表末尾添加元素
arr7 = [10, 20, 30, 40]
print(arr7, id(arr7))  # [10, 20, 30, 40] 1216782886472

arr7.append(60)
print(arr7, id(arr7))  # [10, 20, 30, 40, 60] 1216782886472

arr7.append(['hello', 'world'])
print(arr7)  # 加入多个元素 : [10, 20, 30, 40, 60, ['hello', 'world']]


# 2. extend() 在原数组上进行修改,作用:在列表末尾添加元素
# extend()和append()的区别在于:当添加多个元素的时候,extend会进行拆包,然后添加到末尾
arr7.extend([234, 564])
print(arr7, id(arr7))  # [10, 20, 30, 40, 60, ['hello', 'world'], 234, 564] 1216782886472


# 3. insert() 在原数组上进行修改,作用:可以在任意位置添加一个元素
arr7.insert(2, 6666666)
print(arr7, id(arr7))  # [10, 20, 6666666, 30, 40, 60, ['hello', 'world'], 234, 564] 1216782886472


# 4. 切片 作用:添加多个元素,下面写法是原数组上进行切片,这里要注意和之前讲过的切片写法区分开
arr7[3::] = [123, 456, 789]
print(arr7)  # [10, 20, 6666666, 123, 456, 789] 1216782886472


5.8 列表的删除操作

删除的方法:remove()、pop()、切片、clear()、del

# 1. remove() 删除指定的元素,如果有重复的元素则只会删除第一个
arr8 = [10, 20, 30, 34, 56, 26, 30]
arr8.remove(30)
print(arr8)  # [10, 20, 34, 56, 26, 30]


# 2. pop() 根据索引删除指定的元素
arr8.pop(2)
print(arr8)  # [10, 20, 56, 26, 30]

# 如果不指定参数则默认删除列表中的最后一个元素
arr8.pop()
print(arr8)  # [10, 20, 56, 26]


# 3. 切片
# 删除至少一个元素,将产生一个新的列表
list3 = arr8[1:3:1]
print(arr8, id(arr8))  # [10, 20, 56, 26] 1314499684872
print(list3, id(list3))  # [20, 56] 1314499684744

# 删除至少一个元素,不产生新的列表,而是删除原数组
# 将所选中的部分替换为空列表
arr8[1:3:1] = []
print(arr8, id(arr8))  # [10, 26] 1314499684872


# 4. clear 清除所有的列表
arr8.clear()
print(arr8)  # []


# 5. del 删除列表
del arr8


5.9 列表的修改操作

arr9 = [10, 20, 234, 546, 454, 5313, 2]
arr9[2] = 6666
print(arr9)  # [10, 20, 6666, 546, 454, 5313, 2]

arr9[1:3:1] = [456, 56, 22, 3, 2]
print(arr9)  # [10, 456, 56, 22, 3, 2, 546, 454, 5313, 2]

5.10 列表排序

# sort() 默认升序排列
arr10 = [456, 4652, 3, 243, 5, 45, 324, 54, 234]
arr10.sort()
print(arr10)  # [3, 5, 45, 54, 234, 243, 324, 456, 4652]
arr10.sort(reverse=True)  # 降序排列
print(arr10)  # [4652, 456, 324, 243, 234, 54, 45, 5, 3]


# sorted() 和sort的区别是会产生一个新的列表,对原数组不改变
new_arr10 = sorted(arr10)
print(new_arr10)  # [3, 5, 45, 54, 234, 243, 324, 456, 4652]

new_arr10 = sorted(arr10, reverse=True)
print(new_arr10)  # [4652, 456, 324, 243, 234, 54, 45, 5, 3]

5.11 列表生成式

# 列表名 = [i for i in list]
# 第一个i表示的是列表元素的表达式,也是最后存储在列表中的值
lis1 = [i for i in range(1, 11)]
print(lis1)  # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

lis2 = [i * i for i in range(1, 11)]
print(lis2)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

总结

以上就是今天要讲的内容,希望对大家有所帮助!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值