LeetCode 链表常用的操作

 

正文

链表是 Python 中最为常用的数据结构之一,下面我进行常用方法的总结:

维基百科解释

The Average Case assumes parameters generated uniformly at random.
Internally, a list is represented as an array; the largest costs come from growing beyond the current allocation size (because everything must move), or from inserting or deleting somewhere near the beginning (because everything after that must move). If you need to add/remove at both ends, consider using a collections.deque instead.

翻译:
一边情况下,我们假设参数是随机均匀生成的。
列表的内部实现可以看作是一个数组(和C\C++数组不同,list元素的类型可以不同)。列表最大的开销来自于列表空间增长到高于自动分配内存的大小(因为所有的元素都需要移动),或者是在列表接近于首部的地方插入和删除数据(因为在该元素后的所有数据都需要移动)。
如果你在尾部既需要增加也需要删除数据,或许应该考虑使用 collections.deque 数据类型

查和改

>>> list1 = ['a', 'b', 'c', 'd']
>>> # 常见的索引
>>> list1[2]
'c'
>>> list1[2:]
['c', 'd']
>>> list1[:]
['a', 'b', 'c', 'd']
>>> list1[-2]
'c'
>>> list1[:-1]
['a', 'b', 'c']
>>> list1[0:3]
['a', 'b', 'c']
>>> list1[1] = 1
>>> list1
['a', 1, 'c', 'd']

遍历操作

>>> for x in list1:
... print(x)
...
a
1
c
d
>>> for i, x in enumerate(list1):
... print('i=', i, ',x=', x, sep='')
...
i=0,x=a
i=1,x=1
i=2,x=c
i=3,x=d
>>> for i in range(len(list1)):
... print(f'list1[{i}]={list1[i]}')
...
list1[0]=a
list1[1]=1
list1[2]=c
list1[3]=d

list.append()
list.extend()

list.clear(),清空列表
list.pop(index=-1)删除所在下标的元素,并获取他的数值
list.remove(value)删除元素数值匹配的第一个数据,倘若不存在: ValueError: list.remove(x): x not in list
del 可单个元素删除,也可切片删除

############ clear ###############
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
########### pop ###########
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0))
# 0
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3))
# 4
print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
########### remove ###########
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
########### del ###########
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]
del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]
l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]
l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]
l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]
l = list(range(10))
del l[:]
print(l)
# []

趣味的操作

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]
print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
>>> list1 = list(range(10))
>>> list2 = [str(i) for i in range(10)]
>>> list2
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> '+'.join(list2)
'0+1+2+3+4+5+6+7+8+9'
>>> res = [""] * 10 # 等价于 res = ["" for i in range(10)]
>>> res
['', '', '', '', '', '', '', '', '', '']

参考链接

Remove an item from a list in Python (clear, pop, remove, del)
维基百科的时间复杂度

posted @   lucky_light  阅读(150)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示