Python是一种功能强大且受欢迎的编程语言,它提供了许多灵活的数据结构和内置函数,方便我们处理和操作各种类型的数据。其中,序列是Python中最常用的数据结构之一。
无论是处理文本、数字、图像还是其他类型的数据,我们经常需要使用序列进行存储、访问和操作。Python提供了多种序列类型,包括列表(list)、元组(tuple)和字符串(string)。每种序列类型都有其独特的特点和用途,理解它们将有助于更好地利用Python的强大功能。
在本博客系列中,将深入探讨Python序列的不同方面和基础知识开始,逐步介绍序列的创建、索引、切片以及常用的操作和方法。
列表(list)
列表是一种可变的有序序列,用方括号 [ ] 表示。你可以在列表中存储任意类型的元素,包括数字、字符串、甚至其他列表。以下是一些列表的示例:
empty_list = [] numbers = [1 , 2 , 3 , 4 , 5 ] fruits = ['apple','banana','grape'] mixed = [1,'two' , 3.0 , [4,5]] print(empty_list) print(numbers) print(fruits) print(mixed[3])
元组(tuple)
元组是一种不可变的有序序列,用圆括号 () 表示。与列表不同,元组的元素不能被修改。
numbers1 = (1 , 2 , 3 , 4 , 5 ) fruits1 = ('apple','banana','grape') mixed1 = (1,'two' , 3.0 , (4,5)) print(numbers1) print(fruits1) print(mixed1[3])
这样看是一样的,元组和列表,除了括号不一样,其他都很相似,那么怎么看出他们的区别呢?
1)可变性(Mutability): 列表是可变的(mutable),这意味着你可以修改列表的元素、添加新元素或删除元素。而元组是不可变的(immutable),一旦创建,元组的元素不能被修改。
empty_list = [] numbers = [1 , 2 , 3 , 4 , 5 ] fruits = ['apple','banana','grape'] mixed = [1,'two' , 3.0 , [4,5]] fruits[0] = 'orange' print(empty_list) print(numbers) print(fruits) print(mixed[3]) numbers1 = (1 , 2 , 3 , 4 , 5 ) fruits1 = ('apple','banana','grape') mixed1 = (1,'two' , 3.0 , (4,5)) fruits1[0] = 'orange' print(numbers1) print(fruits1) print(mixed1[3])
在上面的示例中,我们成功地修改了fruits列表的第一个元素apple(orange),但尝试修改元组的第一个元素时会引发 TypeError,因为元组是不可变的!
除了对列表中现有元素进行修改外,还可以使用 append( ) 向列表中添加新元素:
fruits = ['apple','banana','grape'] fruits[0] = 'orange' print(fruits) fruits[0]='peach' fruits = fruits + ['kiwi'] fruits.append('pineapple') print(fruits)
#如果非要修改元组的话,我们要用重新赋值的方式操作:
fruits = ('apple','banana','grape') fruits = ('apple','banana','kiwi') print(fruits)
2) 内存占用和性能:由于列表是可变的,它们需要额外的内存空间来处理动态修改的操作。而元组是不可变的,它们在内存中的占用更小,因为不需要为可能的修改操作分配额外的空间。可以使用 Python 的 sys 模块来测试对象在内存中的大小。
import sys my_list = [1, 2, 3] my_tuple = (1, 2, 3) print(sys.getsizeof(my_list)) print(sys.getsizeof(my_tuple))
在上面的示例中,我们使用 sys.getsizeof() 函数获取对象在内存中的大小。通常情况下,列表的大小会比元组大。
使用场景和适用性: 由于列表是可变的,它们通常用于存储需要频繁修改的数据,或者用于实现数据集合的动态性。而元组的不可变性使其适用于存储不可变的数据,例如表示坐标、日期时间或其他不应修改的数据。
del 删除元素
fruits = ['apple','banana','grape'] fruits[0] = 'orange' print(fruits) fruits[0]='peach' fruits = fruits + ['kiwi'] fruits.append('pineapple') print(fruits) del fruits[3] print(fruits)
#只能删除列表中的元素,不能删除元组中的元素,只能删除整个元组:
del fruits[0] print(fruits) # del fruits # print(fruits)
#del fruits[0] #print(fruits) del fruits print(fruits)
#由于元组实例被删除,所以输出了异常信息。
count( )
统计列表中某个元素出现的次数:
dictionary = ['w','o', 'x','i', 'h','u','a', 'x','u','e', 'x','i', 'p','y','t','h','o','n'] print(dictionary.count('i'))
index( )
查找某个元素在列表中首次出现的位置(即索引)
dictionary = ['w','o', 'x','i', 'h','u','a', 'x','u','e', 'x','i', 'p','y','t','h','o','n'] print(dictionary.count('i')) print(dictionary.index('i'))
remove( )
移除列表中某个值的首次匹配项
dictionary = ['a','i','c','q','i','c','b'] print(dictionary.count('i')) print(dictionary.index('i')) test = dictionary.remove('i') print(test) print(dictionary)
在 Python 中,列表的 remove() 方法用于从列表中删除指定的元素。该方法会修改原始列表,并且不返回任何值(即返回 None)。因此,当你打印 test 变量时,它的值会是 None,这表明成功删除了指定的元素。
copy( )
复制列表
dictionary = ['a','i','c','q','i','c','b'] # print(dictionary.count('i')) # print(dictionary.index('i')) # test = dictionary.remove('i') # print(test) # print(dictionary) copy_text = dictionary.copy() print(copy_text)
字符串是由字符组成的不可变序列,用单引号 '' 或双引号 "" 表示。字符串可以进行索引和切片操作。
empty_list = []
numbers = [1, 2, 3, 4, 5]
fruits = ['apple', 'banana', 'orange']
mixed = [1, 'two', 3.0, [4, 5]]
name = 'Richard'
sentence = "I love Python!"
special_chars = '@#$%^'
empty_string = ''
print(numbers[0])
print(fruits[1])
print(name[2])
fruits = ['apple','banana','grape','orange']
conbined = fruits + ['strawberry','lemon']
print(conbined)
sentence = 'I LOVE STUDY PYTHON'
name = 'Richard'
numbers = [1, 2, 3, 4, 5]
print(numbers[1:4])
print(name[1:4])
print(sentence[:6])
print(sentence[7:])
fruits = ['apple','mango','kiwi']
print(fruits[0] * 2)
Python 使用 in
关键字检查某元素是否为序列的成员,语法如下:
val in seq
val:要检查的元素;
seq:指定的序列。
fruits = ['apple','mango','kiwi']
print(fruits[0] * 2)
print('apple' in fruits)
print('stawberry' in fruits)
print('watermelon' not in fruits)
内置函数是Python语言中预先定义好的函数,它们可以直接使用,无需导入其他模块。Python提供了丰富的内置函数来执行各种常见的任务,包括数学运算、字符串处理、列表和字典操作、文件操作等。下面是一些常用的内置函数及其描述:
函数名 | 描述 |
---|---|
abs(x) |
返回一个数的绝对值。 |
len(s) |
返回一个序列(字符串、列表、元组等)的长度。 |
range(start, stop, step) |
生成一个整数序列,以供迭代使用。 |
round(number, ndigits) |
对一个数进行四舍五入。 |
str(object) |
将一个对象转换为字符串表示形式。 |
int(x) |
将一个数值或字符串转换为整数。 |
float(x) |
将一个数值或字符串转换为浮点数。 |
max(iterable) |
返回一个序列中的最大值。 |
min(iterable) |
返回一个序列中的最小值。 |
sum(iterable) |
返回一个序列中所有元素的总和。 |
sorted(iterable) |
返回一个排序后的列表。 |
reversed(sequence) |
返回一个反向迭代器,用于反向遍历序列。 |
sentence = 'ilovepython'
fruits = ['apple','mango','kiwi']
my_list = [1,2,3,4]
print(str(my_list))
print(len(sentence))
print(max(sentence))
print(sorted(sentence))
print(min(sentence))
将列表转换为元组
fruits = ['apple','banana','grape']
fruit = tuple(fruits)
print(fruit)