一文搞懂Python中列表List和元组Tuple的使用

Python 中列表(List)和元组(Tuple)

在 Python 中,列表和元组都是序列类型,具有一些相似的操作。但是它们的性质不同,我们需要正确地选择它们来存储和操作数据。下面我们来一步步地介绍这两种序列类型的性质和使用方法。

列表(List)

列表是一种可变序列类型。它的每个元素可以是不同类型的对象,列表内的元素可以随意地进行添加、删除和修改。

创建列表

列表可以使用中括号 [ ] 或者内置函数 list() 来创建。例如:

# 创建一个空列表
list1 = []

# 创建一个带有元素的列表
list2 = [1, 2, 3, 'hello', 'world']

# 使用 list() 函数创建列表
list3 = list('abc')

访问列表元素

我们可以使用下标(索引)来访问列表中的元素。下标从 0 开始,从左往右依次增加,从右往左则从 -1 开始,依次递减。例如:

list1 = [1, 2, 3, 'hello', 'world']

# 访问列表元素
print(list1[0])     # 1
print(list1[3])     # 'hello'
print(list1[-1])    # 'world'

列表切片

通过切片(slice)操作,我们可以获取列表中的一段子列表。切片操作使用 : 符号,形式为 [start:end:step],其中 start 表示切片的起始位置,end 表示切片的结束位置(不包含),step 表示切片的步长。例如:

list1 = [1, 2, 3, 'hello', 'world']

# 获取子列表
print(list1[2:4])       # [3, 'hello']
print(list1[:3])        # [1, 2, 3]
print(list1[::-1])      # ['world', 'hello', 3, 2, 1]

列表的修改

列表是一种可变类型,我们可以通过下标来修改它的值。例如:

list1 = [1, 2, 3, 'hello', 'world']

# 修改列表元素
list1[3] = 'Python'
print(list1)    # [1, 2, 3, 'Python', 'world']

我们还可以使用列表的一些内置方法来修改它的值或者结构。例如:

list1 = [1, 2, 3, 'hello', 'world']

# 添加元素
list1.append('Python')
print(list1)    # [1, 2, 3, 'hello', 'world', 'Python']

# 删除元素
list1.remove('hello')
print(list1)    # [1, 2, 3, 'world', 'Python']

# 插入元素
list1.insert(0, 0)
print(list1)    # [0, 1, 2, 3, 'world', 'Python']

# 合并列表
list2 = [4, 5]
list1.extend(list2)
print(list1)    # [0, 1, 2, 3, 'world', 'Python', 4, 5]

列表的拷贝

当我们想要对列表进行拷贝时,需要注意它的性质。列表的赋值和拷贝都只是对列表的引用进行了复制和传递。如果直接将列表赋值给一个新的变量,那么这个新变量和原列表都指向了同一个地址。

因此,我们需要使用 copy() 方法或者切片操作来进行列表的拷贝。例如:

list1 = [1, 2, 3, 'hello', 'world']

# 使用赋值进行拷贝
list2 = list1
list2[3] = 'Python'
print(list1)    # [1, 2, 3, 'Python', 'world']
print(list2)    # [1, 2, 3, 'Python', 'world']

# 使用 copy() 方法进行拷贝
list3 = list1.copy()
list3[3] = 'Java'
print(list1)    # [1, 2, 3, 'Python', 'world']
print(list3)    # [1, 2, 3, 'Java', 'world']

# 使用切片进行拷贝
list4 = list1[:]
list4[3] = 'PHP'
print(list1)    # [1, 2, 3, 'Python', 'world']
print(list4)    # [1, 2, 3, 'PHP', 'world']

示例1:列表作为函数参数

我们可以使用列表作为函数的参数,将列表传递给函数并在函数内对列表进行修改。例如:

# 定义函数
def modify_list(lst):
    lst.append('hello')
    lst[1] = 'Python'

# 调用函数
list1 = [1, 2, 3]
modify_list(list1)
print(list1)    # [1, 'Python', 3, 'hello']

示例2:列表解析

列表解析(List Comprehension)是一种简洁而强大的列表创建方式。它可以很方便地对列表进行过滤、映射和计算。例如:

# 创建一个列表
list1 = [1, 2, 3, 4, 5]

# 过滤偶数
list2 = [x for x in list1 if x % 2 == 0]
print(list2)    # [2, 4]

# 映射平方
list3 = [x ** 2 for x in list1]
print(list3)    # [1, 4, 9, 16, 25]

# 计算和
sum1 = sum([x ** 2 for x in list1])
print(sum1)     # 55

元组(Tuple)

元组是一种不可变序列类型。它的每个元素可以是不同类型的对象,但是元组内的元素不允许进行添加、删除和修改。

创建元组

元组可以使用小括号 ( ) 或者内置函数 tuple() 来创建。例如:

# 创建一个空元组
tuple1 = ()

# 创建一个带有元素的元组
tuple2 = (1, 2, 3, 'hello', 'world')

# 使用 tuple() 函数创建元组
tuple3 = tuple('abc')

访问元组元素

我们可以使用下标(索引)来访问元组中的元素。元组同样从 0 开始,从左往右依次增加,从右往左则从 -1 开始,依次递减。例如:

tuple1 = (1, 2, 3, 'hello', 'world')

# 访问元组元素
print(tuple1[0])     # 1
print(tuple1[3])     # 'hello'
print(tuple1[-1])    # 'world'

元组切片

元组同样支持切片操作,使用方式与列表相同。

元组操作

虽然元组是不可变类型,但是我们可以通过一些操作来创建新的元组。

例如,我们可以将两个或多个元组连接起来形成一个新的元组,可以使用 + 符号:

tuple1 = (1, 2, 3)
tuple2 = ('hello', 'world')

# 连接元组
tuple3 = tuple1 + tuple2
print(tuple3)    # (1, 2, 3, 'hello', 'world')

我们也可以将一个元组复制多次来形成一个新的元组,可以使用 * 符号:

tuple1 = ('hello', 'world')

# 复制元组
tuple2 = tuple1 * 3
print(tuple2)   # ('hello', 'world', 'hello', 'world', 'hello', 'world')

元组解包

元组解包(Tuple Unpacking)是一种非常方便的语法,可以将元组中的多个元素一次性地解包给多个变量。例如:

tuple1 = ('hello', 'world')

# 元组解包
word1, word2 = tuple1

print(word1)    # 'hello'
print(word2)    # 'world'

示例1:元组作为函数返回值

元组通常可以作为函数的返回值,用来返回多个值。例如:

# 定义函数
def calculate(a, b):
    return (a + b, a - b, a * b)

# 调用函数
x, y, z = calculate(3, 4)
print(x, y, z)  # 7, -1, 12

示例2:元组作为字典键

元组通常也可以作为字典的键值,因为元组是不可变类型,它的内容是固定的,不会发生更改。

# 创建字典
dict1 = {('hello', 'world'): [1, 2, 3]}

# 使用元组作为键访问字典
print(dict1[('hello', 'world')])     # [1, 2, 3]

总结

在 Python 中,列表和元组都是序列类型,但是它们的性质不同。列表是可变类型,可以任意修改;而元组是不可变类型,一旦创建就无法更改。我们需要根据实际需要选择合适的数据类型,并学会使用它们的相应方法和技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一文搞懂Python中列表List和元组Tuple的使用 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python实战之实现获取动态图表

    Python实战之实现获取动态图表 1. 确定获取的数据来源 首先需要确定所要获取的数据来源,可以是某个网站上的数据或者是从API中获取的数据。 2. 安装必要的Python库 在Python中获取动态图表数据需要使用一些必要的库,例如matplotlib和selenium。可以使用pip命令安装它们。 pip install matplotlib sele…

    python 2023年6月3日
    00
  • python 快速把超大txt文件转存为csv的实例

    下面是详细的讲解: 步骤一:读取txt文件并转换为二维列表 首先,我们需要使用Python中的内置函数打开并读取文本文件。在本示例中,建议使用with open()语句打开文件,以确保在读取完文件后关闭它。读取文件后,我们可以使用splitlines()方法分割文件中的所有行,并使用split()方法分割每一行的各项数据,最终形成一个二维列表。 在本示例中,…

    python 2023年6月3日
    00
  • 关于Django框架的关系模型序列化和一对多关系中的序列化解析

    首先我们来讲解Django框架中的关系模型序列化。 关系模型序列化 关系模型指的是模型中的外键关系,比如一个Blog模型有多个Article模型,我们把Article模型作为Blog模型的外键,用ForeignKey字段来表示,这就构成了一个一对多的关系模型。在Django中,我们可以通过使用序列化器对关系模型进行序列化。 我们先定义一个Blog模型和一个A…

    python 2023年6月6日
    00
  • python获取微信小程序手机号并绑定遇到的坑

    下面是“Python获取微信小程序手机号并绑定遇到的坑”的完整攻略。 1. 准备工作 在进行微信小程序手机号获取之前,需要先获取用户的授权。授权方式分为两种:一种是通过用户点击事件展示授权窗口;另一种是在页面加载时就调用授权接口。由于第一种较为常见,本攻略也采用第一种方式进行讲解。 授权窗口的代码如下: <button open-type="…

    python 2023年5月23日
    00
  • Python 中使用 argparse 解析命令行参数

    使用 argparse 可以方便地解析命令行参数,以下是解析命令行参数的完整攻略: 安装 argparse argparse 是 Python 的标准库,因此它不需要额外的安装。 导入 argparse 模块 在使用 argparse 之前需要在代码中导入 argparse 模块: import argparse 创建 ArgumentParser 对象 使…

    python 2023年6月3日
    00
  • Python学习之yaml文件的读取详解

    下面我将详细讲解“Python学习之yaml文件的读取详解”的完整攻略。 1. YAML文件是什么? 在开始讲解如何读取YAML文件之前,需要先了解一下什么是YAML文件。 YAML(YAML Ain’t Markup Language)是一种用来序列化数据的格式,与JSON、XML等常见的数据交换格式一样,具有良好的可读性、易于理解的特点。它在数据交换、系…

    python 2023年5月20日
    00
  • Django 拼接两个queryset 或是两个不可以相加的对象实例

    想要拼接两个queryset或是两个不可以相加的对象实例,可以使用Django中的chain()函数或者Q()函数。 chain()函数的使用 chain()函数可以链接多个iterable对象并生成一个迭代器,可以用于链接两个queryset或者多个对象实例。首先需要导入chain函数: from itertools import chain 接下来,可以…

    python 2023年5月14日
    00
  • Python 使用reduce()和partial()

    下面是 Python 使用 reduce() 和 partial() 的完整攻略。 reduce() 函数 reduce() 函数是 Python 内置的一个函数,可以对一个列表或可迭代对象中的所有元素连续使用一个函数进行操作,得到最终的结果。例如,我们可以通过 reduce() 函数来实现对列表中所有元素进行相加的操作。 reduce() 函数的用法如下所…

    python-answer 2023年3月25日
    00
合作推广
合作推广
分享本页
返回顶部