range 可以用來產生一組數組,而且它是 lazy 的,就是一開始創建時並不會真的產生這組 list,所以這邊看到的只是一個 range 從 0 到 9.
>>> nums = range(10)
>>> print(nums)
range(0, 10)
只有在迭代這些數字時才會真正產生.
>>> list(nums)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
可以給第三個參數,代表一次增加多少.
>>> nums = range(0,10,2)
>>> list(nums)
[0, 2, 4, 6, 8]
可以運用 range 轉成 list 組合.
>>> nums1 = range(5)
>>> nums2 = range(5,20,3)
>>> nums = list(nums1) + list(nums2)
>>> print(nums)
[0, 1, 2, 3, 4, 5, 8, 11, 14, 17]
tuple 是一個 immutable 的數組.
建立空的 tuple :
>>> names = ()
>>> type(names)
<class 'tuple'>
>>> print(names)
()
建立一個元素的 tuple
>>> names = 'Daniel',
>>> print(names)
('Daniel',)
建立兩個元素的 tuple
>>> names = ('Daniel','James')
>>> type(names)
<class 'tuple'>
>>> print(names)
('Daniel', 'James')
多個元素的 tuple
>>> names = ('Daniel','Sam','Tom')
>>> type(names)
<class 'tuple'>
tuple 取值的方式跟在使用 substring 時類似.
>>> print(names[1])
Sam
>>> print(names[0])
Daniel
>>> print(names[2])
Tom
>>> print(names[1:])
('Sam', 'Tom')
>>> print(names[:2])
('Daniel', 'Sam')
>>> print(names[0:2])
('Daniel', 'Sam')
取得 tuple 的長度.
>>> len(names)
3
tuple 相加,記得 tuple 是 immutable 的,所以相加後要再綁定到另一個變數上.
>>> names2 = ('Jay','Marry','Jenny')
>>> user_names = names + names2
>>> print(user_names)
('Daniel', 'Sam', 'Tom', 'Jay', 'Marry', 'Jenny')
迭代 tuple 的元素.
>>> for name in user_names:
... print('Hello {}'.format(name))
...
Hello Daniel
Hello Sam
Hello Tom
Hello Jay
Hello Marry
Hello Jenny
判斷某元素是否在 tuple 裡.
>>> 'Sam' in user_names
True
>>> 'Sam' not in user_names
False
tuple 會比 list 還省 memory 的空間,所以當確定元素是不會改變的,可以考慮使用 tuple 來替代 list.