Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解Python中列表、元组、字典,所有操作,一网打尽

详解Python中列表、元组、字典,所有操作,一网打尽

作者头像
统计学家
发布于 2024-09-23 04:03:55
发布于 2024-09-23 04:03:55
14700
代码可运行
举报
运行总次数:0
代码可运行

列表

列表(List)是Python中最常用的数据结构之一,它是一个可变的、有序的元素集合。

1. 列表的创建

1.1 使用方括号创建

最常见的创建列表的方式是使用方括号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3, 4, 5]
list2 = ['a', 'b', 'c']
list3 = [1, 'hello', 3.14, True]

1.2 使用list()函数

可以使用list()函数将其他可迭代对象转换为列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tuple1 = (1, 2, 3)
list4 = list(tuple1)

string1 = "hello"
list5 = list(string1)  # ['h', 'e', 'l', 'l', 'o']

1.3 列表推导式

列表推导式提供了一种简洁的方式来创建列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
squares = [x**2 for x in range(10)]

2. 访问列表元素

2.1 索引访问

使用索引可以访问列表中的单个元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [10, 20, 30, 40, 50]
print(list1[0])   # 输出: 10
print(list1[-1])  # 输出: 50

2.2 切片

可以使用切片操作来访问列表的一部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [10, 20, 30, 40, 50]
print(list1[1:3])  # 输出: [20, 30]
print(list1[:3])   # 输出: [10, 20, 30]
print(list1[2:])   # 输出: [30, 40, 50]
print(list1[::2])  # 输出: [10, 30, 50]

3. 列表操作

3.1 添加元素

  • append(): 在列表末尾添加一个元素
  • insert(): 在指定位置插入一个元素
  • extend(): 将一个列表的所有元素添加到另一个列表末尾
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3]
list1.append(4)
list1.insert(0, 0)
list1.extend([5, 6])
print(list1)  # 输出: [0, 1, 2, 3, 4, 5, 6]

3.2 删除元素

  • remove(): 删除第一个匹配的元素
  • pop(): 删除并返回指定位置的元素
  • del: 删除指定位置的元素或切片
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3, 2, 4]
list1.remove(2)
popped = list1.pop(1)
del list1[0]
print(list1)  # 输出: [2, 4]

3.3 修改元素

可以直接通过索引修改列表元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3]
list1[1] = 20
print(list1)  # 输出: [1, 20, 3]

3.4 列表连接和重复

使用+运算符连接列表,使用*运算符重复列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2]
list2 = [3, 4]
list3 = list1 + list2
list4 = list1 * 3
print(list3)  # 输出: [1, 2, 3, 4]
print(list4)  # 输出: [1, 2, 1, 2, 1, 2]

4. 列表方法

Python列表提供了多种内置方法:

  • sort(): 对列表进行排序
  • reverse(): 反转列表
  • count(): 计算元素在列表中出现的次数
  • index(): 返回元素在列表中的索引
  • clear(): 清空列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [3, 1, 4, 1, 5, 9, 2]
list1.sort()
print(list1)  # 输出: [1, 1, 2, 3, 4, 5, 9]

list1.reverse()
print(list1)  # 输出: [9, 5, 4, 3, 2, 1, 1]

print(list1.count(1))  # 输出: 2

print(list1.index(4))  # 输出: 2

list1.clear()
print(list1)  # 输出: []

5. 列表解包

可以将列表中的元素解包到多个变量中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3]
a, b, c = list1
print(a, b, c)  # 输出: 1 2 3

# 使用*解包剩余元素
list2 = [1, 2, 3, 4, 5]
first, *middle, last = list2
print(first, middle, last)  # 输出: 1 [2, 3, 4] 5

6. 列表推导式和生成器表达式

6.1 列表推导式

列表推导式提供了一种简洁的方式来创建列表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
squares = [x**2 for x in range(10)]
even_squares = [x**2 for x in range(10) if x % 2 == 0]

6.2 生成器表达式

生成器表达式类似于列表推导式,但它们返回一个生成器对象:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gen = (x**2 for x in range(10))

7. 列表的应用

7.1 栈和队列

列表可以用作栈(后进先出)或队列(先进先出):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 栈
stack = []
stack.append(1)
stack.append(2)
print(stack.pop())  # 输出: 2

# 队列
from collections import deque
queue = deque([])
queue.append(1)
queue.append(2)
print(queue.popleft())  # 输出: 1

7.2 矩阵

列表的列表可以表示矩阵:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(matrix[1][1])  # 输出: 5

8. 列表的性能考虑

  • 在列表末尾添加或删除元素(append, pop)的时间复杂度为O(1)
  • 在列表开头或中间插入或删除元素(insert, pop, del)的时间复杂度为O(n)
  • 访问元素的时间复杂度为O(1)
  • 搜索元素的时间复杂度为O(n)

对于大量数据或频繁的插入/删除操作,可能需要考虑使用其他数据结构,如deque。

元组

元组(tuple)是Python中的一种基本数据结构,与列表类似,但元组是不可变的。虽然它们看似简单,但在适当的场景下使用元组可以带来诸多好处,如提高代码的可读性和执行效率。

1. 元组的创建

1.1 使用圆括号创建

最常见的创建元组的方式是使用圆括号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup1 = (1, 2, 3)
tup2 = ('a', 'b', 'c')

1.2 不使用圆括号

Python也允许省略圆括号来创建元组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup3 = 1, 2, 3
tup4 = 'a', 'b', 'c'

1.3 使用tuple()函数

可以使用tuple()函数将其他可迭代对象转换为元组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [1, 2, 3]
tup5 = tuple(list1)

1.4 创建单元素元组

创建只包含一个元素的元组时,需要在元素后加一个逗号:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup6 = (42,)  # 正确
tup7 = (42)   # 错误,这是一个整数

2. 访问元组元素

2.1 索引访问

使用索引可以访问元组中的单个元素:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 3, 4, 5)
print(tup[0])  # 输出: 1
print(tup[-1]) # 输出: 5

2.2 切片

可以使用切片操作来访问元组的一部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 3, 4, 5)
print(tup[1:3])  # 输出: (2, 3)
print(tup[:3])   # 输出: (1, 2, 3)
print(tup[2:])   # 输出: (3, 4, 5)

3. 元组操作

3.1 连接

可以使用+运算符连接两个或多个元组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup1 = (1, 2, 3)
tup2 = (4, 5, 6)
tup3 = tup1 + tup2
print(tup3)  # 输出: (1, 2, 3, 4, 5, 6)

3.2 重复

使用*运算符可以重复元组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2) * 3
print(tup)  # 输出: (1, 2, 1, 2, 1, 2)

3.3 解包

可以将元组中的元素解包到多个变量中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 3)
a, b, c = tup
print(a, b, c)  # 输出: 1 2 3

4. 元组方法

虽然元组是不可变的,但它们仍然有一些内置方法:

4.1 count()

返回指定元素在元组中出现的次数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 2, 3, 2)
print(tup.count(2))  # 输出: 3

4.2 index()

返回指定元素在元组中首次出现的索引:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 3, 2)
print(tup.index(2))  # 输出: 1

5. 元组的不可变性

元组的一个关键特性是不可变性。这意味着一旦创建,就不能修改元组的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = (1, 2, 3)
# tup[0] = 4  # 这会引发TypeError

然而,如果元组包含可变对象(如列表),这些对象的内容可以被修改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tup = ([1, 2], [3, 4])
tup[0][0] = 5
print(tup)  # 输出: ([5, 2], [3, 4])

6. 元组的应用

6.1 返回多个值

函数可以使用元组来返回多个值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_coordinates():
    return (10, 20)

x, y = get_coordinates()

6.2 字典键

元组可以作为字典的键,而列表不行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dict1 = {(1, 2): 'value'}

6.3 数据保护

由于元组是不可变的,它们可以用来存储不应被修改的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DAYS = ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')

7. 元组与列表的比较

元组和列表有很多相似之处,但也有一些关键区别:

  1. 不可变性: 元组是不可变的,列表是可变的。
  2. 语法: 元组使用圆括号,列表使用方括号。
  3. 性能: 元组通常比列表快,因为它们是不可变的。
  4. 用途: 元组通常用于异构数据,列表用于同类数据。

字典

字典是Python中最有用和最灵活的数据结构之一。它允许我们存储键值对,并通过键快速访问、修改或删除值。本文将全面介绍Python字典的创建、基本操作、高级技巧以及最佳实践。

1. 字典的创建

在Python中创建字典有多种方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用花括号
dict1 = {'name': 'Alice', 'age': 25}

# 使用dict()函数
dict2 = dict(name='Bob', age=30)

# 使用列表的键值对
dict3 = dict([('name', 'Charlie'), ('age', 35)])

# 使用字典推导式
dict4 = {x: x**2 for x in range(5)}

2. 基本操作

2.1 访问元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_dict = {'name': 'David', 'age': 40}

# 使用键访问值
print(my_dict['name'])  # 输出: David

# 使用get()方法(推荐,因为它可以提供默认值)
print(my_dict.get('age', 0))  # 输出: 40
print(my_dict.get('height', 180))  # 输出: 180 (默认值)

2.2 修改和添加元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_dict = {'name': 'Eva', 'age': 45}

# 修改现有键的值
my_dict['age'] = 46

# 添加新的键值对
my_dict['city'] = 'New York'

print(my_dict)  # 输出: {'name': 'Eva', 'age': 46, 'city': 'New York'}

2.3 删除元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_dict = {'name': 'Frank', 'age': 50, 'city': 'Paris'}

# 使用del关键字
del my_dict['age']

# 使用pop()方法
city = my_dict.pop('city')

# 删除并返回最后插入的项
last_item = my_dict.popitem()

print(my_dict)  # 输出: {}

3. 字典方法

Python字典提供了多种有用的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
my_dict = {'a': 1, 'b': 2, 'c': 3}

# keys(), values(), items()
print(my_dict.keys())    # 输出: dict_keys(['a', 'b', 'c'])
print(my_dict.values())  # 输出: dict_values([1, 2, 3])
print(my_dict.items())   # 输出: dict_items([('a', 1), ('b', 2), ('c', 3)])

# clear()
my_dict.clear()
print(my_dict)  # 输出: {}

# copy() - 浅拷贝
original = {'x': 1, 'y': 2}
copied = original.copy()

# update()
original.update({'z': 3, 'y': 20})
print(original)  # 输出: {'x': 1, 'y': 20, 'z': 3}

4. 高级操作和技巧

4.1 合并字典

在Python 3.5+中,我们可以使用**操作符来合并字典:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged = {**dict1, **dict2}
print(merged)  # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

4.2 默认字典

defaultdictdict的一个子类,它可以为不存在的键提供默认值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import defaultdict

dd = defaultdict(list)
dd['fruits'].append('apple')
dd['fruits'].append('banana')
print(dd)  # 输出: defaultdict(<class 'list'>, {'fruits': ['apple', 'banana']})

4.3 有序字典

从Python 3.7开始,常规字典保留了插入顺序。但对于更早的版本,我们可以使用OrderedDict:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import OrderedDict

od = OrderedDict()
od['first'] = 1
od['second'] = 2
od['third'] = 3
print(od)  # 输出: OrderedDict([('first', 1), ('second', 2), ('third', 3)])

4.4 字典推导式

字典推导式提供了一种简洁的方式来创建字典:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 条件字典推导式
even_squares = {x: x**2 for x in range(6) if x % 2 == 0}
print(even_squares)  # 输出: {0: 0, 2: 4, 4: 16}

5. 最佳实践和性能考虑

使用in操作符检查键是否存在:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if 'key' in my_dict:
    # 处理键存在的情况

使用dict.get()方法安全地获取值,避免KeyError:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
value = my_dict.get('key', default_value)

对于大型字典,使用items()方法进行迭代更高效:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for key, value in my_dict.items():
    # 处理键值对

使用collections.Counter快速计数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from collections import Counter
my_list = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
count_dict = Counter(my_list)
print(count_dict)  # 输出: Counter({4: 4, 3: 3, 2: 2, 1: 1})

对于需要频繁修改的大型字典,考虑使用collections.defaultdictcollections.Counter以提高性能。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python 列表、元组、字典及集合操作
注意:当索引超出范围时,Python会报一个IndexError错误,所以,要确保索引不要越界,记得最后一个元素的索引是len(list1) - 1。
py3study
2020/01/19
1.5K0
python列表、元组、字典
列表是由一序列特定顺序排列的元素组成的。可以把字符串,数字,字典等都可以任何东西加入到列表中,列表中的元素之间没有任何关系。列表也是自带下标的,默认也还是从0开始。列表常用方括号表示,即:[],元素用逗号隔开。
py3study
2020/01/15
1.3K0
刚才,我发现了Python强大的内置模块collections
collections 是 Python 的一个内置模块,所谓内置模块的意思是指 Python 内部封装好的模块,无需安装即可直接使用。
Wu_Candy
2022/07/05
3130
Python字典和集合
1 字典字典和列表类似,同样是可变序列,不过与列表不同,字典是无序的。主要特征解释通过键而不是通过索引来读取元素字典类型有时也称为关联数组或者散列表(hash)。它是通过键将一系列的值联系起来的,这样就可以通过键从字典中获取指定项,但不能通过索引来获取。字典是任意数据类型的无序集合和列表、元组不同,通常会将索引值 0 对应的元素称为第一个元素,而字典中的元素是无序的。字典是可变的,并且可以任意嵌套字典可以在原处增长或者缩短(无需生成一个副本),并且它支持任意深度的嵌套,即字典存储的值也可以是列表或其它的字典
虫无涯
2023/02/02
8640
python-for-data-python基础
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list、元组tuple、字典dict和集合set。
皮大大
2021/03/01
1.3K0
python-for-data-python基础
Python黑帽编程2.3 字符串、列表、元组、字典和集合
本节要介绍的是Python里面常用的几种数据结构。通常情况下,声明一个变量只保存一个值是远远不够的,我们需要将一组或多组数据进行存储、查询、排序等操作,本节介绍的Python内置的数据结构可以满足大多数情况下的需求。这一部分的知识点比较多,而且较为零散,需要认真学习。 2.3.1 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 ='Hello World!' var2 ="Python Runoob
用户1631416
2018/04/12
1.8K0
Python黑帽编程2.3 字符串、列表、元组、字典和集合
Python基础语法(四)—列表、元组、字典、集合、字符串
列表 基本概念 列表是有序的元素集合,所有元素放在一对中括号中,用逗号隔开,没有长度限制; 列表索引值以0为开始值,-1为从未尾的开始位置。 列表可以使用+操作符进行拼接,使用*表示重复。 当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙; 列表中的元素可以是不同类型的 列表的使用方式 list = ["zeruns","blog","blog.zeruns.tech",9527,[0,1,2,[1,2]]]#创建一个列表,一个列表里可以有多种数据类型,甚至可以嵌套列表来做二或三
zeruns
2020/03/23
2.6K0
python基础语法——函数、列表、元组和字典
本文基于pycharm编译器,也可以使用Anaconda 里的编译器,将讲解一些python的一些基础语法知识,是对上篇文章的补充,可以和我写的python数据分析——Python语言基础(数据结构基础)结合起来看,有些知识点可能在这篇文章写的不是很全面。
鲜于言悠
2024/03/20
2230
python基础语法——函数、列表、元组和字典
【Python】python创建字典(dict)的几种方法(含代码示例)
字典(Dictionary)是Python中一种非常灵活的数据结构,用于存储键值对(key-value pairs)。在Python中创建字典有多种方法,每种方法都有其特定的使用场景和优势。
程序员洲洲
2024/06/09
1.8K0
【Python】python创建字典(dict)的几种方法(含代码示例)
Python复习 一
从上边可以看出,list直接复制和list[:]分片复制的结果一样,但其实暗藏心急哦!
Mirror王宇阳
2020/11/13
1.3K0
Python3快速入门(三)——Pyth
Python3 中有六种标准数据类型: A、Number(数字) B、String(字符串) C、List(列表) D、Tuple(元组) E、Set(集合) F、Dictionary(字典) Python3 的六种标准数据类型中,Number(数字)、String(字符串)、Tuple(元组)是不可变的,List(列表)、Dictionary(字典)、Set(集合)是可变的。
py3study
2020/01/06
3.7K0
2.0 Python 数据结构与类型
数据类型是编程语言中的一个重要概念,它定义了数据的类型和提供了特定的操作和方法。在 python 中,数据类型的作用是将不同类型的数据进行分类和定义,例如数字、字符串、列表、元组、集合、字典等。这些数据类型不仅定义了数据的类型,还为数据提供了一些特定的操作和方法,例如字符串支持连接和分割,列表支持排序和添加元素,字典支持查找和更新等。因此,选择合适的数据类型是 python 编程的重要组成部分。
王瑞MVP
2023/08/11
6080
python-元组,字典,列表
由于会处理一些json数据,内部字典,列表,元租傻傻分不清,所以这里总结一下他们的特点,便于提取数据 想要知道跟多看官方文档,很详细 https://www.runoob.com/python/python-lists.html 我是看了官方文档后总结后我自己的
全栈程序员站长
2021/05/19
1.2K0
python列表、字典、元组、集合学习笔记
列 表 列表在python里是有序集合对象类型。 列表里的对象可以是任何对象:数字,字符串,列表或者字典,元组。与字符串不同,列表是可变对象,支持原处修改的操作 python的列表是:
没有故事的陈师傅
2019/07/28
2.3K0
Python教程第3章 | 集合(List列表、Tuple元组、Dict字典、Set)
前面我们学习了基本数据类型和变量,现在我们学习Python的四种集合,列表(List)和元组(tuple),字典(Dict),无序列表(Set)
仲君Johnny
2024/01/24
1.1K0
Python教程第3章 | 集合(List列表、Tuple元组、Dict字典、Set)
python学习笔记(2)python数据类型
整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。
大数据小禅
2021/08/16
8640
【利用Python进行数据分析】3-Python的数据结构、函数和文件
元组是一个固定长度,不可改变的Python序列对象,创建元组的最简单方式,是用逗号分隔一列值。当用复杂的表达式定义元组,最好将值放到圆括号内。
用户7886150
2020/12/24
8860
一天快速入门python
Python 是由Guido Van Rossum在 90 年代早期设计,现在是最常用的编程语言之一。特别是人工智能的火热,再加之它的语法简洁且优美,实乃初学者入门AI必备的编程语言。
yuquanle
2019/05/27
8590
python文档:数据结构(列表的特性,del语句,元组,集合,循环技巧)字典,
本章节将详细介绍一些您已经了解的内容,并添加了一些新内容。 5.1. 列表的更多特性 列表数据类型还有很多的方法。这里是列表对象方法的清单:
川川菜鸟
2021/10/18
1.6K0
Python元组与字典
例:d2=dict(name="jerry",age="45",gender="m")
py3study
2020/01/10
9230
相关推荐
Python 列表、元组、字典及集合操作
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验