亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python 元组

Python 元组

在本文中,您将了解有关 Python 元组的所有内容。更具体地说,什么是元组,如何创建元组,何时使用元组以及您应该熟悉的各种方法。

视频:Python 列表和元组

Python 中的元组类似于列表。两者的区别在于,元组的元素一旦赋值就不能改变,而列表的元素可以改变。


创建元组

通过将所有项目(元素)放在括号 () 内来创建一个元组 , 被逗号隔开。括号是可选的,但最好使用它们。

一个元组可以有任意数量的项,它们可以是不同的类型(整数、浮点数、列表、字符串等)。

# Different types of tuples

# Empty tuple
my_tuple = ()
print(my_tuple)

# Tuple having integers
my_tuple = (1, 2, 3)
print(my_tuple)

# tuple with mixed datatypes
my_tuple = (1, "Hello", 3.4)
print(my_tuple)

# nested tuple
my_tuple = ("mouse", [8, 4, 6], (1, 2, 3))
print(my_tuple)

输出

()
(1, 2, 3)
(1, 'Hello', 3.4)
('mouse', [8, 4, 6], (1, 2, 3))

也可以在不使用括号的情况下创建元组。这称为元组打包。

my_tuple = 3, 4.6, "dog"
print(my_tuple)

# tuple unpacking is also possible
a, b, c = my_tuple

print(a)      # 3
print(b)      # 4.6
print(c)      # dog

输出

(3, 4.6, 'dog')
3
4.6
dog

用一个元素创建一个元组有点棘手。

括号内只有一个元素是不够的。我们需要一个尾随逗号来表示它实际上是一个元组。

my_tuple = ("hello")
print(type(my_tuple))  # <class 'str'>

# Creating a tuple having one element
my_tuple = ("hello",)
print(type(my_tuple))  # <class 'tuple'>

# Parentheses is optional
my_tuple = "hello",
print(type(my_tuple))  # <class 'tuple'>

输出

<class 'str'>
<class 'tuple'>
<class 'tuple'>

访问元组元素

我们可以通过多种方式访问​​元组的元素。

1。索引

我们可以使用索引运算符[] 访问元组中的项目,其中索引从 0 开始。

因此,具有 6 个元素的元组将具有从 0 到 5 的索引。尝试访问元组索引范围之外的索引(在此示例中为 6,7,...)将引发 IndexError .

索引必须是整数,所以我们不能使用浮点或其他类型。这将导致 TypeError .

同样,使用嵌套索引访问嵌套元组,如下例所示。

# Accessing tuple elements using indexing
my_tuple = ('p','e','r','m','i','t')

print(my_tuple[0])   # 'p' 
print(my_tuple[5])   # 't'

# IndexError: list index out of range
# print(my_tuple[6])

# Index must be an integer
# TypeError: list indices must be integers, not float
# my_tuple[2.0]

# nested tuple
n_tuple = ("mouse", [8, 4, 6], (1, 2, 3))

# nested index
print(n_tuple[0][3])       # 's'
print(n_tuple[1][1])       # 4

输出

p
t
s
4

2。负索引

Python 允许对其序列进行负索引。

-1 的索引是指最后一项,-2 是指倒数第二项,依此类推。

# Negative indexing for accessing tuple elements
my_tuple = ('p', 'e', 'r', 'm', 'i', 't')

# Output: 't'
print(my_tuple[-1])

# Output: 'p'
print(my_tuple[-6])

输出

t
p

3.切片

我们可以使用切片运算符冒号 : 访问元组中的一系列项目 .

# Accessing tuple elements using slicing
my_tuple = ('p','r','o','g','r','a','m','i','z')

# elements 2nd to 4th
# Output: ('r', 'o', 'g')
print(my_tuple[1:4])

# elements beginning to 2nd
# Output: ('p', 'r')
print(my_tuple[:-7])

# elements 8th to end
# Output: ('i', 'z')
print(my_tuple[7:])

# elements beginning to end
# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple[:])

输出

('r', 'o', 'g')
('p', 'r')
('i', 'z')
('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

通过将索引考虑在元素之间,可以最好地可视化切片,如下所示。因此,如果我们想访问一个范围,我们需要从元组中分割部分的索引。

<图>

更改元组

与列表不同,元组是不可变的。

这意味着元组的元素一旦被分配就不能更改。但是,如果元素本身是一个像列表这样的可变数据类型,那么它的嵌套项是可以改变的。

我们还可以将元组分配给不同的值(重新分配)。

# Changing tuple values
my_tuple = (4, 2, 3, [6, 5])


# TypeError: 'tuple' object does not support item assignment
# my_tuple[1] = 9

# However, item of mutable element can be changed
my_tuple[3][0] = 9    # Output: (4, 2, 3, [9, 5])
print(my_tuple)

# Tuples can be reassigned
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

# Output: ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')
print(my_tuple)

输出

(4, 2, 3, [9, 5])
('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

我们可以使用 + 运算符来组合两个元组。这称为连接 .

我们也可以重复 使用 * 给定次数的元组中的元素 运营商。

+* 操作会产生一个新的元组。

# Concatenation
# Output: (1, 2, 3, 4, 5, 6)
print((1, 2, 3) + (4, 5, 6))

# Repeat
# Output: ('Repeat', 'Repeat', 'Repeat')
print(("Repeat",) * 3)

输出

(1, 2, 3, 4, 5, 6)
('Repeat', 'Repeat', 'Repeat')

删除元组

如上所述,我们不能更改元组中的元素。这意味着我们不能从元组中删除或删除项目。

但是,可以使用关键字 del 完全删除一个元组。

# Deleting tuples
my_tuple = ('p', 'r', 'o', 'g', 'r', 'a', 'm', 'i', 'z')

# can't delete items
# TypeError: 'tuple' object doesn't support item deletion
# del my_tuple[3]

# Can delete an entire tuple
del my_tuple

# NameError: name 'my_tuple' is not defined
print(my_tuple)

输出

Traceback (most recent call last):
  File "<string>", line 12, in <module>
NameError: name 'my_tuple' is not defined

元组方法

添加项目或删除项目的方法不适用于元组。只有以下两种方法可用。

Python元组方法的一些例子:

my_tuple = ('a', 'p', 'p', 'l', 'e',)

print(my_tuple.count('p'))  # Output: 2
print(my_tuple.index('l'))  # Output: 3

输出

2
3

其他元组操作

1。元组成员资格测试

我们可以使用关键字 in 测试元组中是否存在项目 .

# Membership test in tuple
my_tuple = ('a', 'p', 'p', 'l', 'e',)

# In operation
print('a' in my_tuple)
print('b' in my_tuple)

# Not in operation
print('g' not in my_tuple)

输出

True
False
True

2.遍历一个元组

我们可以使用 for 循环遍历元组中的每个项目。

# Using a for loop to iterate through a tuple
for name in ('John', 'Kate'):
    print("Hello", name)

输出

Hello John
Hello Kate

元组优于列表的优势

由于元组与列表非常相似,因此它们都用于类似的情况。但是,在列表中实现元组有一定的优势。下面列出了一些主要优点:


Python

  1. Python 数据类型
  2. Python 运算符
  3. Python pass 语句
  4. Python 函数参数
  5. Python字典
  6. Python 迭代器
  7. Python 闭包
  8. Python 日期时间
  9. Python - 概述
  10. Python - 数字
  11. Python - 字符串
  12. Python - 元组