序列:在Python中,序列是指一种数据类型,用来表示一系列按特定顺序排列的值。常见的序列类型包括列表(list)、元组(tuple)、字符串(string)等。
列表(List)
列表是Python中最常用的序列类型之一,可包含任意数量的元素,而且这些元素可以是不同类型的。列表使用方括号 []
定义,元素之间使用逗号 ,
分隔。列表支持增加,删除,修改,切片等操作。
my_list = [1, 2, 3, 4, 5]
元组(Tuple)
元组是另一种序列类型,与列表相似,但元组一旦创建后就不能修改,元组使用圆括号 ()
定义,元素之间也使用逗号 ,
分隔。
my_tuple = (1, 2, 3, 4, 5)
字符串(String)
字符串也是一种序列类型,表示一系列字符按特定顺序排列。字符串可以使用单引号 '
或双引号 "
来定义。
my_string = "Hello, World!"
除了以上三种常见的序列类型,Python还提供了其他内置的序列类型,如字节序列(bytes)、字节数组(bytearray)、范围(range)等。
序列类型具有一些通用的特性和操作,例如索引访问,切片,加法,乘法,成员资格检查,长度和最值,遍历,存在性问题,翻转等。这些通用操作使得在处理序列类型时可以使用相似的语法和方法,从而提高了代码的可读性和编写效率。
列表的索引查找
在列表中,可以使用索引来访问列表中的特定元素。列表的索引从0开始,即第一个元素的索引为0,第二个元素的索引为1,依此类推。可以使用索引值在列表中查找对应位置的元素。
my_list = [10, 20, 30, 40, 50]
print(my_list[0]) # 输出:10
print(my_list[2]) # 输出:30
print(my_list[-1]) # 输出:50
print(my_list[-2]) # 输出:40
列表的切片
切片操作可以从列表中获取子列表,可以指定起始索引、结束索引和步长来获取不同的子列表。
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(my_list[2:5]) # 输出:[3, 4, 5]
print(my_list[::2]) # 输出:[1, 3, 5, 7, 9]
print(my_list[-10:5]) # 输出:[1,2,3,4,5,,6]
列表的加法和乘法
列表支持加法操作和乘法操作。加法操作将两个列表合并为一个新的列表,而乘法操作将列表重复指定次数。
list1 = [1, 2, 3]
list2 = [4, 5, 6]
new_list = list1 + list2 # 加法操作
print(new_list) # 输出:[1, 2, 3, 4, 5, 6]
my_list = [1, 2, 3]
new_list = my_list * 3 # 乘法操作
print(new_list) # 输出:[1, 2, 3, 1, 2, 3, 1, 2, 3]
列表的成员资格
可以使用 in
运算符来检查一个元素是否存在于列表中,返回结果为布尔值。
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # 输出:True
print(6 in my_list) # 输出:False
创建列表
可以使用方括号 []
来创建一个列表,也可以使用 list()
函数将其他可迭代对象(如元组、字符串)转换为列表。
my_list = [1, 2, 3, 4, 5]
another_list = list((6, 7, 8, 9, 10))
# 创建一个空的列表
arr = []
print(arr)
# 创建一个具有若干元素的列表
arr = [1, 2, 3, 4]
print(arr)
# 创建一个具有长度但是没有值的列表
arr = [None] * 5
print(arr)
# 通过【列表推导式/解析式】来进行创建
# [目标值表达式 for 目标值 in 迭代对象 if ....]
# 创建1~100当中 能够被3整除 且 能够被5整除 的所有数字
"""
for x in range(1, 101):
if x % 3 == 0 and x % 5 == 0:
print(x)
"""
arr = [x for x in range(1, 101) if x % 3 == 0 and x % 5 == 0]
print(arr)
# 创建1~100当中 偶数
arr = [x for x in range(1, 101) if x % 2 == 0]
print(arr)
# 水仙花数
for num in range(100, 1000):
a = num % 10
b = num // 10 % 10
c = num // 100
if a ** 3 + b ** 3 + c ** 3 == num:
print(num)
arr = [num for num in range(100, 1000) if (num % 10) ** 3 + (num // 10 % 10) **
3 + (num // 100) ** 3 == num]
print(arr)
arr = [x * 3 + "哈哈" for x in "ABCDEFG"]
print(arr)
# 通过输入来获取元素
"""
5
"1" "2" "3" "4" "5"
"""
n = eval(input())
arr = input().split(" ") # 将输入的数据以空格分割 分割的结果就是列表
print(arr)
arr = [int(x) for x in arr]
print(arr)
列表的遍历
可以使用循环来遍历列表中的元素。
#方法一
my_list = [1, 2, 3, 4, 5]
for item in my_list:
print(item)
#方法二
for item in range(len(my_list)):
print(my_list[item])
列表的最值
可以使用 max()
和 min()
函数找到列表中的最大值和最小值。
#内置函数
my_list = [10, 20, 30, 40, 50]
print(max(my_list)) # 输出:50
print(min(my_list)) # 输出:10
#方法二
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
minNum = arr[0]
maxNum = arr[0]
for i in arr[1, 9]:
if arr[i] > maxNum:
maxNum = arr[i]
if arr[i] < minNum:
minNum = arr[i]
print(maxNum)
print(minNUm)
列表的存在性问题
可以使用 in
运算符检查列表中是否存在某个元素,也可以使用 index()
方法找到元素的索引。
#内置方法
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # 输出:True
print(my_list.index(3)) # 输出:2
#方法二
#判断元素是否在列表中
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
key = 10
for num in arr:
if key == num:
break
else:
print("不存在")
#判断元素是否在列表中,在返回元素的下标,不在返回-1
key = 10
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(len(arr)):
if key == arr[i]:
num = i
print(num)
break
else:
num = -1
print(num)
列表的翻转
可以使用 reverse()
方法将列表中的元素倒序排列。
#内置函数
my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list) # 输出:[5, 4, 3, 2, 1]
#方法一
left = 0
right = len(arr) - 1
while left <= right:
arr[left],arr[right] = arr[right], arr[left]
left += 1
right -= 1
print(arr)
#方法二
num = 0
for i in range(len(arr) // 2):
j = len(arr) -1 - i
arr[i], arr[j] = arr[j], arr[i]
print(arr)
查找算法
二分查找:要求数据必须有序
二分查找算法通过将待查找区域的中间元素与目标值进行比较,从而缩小待查找区域的范围。
arr = [1,2,3,4,5,6,7,8,9]
minIndex = 0
maxIndex = len(arr) - 1
midIndex = (minIndex + maxIndex) // 2
key = 8
while arr[midIndex] != key:
if arr[midIndex] < key:
minIndex = midIndex + 1
else:
maxIndex = midIndex - 1
if minIndex > maxIndex:
midIndex = -1
break
midIndex = (minIndex + maxIndex) // 2
print(midIndex)
列表是Python中非常常用的数据类型之一,具有丰富的操作方法和功能,能够灵活处理各种数据集合。
总的来说,序列是Python中非常重要的数据类型之一,它们广泛用于存储和操作数据集合,为Python编程提供了强大的工具和灵活的表达能力。
集合(Set)和字典(Dictionary)不属于序列类型。
集合(Set)
集合是一种无序且不重复的元素集合,其中的元素是不可变的(immutable)。在 Python 中,集合使用大括号 {}
定义,元素之间使用逗号 ,
分隔。与列表和元组不同,集合中的元素没有顺序,因此不能通过索引访问。
示例:
my_set = {1, 2, 3, 4, 5}
字典(Dictionary)
字典是一种键值对(key-value)的数据结构,其中每个值(value)都与一个唯一的键(key)相关联。字典使用大括号 {}
定义,键值对之间使用冒号 :
分隔,各个键值对之间使用逗号 ,
分隔。
示例:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
与序列类型(如列表、元组、字符串)不同,集合和字典并不支持索引访问。在集合中,元素是无序的,因此不能通过索引来访问集合中的元素;在字典中,元素是通过键来进行访问和操作的,而不是通过索引。
综上所述,集合和字典都不属于序列类型。然而,集合和字典都是 Python 中的重要数据结构,在实际编程中有着各自的用途和特点。