# -*- coding: utf-8 -*-
# @Time : 2019/11/7 9:56
# @Author : John
# @Email : 2398344557@qq.com
# @File : 元組(tuple).py
# @Software: PyCharm
- 元組屬于不可變的序列硝清,一旦創(chuàng)建凝果,用任何方法都不能將其修改
- 表示形式:()
a = (1, 2, 3)
print(type(a))
# —— <class 'tuple'>
- 創(chuàng)建一個(gè)的元組
x = (3)*4 # 單括號(hào)括著數(shù)字不算是元組滔驶,能運(yùn)算
print(x)
print(type(x))
# —— 12
# —— <class 'int'>
y = (3,)*4 # 小括號(hào)內(nèi)數(shù)字后加逗號(hào)这溅,代表元組彭羹,*4代表復(fù)制四次
print(y)
print(type(y))
# —— (3, 3, 3, 3)
# —— <class 'tuple'>
z = ((3))*4 # 加多一個(gè)括號(hào)也不能轉(zhuǎn)變成元組
print(z)
print(type(z))
# —— 12
# —— <class 'int'>
- 使用tuple函數(shù)將其他的序列轉(zhuǎn)換為元組
# 1. 列表轉(zhuǎn)換為元組:
from random import randint
a = [randint(-10, 10) for _ in range(10)]
print(a)
# —— [-6, -9, 4, 3, -10, -10, 9, -7, 2, 6]
print(tuple(a)) # 把列表轉(zhuǎn)換為元組
# —— (-6, -9, 4, 3, -10, -10, 9, -7, 2, 6)
# 2. range函數(shù)
print(list(range(6)))
# —— [0, 1, 2, 3, 4, 5]
print(tuple(range(6)))
# —— (0, 1, 2, 3, 4, 5)
# 3. 字符串
import string
print(string.ascii_lowercase[:7]) # 從ascii碼切片提前a到g的小寫英文字母
# —— abcdefg
print(tuple(string.ascii_lowercase[:7]))
# —— ('a', 'b', 'c', 'd', 'e', 'f', 'g')
print(tuple('abcdefg')) # 輸出相當(dāng)于遍歷字符串里面的每個(gè)元素(即輸出的每個(gè)元素都為字符串)
# —— ('a', 'b', 'c', 'd', 'e', 'f', 'g')
元組和列表的區(qū)別
- 元組中數(shù)據(jù)一旦定義了就不允許修改了
- 元組中沒有append()奕筐、extend()、insert()等方法徘钥,不能向元組中添加元素
- 元組中沒有pop()衔蹲、move()、clear()等方法呈础,不能刪除元組中的元素
- 從效果上來看舆驶,tuple函數(shù)時(shí)凍結(jié)列表,list函數(shù)時(shí)融化列表
- 元組名.clear():元組清空
a = list(range(6))
a.clear()
print(a)
# —— []
元組優(yōu)點(diǎn):
- 元組的速度要比列表快
- 元組對數(shù)據(jù)進(jìn)行“寫保護(hù)”而钞,讓代碼更加安全
- 元組可以用作字典的鍵沙廉,還可以作為函數(shù)的返回值返回(返回多個(gè)值)