Python之路(三):基本資料型別(下)
元祖tuple
是對列表的二次加工,書寫格式為括號(),裡面放元素
元組的一級元素不可被修改,且不能被增加和刪除
一般寫元組的時候,推薦在最後加入逗號, 能加則加
建立元組
1 |
tu
=
(
111
,
"alex"
,(
11 ,
22
),[(
33
,
44
)],
True
,
33
,
44
,)
|
索引
1 2 3 |
tu
=
(
111
,
"alex"
,(
11
,
22
),[(
33
,
44
)],
True
,
33
,
44
,)
# 索引找值 v
=
tu[
1
]
print
(v)<br><br>alex
|
切片
1 2 3 |
tu
=
(
111
,
"alex"
,(
11
,
22
),[(
33
,
44
)],
True
,
33
,
44
,)
# 切片,區間內找值
v
=
tu[
0
:
3
]
print
(v)<br><br>(
111
,
'alex'
, (
11
,
22
))
|
可以被for迴圈(可迭代物件)
1 2 3 4 5 6 7 8 9 10 |
tu
=
(
111
,
"alex"
,(
11
,
22
),[(
33
,
44
)],
True
,
33
,
44
,)
for
item
in
tu:
print
(item)
111
alex
(
11
,
22
)
[(
33
,
44
)]
True
44
|
有序的,排列的時候有順序
- 轉換(字串,列表,元祖之間的轉換)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
s
=
"asd"
li
=
[
"asdf"
,
123
]
tu
=
(
123
,
321
,
"asdf"
)
v
=
tuple
(s)
print
(v)
v1
=
tuple
(li)
print
(v1)
v2
=
list
(tu)
print
(v2)
# 輸出結果
(
'a'
,
's'
,
'd'
)
(
'asdf'
,
123
)
[
123
,
321
,
'asdf'
]
|
元組運算子
與字串一樣,元組之間可以使用 + 號和 * 號進行運算。這就意味著他們可以組合和複製,運算後會生成一個新的元組。
Python 表示式 | 結果 | 描述 |
---|---|---|
len((1, 2, 3)) | 3 | 計算元素個數 |
(1, 2, 3) + (4, 5, 6) | (1, 2, 3, 4, 5, 6) | 連線 |
('Hi!',) * 4 | ('Hi!', 'Hi!', 'Hi!', 'Hi!') | 複製 |
3 in (1, 2, 3) | True | 元素是否存在 |
for x in (1, 2, 3): print x, | 1 2 3 | 迭代 |
tuple的方法(魔法)
序號 | 方法及描述 | 例項 |
---|---|---|
1 | len(tuple) 計算元組元素個數。 |
>>> tuple1 = ('Google', 'Baidu', 'Taobao') >>> len(tuple1) 3 >>> |
2 | max(tuple) 返回元組中元素最大值。 |
>>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>> |
3 | min(tuple) 返回元組中元素最小值。 |
>>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>> |
4 | tuple(seq) 將列表轉換為元組。 |
>>> list1= ['Google', 'Taobao', 'JD', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu') |
字典dict
是一個鍵(key)值(value)對,結構為{},大括號
建立字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
info
=
{
# k1 k2 k3 k4為鍵
"k1"
:
18
,
# :後面分別為值 逗號為分隔符
"k2"
:
True
,
# 數字,布林值也可以作為鍵
"k3"
: [
11
,
[],
(),
22
,
33
,
{
'kk1'
:
'vv1'
,
'kk2'
:
'vv2'
,
'kk3'
: (
11
,
22
),
}
],
"k4"
: (
11
,
22
,
33
,
44
)
}
|
字典的值可以是任何值
- 列表,字典不能作為字典的key
- 字典是無序的
- 字典不能被切片,因為它是無序的;可根據索引取值,查詢,找到元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
info
=
{
"k1"
:
18
,
"k2"
:
True
,
"k3"
: [
11
,
[],
(),
22
,
33
,
{
'kk1'
:
'vv1'
,
'kk2'
:
'vv2'
,
'kk3'
: (
11
,
22
),
}
],
"k4"
: (
11
,
22
,
33
,
44
)
}
v
=
info[
'k1'
]
print
(v)
$
18
|
字典是支援del 刪除的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
info
=
{
"k1"
:
18
,
"k2"
:
True
,
"k3"
: [
11
,
[],
(),
22
,
33
,
{
'kk1'
:
'vv1'
,
'kk2'
:
'vv2'
,
'kk3'
: (
11
,
22
),
}
],
"k4"
: (
11
,
22
,
33
,
44
)
}
del
info[
'k1'
]
print
(info)
$ {
'k4'
: (
11
,
22
,
33
,
44
),
'k3'
: [
11
, [], (),
22
,
33
, {
'kk1'
:
'vv1'
,
'kk3'
: (
11
,
22
),
'kk2'
:
'vv2'
}],
'k2'
:
True
}
|
支援for迴圈
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
info
=
{
"k1"
:
18
,
"k2"
:
True
,
"k3"
: [
11
,
[],
(),
22
,
33
,
{
'kk1'
:
'vv1'
,
'kk2'
:
'vv2'
,
'kk3'
: (
11
,
22
),
}
],
"k4"
: (
11
,
22
,
33
,
44
)
}
for
item
in
info:
print
(item)
$ k4
$ k2 info是字典型別
$ k1 預設
for
迴圈只有key
$ k3 但是輸出結果鍵每次排序都不同,因為字典是無序的
|
用for迴圈獲取值values
1 2 3 4 5 6 7 8 9 |
程式碼接上
for
item
in
info.values():
print
(item)
$ (
11
,
22
,
33
,
44
)
$ [
11
, [], (),
22
,
33
, {
'kk3'
: (
11
,
22
),
'kk2'
:
'vv2'
,
'kk1'
:
'vv1'
}]
$
True
$
18
|
既想獲取key又想獲取value則用items
1 2 3 4 5 6 7 8 9 |
程式碼接上
for
item
in
info.items():
print
(item)
# keys和values都可以獲得
$ (
'k1'
,
18
)
$ (
'k4'
, (
11
,
22
,
33
,
44
))
$ (
'k2'
,
True
)
$ (
'k3'
, [
11
, [], (),
22
,
33
, {
'kk2'
:
'vv2'
,
'kk3'
: (
11
,
22
),
'kk1'
:
'vv1'
}])
|
字典的方法(魔法)
序號 | 函式及描述 |
---|---|
1 | dict.clear() 刪除字典內所有元素 |
2 | dict.copy() 返回一個字典的淺複製 |
3 | dict.fromkeys() 建立一個新字典,以序列seq中元素做字典的鍵,val為字典所有鍵對應的初始值 |
4 | dict.get(key, default=None) 返回指定鍵的值,如果值不在字典中返回default值 |
5 | key in dict 如果鍵在字典dict裡返回true,否則返回false |
6 | dict.items() 以列表返回可遍歷的(鍵, 值) 元組陣列 |
7 | dict.keys() 以列表返回一個字典所有的鍵 |
8 | dict.setdefault(key, default=None) 和get()類似, 但如果鍵不存在於字典中,將會新增鍵並將值設為default |
9 | dict.update({'k1':'v1'} OR k1=v1) 把字典dict2的鍵/值對更新到dict裡 |
10 | dict.values() 以列表返回字典中的所有值 |
11 | dict.popitem() 隨機刪除,並獲取刪除的鍵值以元組形式返回 |
集合set
基本資料型別特點(可變:列表,字典 不可變:字串,數字,元組)
- 不同的元素組成
- 無序
- 集合中的元素必須是不可變型別,加入可變的型別會報錯
#!/usr/bin/python3 student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} print(student) # 輸出集合,重複的元素被自動去掉 # 成員測試 if('Rose' in student) : print('Rose 在集合中') else : print('Rose 不在集合中') # set可以進行集合運算 a = set('abracadabra') b = set('alacazam') print(a) print(a - b) # a和b的差集 print(a | b) # a和b的並集 print(a & b) # a和b的交集 print(a ^ b) # a和b中不同時存在的元素
方法:
A、add 新增,新增可變的資料型別也是會報錯的