Python序列操作指南:列表、字符串和元组的基本用法和操作

简介: Python序列操作指南:列表、字符串和元组的基本用法和操作

序列


序列是Python中最基本的一种数据结构,它用于保存一组有序的数据。所有的数据在序列中都有一个唯一的位置(索引),并且序列中的数据会按照添加的顺序来分配索引。Python中的序列包括列表、字符串、元组等类型。

列表


列表是Python中最常用的数据类型之一,它是一个可变的有序序列,可以通过索引来访问其中的元素。下面是一些常见的操作:

创建列表


列表可以通过方括号 [] 来创建,其中可以包含任意类型的元素。

my_list = [1, 2, "hello", 3.5, True]
print(my_list)  # 输出:[1, 2, 'hello', 3.5, True]

访问元素


可以通过索引来访问列表中的元素,索引从0开始,表示第一个元素。

my_list = [1, 2, "hello", 3.5, True]
# 访问第一个元素
print(my_list[0])  # 输出:1
# 访问倒数第一个元素
print(my_list[-1])  # 输出:True

修改元素


可以通过索引来修改列表中的元素。

my_list = [1, 2, "hello", 3.5, True]
# 修改第三个元素
my_list[2] = "world"
print(my_list)  # 输出:[1, 2, 'world', 3.5, True]

添加和删除元素


可以使用append() 方法向列表末尾添加元素,使用 insert()方法在指定位置插入元素,使用 pop() 方法删除指定位置的元素。

my_list = [1, 2, "hello", 3.5, True]
# 添加元素
my_list.append("how are you")
print(my_list)  # 输出:[1, 2, 'hello', 3.5, True, 'how are you']
# 在指定位置插入元素
my_list.insert(2, "Python")
print(my_list)  # 输出:[1, 2, 'Python', 'hello', 3.5, True, 'how are you']
# 删除指定位置的元素
my_list.pop(2)
print(my_list)  # 输出:[1, 2, 'hello', 3.5, True, 'how are you']

range()


range()函数用于生成一个自然数序列,具体如下:


range()函数可以使用三个参数进行调用,分别是起始位置、结束位置和步长。具体说明如下:


  1.如果只提供一个参数,即range(stop),则默认起始位置为0,步长为1,生成一个从0到stop-1的自然数序列。

r = range(5)  # 生成序列[0, 1, 2, 3, 4]

  2.如果提供两个参数,即range(start, stop),则生成一个从startstop-1的自然数序列,步长默认为1。

r = range(0, 10)  # 生成序列[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

  3.如果提供三个参数,即range(start, stop, step),则生成一个从startstop-1的自然数序列,步长为step

r = range(0, 10, 2)  # 生成序列[0, 2, 4, 6, 8]
r = range(10, 0, -1)  # 生成序列[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

需要注意的是,range()函数返回的是一个range对象,而不是直接返回一个列表。如果需要将range对象转换为列表,可以使用list()函数进行转换,如list(range(5))。

通过range()函数可以方便地在for循环中执行指定次数的迭代操作,可以更简洁地实现类似的效果。

字符串


字符串是一种不可变的序列类型,表示由一系列字符组成的对象。下面是一些常见的操作:

创建字符串


字符串可以通过单引号 ' ' 或双引号 " " 来创建。

my_string = "hello world"
print(my_string)  # 输出:hello world

访问字符


可以通过索引来访问字符串中的字符,索引从0开始,表示第一个字符。

my_string = "hello world"
访问字符
可以通过索引来访问字符串中的字符,索引从0开始,表示第一个字符。
my_string = "hello world"

访问字符


可以通过索引来访问字符串中的字符,索引从0开始,表示第一个字符。

my_string = "hello world"
# 获取前5个字符
print(my_string[:5])  # 输出:hello
# 获取从第6个字符开始到最后的子字符串
print(my_string[6:])  # 输出:world

修改字符串


由于字符串是不可变类型,不能直接修改其中的字符。如果需要修改字符串,可以使用字符串的切片和加法操作来实现。

my_string = "hello world"
# 修改第一个字符
my_string = "H" + my_string[1:]
print(my_string)  # 输出:Hello world

元组


元组是一种不可变的序列类型,表示由一系列元素组成的对象。与列表不同,元组的元素不可更改。


下面是一些常见的操作:


创建元组

元组可以通过圆括号 () 来创建,其中可以包含任意类型的元素。

my_tuple = (1, 2, "hello", 3.5, True)
print(my_tuple)  # 输出:(1, 2, 'hello', 3.5, True)

访问元素


可以通过索引来访问元组中的元素,索引从0开始,表示第一个元素。

my_tuple = (1, 2, "hello", 3.5, True)
# 访问第一个元素
print(my_tuple[0])  # 输出:1
# 访问倒数第一个元素
print(my_tuple[-1])  # 输出:True

获取元素数量


  1.可以使用 len() 方法获取元组中元素的数量。

my_tuple = (1, 2, "hello", 3.5, True)
# 获取元素数量
print(len(my_tuple))  # 输出:5

元组的特点:


  1.元组使用圆括号 () 来创建,可以是空元组或包含多个元素的元组。

empty_tuple = ()
my_tuple = (1, 2, 3, 4, 5)

  2.元组中的元素可以是任意数据类型,并且元素之间用逗号 , 分隔。

my_tuple = (10, 'hello', True, [1, 2, 3])

  3.元组是不可变的,意味着一旦创建,就不能修改元组的元素。尝试修改元组的元素会引发 TypeError 错误。

my_tuple[0] = 100  # 报错:TypeError: 'tuple' object does not support item assignment

  4.可以使用索引访问元组中的元素,索引从0开始。也可以使用切片来获取元组的子集。

print(my_tuple[0])     # 输出:10
print(my_tuple[1:3])   # 输出:('hello', True)

  5.元组支持解包(或称为解构),可以将元组的每个元素赋值给一个变量。

a, b, c, d = my_tuple
print(a)  # 输出:10
print(b)  # 输出:'hello'

  6.如果不确定元组的长度,可以使用 * 来获取剩余的元素。

a, *b = my_tuple
print(a)  # 输出:10
print(b)  # 输出:['hello', True, [1, 2, 3]]

元组在以下情况下比较有用:

  当希望数据不可变时,可以使用元组作为容器。


  在函数中返回多个值时,可以使用元组简洁地返回多个值。


请注意,元组是不可变对象,所以无法向元组中添加、删除或修改元素。如果需要在操作数据时进行修改,应使用列表(list)类型。

可变对象


每个对象中都保存了三个数据:

  ▪id(标识)


  type(类型)


  value(值)


对于列表来说,它就是一个可变对象。比如我们有一个列表 a = [1, 2, 3]

现在让我们来进行一些操作:

改变对象的值


我们可以通过变量去修改对象的值,例如 a[0] = 10。这个操作并不会改变变量所指向的对象,而只是修改了对象的值。

请注意以下几点:

  ▪当我们修改对象时,如果有其他变量也指向了该对象,那么修改也会在其他变量中体现。

 

  ▪修改对象的值并不会改变变量本身。


改变变量的指向


除了改变对象的值,我们还可以给变量重新赋值来改变其指向的对象。例如,执行 a = [4, 5, 6]。

请注意以下几点:

给变量重新赋值会改变变量所指向的对象。


为一个变量重新赋值时,不会影响其他的变量。


总结起来,只有在为变量赋值时才是真正修改了变量,而其他操作都是在修改对象。

下面是一个代码示例,帮助理解上述概念:

a = [1, 2, 3]
b = a
print(a)  # 输出:[1, 2, 3]
print(b)  # 输出:[1, 2, 3]
a[0] = 10
print(a)  # 输出:[10, 2, 3]
print(b)  # 输出:[10, 2, 3]
a = [4, 5, 6]
print(a)  # 输出:[4, 5, 6]
print(b)  # 输出:[10, 2, 3]

比较运算符


在Python中,我们有几种比较运算符可以用来比较两个对象的值和身份:


==:比较两个对象的值是否相等。


!=:比较两个对象的值是否不相等。


is:比较两个对象的身份是否相等,即是否指向同一个对象。


is not:比较两个对象的身份是否不相等。


考虑以下代码:

a = [1, 2, 3]
b = [1, 2, 3]
print(a, b)
print(id(a), id(b))
print(a == b)  # 输出:True,a和b的值相等
print(a is b)  # 输出:False,a和b不是同一个对象

在这个例子中,我们创建了两个列表 a b,它们的值是相等的,但它们不是同一个对象。所以,使用==运算符会返回True,而使用is运算符会返回False

总结


本篇博文涵盖了多个与序列相关的主题。

首先,我们介绍了不同类型的序列,包括列表、字符串和元组。我们讨论了如何创建和访问它们,并提供了修改元素、添加和删除元素的方法。接下来,我们介绍了range()函数,它可以方便地生成自然数序列,用于循环和迭代操作。

在讨论字符串方面,我们学习了如何创建字符串、访问单个字符以及使用切片来获取子串。此外,我们指出了字符串是不可变对象,无法直接修改,但可以通过创建新的字符串来实现修改。

当讨论元组时,我们解释了如何创建元组、访问元素以及获取元组的长度。同时,我们强调了元组是不可变对象,一旦创建就无法修改。我们还介绍了如何改变对象的值和改变变量指向的操作。

总体而言,本篇博文提供了关于序列、range()函数、字符串和元组的基本知识和操作。这些内容对于编程中处理数据、循环迭代和操作不同类型的序列非常重要。

希望本篇博文能够帮助您对序列和相关操作有更清晰的了解。

相关文章
|
7天前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
25天前
|
Python
探索Python中的列表推导式
【10月更文挑战第20天】在编程世界里,时间就是一切。Python的列表推导式是节约时间、简化代码的一大利器。本文将带你深入理解并有效利用这一强大工具,从基础到高级用法,让你的代码更加简洁高效。
|
25天前
|
Python
SciPy 教程 之 SciPy 模块列表 6
SciPy教程之常量模块介绍:涵盖公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率及力学单位。示例展示了角度单位转换为弧度的几个常用常量。
19 7
|
25天前
|
Python
SciPy 教程 之 SciPy 模块列表 7
`scipy.constants` 模块提供了常用的时间单位转换为秒数的功能。例如,`constants.hour` 返回 3600.0 秒,表示一小时的秒数。其他常用时间单位包括分钟、天、周、年和儒略年。
17 6
WK
|
25天前
|
Python
Python创建元组
必须在这个元素后面加上一个逗号,否则 Python 会把它当作一个普通的带圆括号的表达式而不是元组
WK
15 4
|
22天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
17 1
|
23天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
24天前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
14 1
|
24天前
|
Python
SciPy 教程 之 SciPy 模块列表 8
SciPy教程之常量模块单位类型介绍。该模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例展示了部分长度单位的转换值,例如英寸、英尺、海里等。
15 1
|
24天前
|
C语言 开发者 Python
探索Python中的列表推导式:简洁而强大的工具
【10月更文挑战第21天】在Python的世界里,代码的优雅与效率同样重要。列表推导式(List Comprehensions)作为一种强大而简洁的工具,允许开发者通过一行代码完成对列表的复杂操作。本文将深入探讨列表推导式的使用方法、性能考量以及它如何提升代码的可读性和效率。