Python 使用元组收集数据

  • Post category:Python

当我们需要在Python中临时存储一些数据时,元组(tuple)是一个很好的选择。元组是一种序列型数据类型,非常类似于列表,但它们是不可变的,其内容在创建后不能被修改。

创建元组

元组可以使用()或tuple()函数来创建,其中()是最常见的方式。

tup1 = () #创建一个空元组
tup2 = (1, 2, 3, 4, 5) #创建一个包含5个元素的元组
tup3 = ('red', 'blue', 'green', 'yellow') #创建一个包含4个元素的元组,元素是字符串类型
tup4 = (1, 'John', 3.14, True) #创建一个元素类型不同的元组

访问元组

元组中的元素可以通过索引值访问,索引值是从0开始的整数。同时,也支持索引值的阴影索引(-1代表最后一个元素)。

tup = ('physics', 'chemistry', 'maths', 'biology', 'history')
print("tup[0]: ", tup[0])
print("tup[-1]: ", tup[-1])

元组的切片

元组可以使用切片操作符[:]以及start、stop、step三个参数进行切片。切片可以返回元组的一个子集。如果start被忽略,则默认为0;如果stop被忽略,则默认为元组的长度;如果step被忽略,则默认为1。

tup = ('physics', 'chemistry', 'maths', 'biology', 'history')
print("tup[1:3]: ", tup[1:3])
print("tup[:-1]: ", tup[:-1])

元组的拼接和重复

可以使用+操作符来拼接两个或多个元组。

tup1 = (1, 2, 3)
tup2 = ('a', 'b', 'c')
tup3 = tup1 + tup2
print(tup3)

可以使用*操作符对元组进行重复操作。

tup1 = (1, 2, 3)
print(tup1 * 3)

元组的遍历

使用for循环可以对元组进行遍历。

tup = ('physics', 'chemistry', 'maths', 'biology', 'history')
for subject in tup:
    print(subject)

元组的内建函数

Python内置了一些函数来处理元组,如下所示:

  • len(): 返回元组中元素的个数。
  • max(): 返回元组中元素的最大值。
  • min(): 返回元组中元素的最小值。
  • cmp(tuple1, tuple2): 如果tuple1 < tuple2返回-1,如果tuple1==tuple2返回0,如果tuple1 > tuple2返回1。
tup = (1, 2, 3, 4, 5)
print("The length of the tuple is: ", len(tup))
print("The max element in the tuple is: ", max(tup))
print("The min element in the tuple is: ", min(tup))

示例1:

def get_rectangle_area_info(rectangle):
    '''
    计算矩形的周长和面积,并返回计算结果。

    参数:
        rectangle: 元组类型,包含矩形的长和宽信息。

    返回值:
        元组类型,包括四个元素,分别是矩形的长、宽、周长和面积。
    '''
    length, width = rectangle # 元组拆包
    circumference = (length + width) * 2
    area = length * width
    return (length, width, circumference, area)

rectangle = (5, 6)
rectangle_info = get_rectangle_area_info(rectangle)
print(rectangle_info)

运行结果:

(5, 6, 22, 30)

该示例中,我们定义了一个函数get_rectangle_area_info(),该函数接受一个元组rectangle,用于保存矩形的长和宽信息。函数中使用元组拆包的方式将rectangle拆成了length和width,然后计算出矩形的周长和面积,并将四个值包含在一个元组中并返回。

示例2:

def remove_duplicate_elements(lst):
    '''
    从列表中移除重复元素,并返回移除重复元素后的列表。

    参数:
        lst: 列表类型,需要去重的原始列表。

    返回值:
        元组类型,包括去重后的列表和被移除的元素个数。
    '''
    unique_elements = list(set(lst))
    duplicate_count = len(lst) - len(unique_elements)
    return (unique_elements, duplicate_count)

lst = [1, 2, 3, 4, 5, 5, 4, 3, 2, 1]
unique_lst, duplicate_count = remove_duplicate_elements(lst)
print(unique_lst)
print(duplicate_count)

运行结果:

[1, 2, 3, 4, 5]
5

该示例中,我们定义了一个函数remove_duplicate_elements(),该函数接受一个列表lst,用于保存需要去重的原始列表。函数中先将lst转换为集合类型(set),然后再将集合类型转换回列表类型,从而去掉列表中的重复元素。最后使用len()函数计算出被移除的元素个数,将去重后的列表和被移除的元素个数包含在一个元组中并返回。