Python 编程 | 连载 08 - 列表与元组操作

760 阅读4分钟

“Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。”

本文紧接 Python 编程 | 连载 08 - 列表与元组操作

一、列表 List 与 元组 Tuple 操作

sort 函数

sort 函数的功能是可以对当前列表按照一定的归类进行排序,该函数有两个参数需要传入,其中一个可以不传,另外一个时排序规则 reverse=Tue 或者 False,默认是 False 既按照升序排列,True 则是按照降序排列

sort 对列表进行排序要求列表中的元素必须为相同类型,否则无法排序

list_str = ['2051', '2022', 1, [1, 2, 3]]

print('排序前的列表顺序:{}'.format(list_str))
list_str.sort()

print('排序后的列表顺序:{}'.format(list_str))

image.png

list_str = ['2051', '2022', '2040', '2050']

print('排序前的列表顺序:{}'.format(list_str))
list_str.sort()

print('排序后的列表顺序:{}'.format(list_str))

image.png

list_str = ['2051', '2022', '2040', '2050']

print('排序前的列表顺序:{}'.format(list_str))
list_str.sort(reverse=True)

print('排序后的列表顺序:{}'.format(list_str))

image.png

sort函数传入参数reverse=True时按照降序排列

clear 函数

clear函数可以将当前列表中的数据清空,无须传递参数也没有返回值

list_str = ['2051', '2022', '2040', '2050']

print('clear前的列:{}'.format(list_str))
list_str.clear()

print('clear后的列表:{}'.format(list_str))

image.png

copy 函数

copy函数将当前的列表赋值一份相同的列表,新列表的内容与旧列表的内容相同,但是内存地址不同;copy函数无须传入参数;返回一个相同的列表

copy函数与二次赋值的区别:

  • 二次赋值与原变量的内存地址相同
  • copy返回的列表内存地址与原列表不同
  • copy返回的列表与原列表是两个列表,修改一个列表的内容对另一个列表不会有任何影响,二次赋值由于两个变量指向的都是同一块内存,所有修改数据会对两个变量都有影响
  • copy属于浅拷贝

浅拷贝,有一个列表a,列表中的元素还是列表,当拷贝出新列表b后,无论是a还是b的内部的列表中的数据发生了变化后,相互之间都会收到影响

list_01 = [
            ['stark', 'peter'],
            ['banner', 'steve'],
            [1, 5, 8, 9]
           ]

list_01_copy = list_01.copy()

print(list_01_copy)

# 修改列表中的元素
list_01[0].append('clint')

print(list_01_copy)

image.png

修改只有第一层数据不会收到影响,嵌套的列表则会受到影响

深拷贝不仅对第一层数据记性了拷贝,同时也对深层的数据进行了拷贝,原始变量和新变量完全是两个变量,修改不会互相影响。

import copy

list_01 = [
            ['stark', 'peter'],
            ['banner', 'steve'],
            [1, 5, 8, 9]
           ]

# 深拷贝
list_01_deepcopy = copy.deepcopy(list_01)

print(list_01_deepcopy)

# 修改列表中的元素
list_01[0].append('clint')

print(list_01_deepcopy)

print('list_01的内存地址为:{}'.format(id(list_01)))
print('list_01_deep_copy的内存地址为:{}'.format(id(list_01_deepcopy)))

image.png

深拷贝需要导入copy模块,调用deepcopy函数完成,调用深拷贝返回的列表是一个新的列表,内存地址不同。

extend 函数

extend函数是将其他列表或者元组中的元素导入到当前列表中,接收一个可迭代的数据类型作为参数如列表元组字典字符串等,该函数无返回值

heros = ['stark']
hero = ['thor', 'loki', 'banner' ]

heros.extend(hero)
print(heros)

heros.extend(('peter', 'strange'))
print(heros)

heros.extend('hello')
print(heros)

heros.extend({'name': 'pipi'})
print(heros)

image.png

传入字典时,只会将Value加入列表中。

heros = ['stark']
heros.extend(None)

image.png

传入int整型

heros = ['stark']
heros.extend(12)
print(heros)

image.png

传入bool类型

heros = ['stark']
heros.extend(True)
print(heros)

image.png

pop 函数

pop 函数可以通过索引删除索引对应的元素,并返回该元素,如果传入的索引不存在则会报错

list_str = ['stark', 'peter', 'banner', 'clint', 'thor']

pop_item = list_str.pop(3)
print('删除的元素为:', pop_item)

pop_item_nonexist = list_str.pop(10)
print(pop_item_nonexist)

image.png

del 函数

del 函数可以通过索引删除元素,与pop函数的区别是del函数无返回

list_str = ['stark', 'peter', 'banner', 'clint', 'thor']

del list_str[3]
print(list_str)

del list_str[10]
print(list_str)

image.png

del 函数删除元素的方式就是 通过[]方式取出列表中的元素,然后在del删除