一 元組
元組也是python的一種數據結構。和列表類似也是由一系列特定序列的元素組成
二 元組與列表的區別
- 列表是可變的。 包括添加元素刪除元素等。元組一旦被創建就是不可變的
- 列表可以出現相同的元素。 元組不會存在相同的元素。 即使有相同的元素只會保留一個其他會被忽略。
三 元組的創建
- 使用()創建元組
tuple1 = (1, 2, 34, 'java', 'python', 'java')
print(tuple1)
tuple2 = ("python", True, )
print(tuple2)
(1, 2, 34, 'java', 'python', 'java')
('python', True)
小括號不是必要的。 前提是元素之間必須要有逗號分隔
tuple1 = 1, 2, 34, 'java', 'python', 'java'
print(tuple1)
tuple2 = "python", True
print(tuple2)
(1, 2, 34, 'java', 'python', 'java')
('python', True)
在創建只包含一個元素的元組時。其元素後面必須加上逗號否則python會將其解析爲字符串或者其他數據類型
tuple1 = (1,)
print(tuple1)
print('---------')
tuple2 = "python",
print(tuple2)
print('---------')
tuple3 = 'python'
print(tuple3)
print('---------')
tuple4 = (1)
print(tuple4)
print(type(tuple4))
(1,)
---------
('python',)
---------
python
---------
1
<class 'int'>
-
tuple()函數創建
# 將字符串轉換成元組
a = tuple("hello")
print(a)
print('-------')
# 將列表轉換成元組
b = tuple([1, 1, 2, 2, "java", 'python'])
print(b)
print("-------")
# 將字典轉換成元組
c = tuple({a: 100, b: "java", 1: "python"})
print(c)
print("--------")
# 將區間轉換成元組
d = tuple(range(0, 10))
print(d)
print("--------")
# 創建空元組
e = tuple()
print(e)
('h', 'e', 'l', 'l', 'o')
-------
(1, 1, 2, 2, 'java', 'python')
-------
(('h', 'e', 'l', 'l', 'o'), (1, 1, 2, 2, 'java', 'python'), 1)
--------
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
--------
()
三。元組的訪問
和列表一樣訪問元組也可以通過索引和切片兩種方式訪問
# 將區間轉換成元組
d = tuple(range(0, 10))
print(d)
print("--------")
print(d[3])
print(d[0])
print(d[::])
print(d[3:])
print(d[3:8:2])
print(d[:8:2])
print(d[:-8:2])
print(d[-3:])
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
--------
3
0
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
(3, 4, 5, 6, 7, 8, 9)
(3, 5, 7)
(0, 2, 4, 6)
(0,)
(7, 8, 9)
四。元組的修改
tuple1 = (1, 2, 34, 'java', 'python', 'java', [1, 2])
print(tuple1)
print("---------")
tuple1[6][0] = 'java'
print(tuple1)
(1, 2, 34, 'java', 'python', 'java', [1, 2])
---------
(1, 2, 34, 'java', 'python', 'java', ['java', 2])
這個有人會問不是說元組是無法修改的嘛。實際上表面上看,tuple的元素確實變了,但其實變的不是tuple的元素,而是list的元素。tuple一開始指向的list並沒有改成別的list,所以,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。
五。元組的刪除
tuple1 = (1, 2, 34, 'java', 'python', 'java', [1, 2])
print(tuple1)
print("---------")
del tuple1
print(tuple1)
(1, 2, 34, 'java', 'python', 'java', [1, 2])
---------
Traceback (most recent call last):
File "/Users/apple/Desktop/python3/python20.py", line 6, in <module>
print(tuple1)
NameError: name 'tuple1' is not defined