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

yizhihongxing

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日

相关文章

  • 解决Python3错误:SyntaxError: unexpected EOF while parsin

    当我们在Python3中编写代码时,有时候会遇到SyntaxError: unexpected EOF while parsing的错误。这个错误通常是由于代码中存在语法错误或缺少代码的一部分导致。本攻略将介绍如何决这个问题,并提供一些示例。 问题描述 在Python3中,当我们编写时,有时候会遇到以下错误: SyntaxError: unexpected …

    python 2023年5月13日
    00
  • 详解python文件的操作和异常的处理

    详解Python文件的操作和异常的处理 在Python中,文件是一个非常重要的概念,因为我们经常需要从文件中读取数据和将数据写入文件中。此外,当我们在处理文件时,常常需要处理异常,以避免程序崩溃和数据丢失。本文将详细介绍Python文件的操作和异常的处理,以及几个实际示例。 打开和关闭文件 在Python中,要打开一个文件,可以使用open()函数,该函数提…

    python 2023年5月13日
    00
  • Python可变集合和不可变集合的构造方法大全

    Python可变集合和不可变集合的构造方法大全 Python中集合(Set)是一个无序、不重复的元素集,它支持交集、并集、差集等运算,可以方便地进行集合操作。 在Python中,集合分为可变集合和不可变集合两种类型,可变集合可以添加或删除元素,而不可变集合则不允许修改。本文将对Python中可变集合和不可变集合的构造方法进行详细讲解。 Python可变集合 …

    python 2023年5月13日
    00
  • Python argparse中的action=store_true用法小结

    Python argparse中的action=store_true用法小结攻略如下: 1. 理解action=store_true 在Python中的argparse模块中,action是参数值如何被处理的方式,其中,action=store_true表示在命令行中指定该参数时,该参数对应的值为True,不指定则为False。 在argparse中,使用p…

    python 2023年6月3日
    00
  • Python 爬虫多线程详解及实例代码

    Python 爬虫多线程详解及实例代码 简介 本文主要介绍使用 Python 编写爬虫时如何使用多线程进行爬取优化。在爬虫程序中,请求网页数据是很常见的操作,但是一个请求需要等待相应的时间,这样在等待的时候程序就阻塞,导致程序运行效率低下。而使用多线程能够使程序并发请求数据,从而提高程序运行效率。 多线程编程 使用 threading 库创建多线程 Pyth…

    python 2023年5月14日
    00
  • 解决Python requests 报错方法集锦

    解决Python requests报错方法集锦 在Python中,requests是一个常用的HTTP库,用于发送HTTP请求和处理HTTP响应。在使用requests库时,有时会遇到各种报错,例如“requests.exceptions.SSLError: HTTPSConnectionPool”requests.exceptions.Connection…

    python 2023年5月13日
    00
  • python 使用sys.stdin和fileinput读入标准输入的方法

    首先,我们需要了解什么是标准输入。标准输入是指程序的默认输入,通常是从键盘输入数据。在Python中,我们可以使用sys.stdin和fileinput模块来读入标准输入数据。 使用sys.stdin读入标准输入 sys.stdin是Python标准库中的一个文件对象,可以用来读取标准输入。使用sys.stdin读取标准输入的方法如下: import sys…

    python 2023年6月2日
    00
  • python 正则表达式的使用

    Python正则表达式的使用攻略 正则表达式是一种强大的文本处理工具,可以用于匹配、查找、替换和割字符串。Python提供了re模块来处理正则表达式,本文将为您详细解Python正则表达式的语法、re模块的常用方法和两个示例说明。 正则表达式的语法 在正则表达式中,使用[]表示字符集,^表示取反,-表示范围,+表示匹配一个或多个字符,*表示匹配零个或多个字符…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部