python-08-容器類型之元祖和集合與類型轉(zhuǎn)化

一、元祖
1.什么是元祖
使用()將多個元素括起來趴樱,多個元素之間用逗號隔開
a.
容器,可以同時存儲多個數(shù)據(jù),不可變的纳账,有序的
不可變 ---> 不能增刪改
有序 ---> 可以通過下標(biāo)獲取元素
b.
元素捺疼,可以是任何類型的數(shù)據(jù)

tuple1 = (1, 'yue', True, [1, 2], lambda s:s*2)
print(tuple1)

1.如果元祖的元素只有一個的時候,必須在元素的后面加逗號

tuple2 = (100,)
print(type(tuple2))

2.多個數(shù)據(jù)直接用逗號隔開啤呼,表示的也是一個元祖

tuple2 = 10, 20, 'abc'
print(tuple2, type(tuple2))

2.元素的查
元祖的元素不支持增刪改
列表獲取元素的方式官扣,元祖都支持:元祖[下標(biāo)], 元祖[:], 元祖[::]
遍歷:和列表一樣

tuple2 = ('星期一', '星期二', '星期三', '星期四')
print(tuple2[1])
print(tuple2[2:])
print(tuple2[::-1]
# 遍歷
for item in tuple2:
    print(item)
index = 0
while index < len(tuple2):
    print(tuple2[index])
    index += 1

補充:獲取部分元素
可以通過相同的變量個數(shù),來一一獲取元祖中的元素

x, y = (10, 20)
print(x, y)
x, y, z = (10, 20, 30)
x, y = 10, 20

1.應(yīng)用:交換兩個數(shù)的值

a = 10
b = 20
# 錯誤寫法
# a = b   # a = 20
# b = a   # b = 20
# 方法1:
# t = a   # t = 10
# a = b   # a = 20
# b = t   # b = 10
# 方法2:
a, b = b, a    # a,b = (b,a) = (20, 10)

可以通過在變量前加*來獲取部分的元素(適用于列表)

tuple2 = ('小明', 90, 89, 67, 100)
name, *score = tuple2
print(name, score)

tuple2 = (90, 89, 67, 100, '小明')
*score, name = tuple2
print(score, name)

tuple2 = ['boy', 15300022673, 90, 89, 67, 100, '小明']
sex, tel, *score, name = tuple2
print(sex, name, score)

(了解)
可以通過在列表或者元祖前加*,來展開列表中的元素

tuple3 = (1, 2, 3, 4)
print(*tuple3)

list1 = ['abc', 100, 200]
print(*list1)

3.元祖的運算
+, *, ==, is, in, not in ---> 和列表一樣

print((1, 2, 3) + ('a','b'))
print((1, 2) * 3)
print((1, 2, 3) == (1, 2, 3))
print((1, 2, 3) is (1, 2, 3))
print(1 in (1, 2, 3))
print(1 not in (1, 2, 3))

4.len(), max(), min()

tuple3 = 10, 230, 100, 78, 34
print(len(tuple3))
print(max(tuple3))
print(min(tuple3))

6.tuple()
所有的序列都可以轉(zhuǎn)換成元祖蚯涮,注意卖陵,字典只能將key值作為元祖元素

print(tuple('abhdnc'))
print(tuple([1, 23, 90]))
print(tuple(range(5)))
print(tuple({'a': 100, 'b': 200}))

7.sorted()
可以通過sorted()方法,對元祖進行排序,產(chǎn)生一個新的列表

tuple3 = 10, 230, 100, 78, 34
new = sorted(tuple3)
print(new, tuple3)

二挟炬、集合
1.什么是集合(set)
容器嗦哆,可以同時存儲多個數(shù)據(jù),可變的婿滓,無序的,元素是唯一的
可變 --> 增刪改
無序 --> 不能通過下標(biāo)獲取元素
唯一 --> 自帶去重的功能
{元素1, 元素2...}
元素:只能是不可變的數(shù)據(jù)

set1 = {10, 20, 'abc', (10, 200), 10}
print(set1)   # {(10, 200), 10, 20, 'abc'}
# set2 = {}  # 這個是空的字典

2.集合的增刪改查
a.查(獲取元素)
集合不能單獨的獲取一個元素,也不能切片橘券,只能通過for-in來遍歷

for x in set1:
    print(x)

b.增(添加元素)
集合.add(元素) --> 在集合中添加一個元素

set1 = {1, 2, 3}
set1.add(4)
print(set1)

集合1.update(序列) --> 將序列中的元素添加到集合1中

set1.update({'a', 'b'})
print(set1)

set1.update('0987')
print(set1)

set1.update(['abc', 'aaa'])
print(set1)

set1.update({'name': 1, 'age': 18})   # 字典只添加key
print(set1)

3.刪(刪除元素)
集合.remove(元素) --> 刪除指定的元素

set1.remove(1)
print(set1)

4.改(集合不能改)

三卿吐、集合運算
集合相關(guān)的運算: 是否包含,交集箭窜、并集衍腥、差集、補集
1.包含
集合1 >= 集合2 ---> 判斷集合1之中是否包含集合2
集合2 <= 集合2 ---> 判斷集合2之中是否包含集合1

set1 = {1, 2, 3, 4, 5, 10}
set2 = {3, 4, 1}
print(set1 >= set2)

2.交集 -> &
& --> 求兩個集合公共的部分

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 10, 20}
print(set1 & set2)

3.求并集
| --> 求兩個集合的和

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 10, 20}
print(set1 | set2)

4.求差集
集合1-集合2 --> 求集合1中除了集合2以外的部分

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 10, 20}
print(set1 - set2)

5.求補集
^ --> 求兩個集合除了公共部分以外的部分

set1 = {1, 2, 3, 4, 5}
set2 = {1, 2, 3, 10, 20}
print(set1 ^ set2)

四竹捉、類型轉(zhuǎn)換
1.整型
int()
浮點數(shù)、布爾块差、部分字符串可以轉(zhuǎn)換成整型乖仇。
只有去掉引號后本身就是一個整數(shù)的字符串才能轉(zhuǎn)換成整型

print(int('34'))
print(int('+45'))
print(int('-90'))
# print(int('34.5'))  # ValueError

2.浮點數(shù)
整數(shù),布爾起趾,部分字符串可以轉(zhuǎn)換成浮點數(shù)
去掉的引號警儒,本身就是一個數(shù)字的字符串才能轉(zhuǎn)換成浮點數(shù)

print(float(100))   # 100.0
print(float(True))
print(float('34.90'))
print(float('100'))

3.布爾
所有的數(shù)據(jù)都可以抓換成布爾值
為空為0的值轉(zhuǎn)換成False, 其他的數(shù)據(jù)都轉(zhuǎn)換成True

print(bool('abchd'))  # True
print(bool('False'))  # True
print(bool(''))  # False
print(bool([1, 2, 3]))  # True
print(bool([]))    # False
print(bool({'a': 1}))  # True
print(bool({}))  # False
print(bool(()))
print(bool(0.00))
print(bool(None))

num = 100
if num == 0:
    print('是0')

if not num:
    print('是0')

names = [23]
if names:
    print('不是空')
else:
    print('是空')
num = 230
if num % 2:
    print('是奇數(shù)')
else:
    print('是偶數(shù)')

4.字符串
str()
所有的數(shù)據(jù)都可以轉(zhuǎn)換成字符串
數(shù)據(jù)轉(zhuǎn)換成字符串,就是在數(shù)據(jù)的最外面加引號

print([str(100)])
print([str(True)])
print([str([1, 2, 3])])
print([str({'a': 1, 'b': 2})])
print([str(lambda x: x*2)])
list_str = str([1, 2, 3])
print(len(list_str))

5.列表
list()
序列才能轉(zhuǎn)換成列表边琉。
將序列中的元素作為列表的元素记劝。字典轉(zhuǎn)換成列表,將字典的key作為列表的元素

print(list('styui'))
print(list((23, 45, 'ac')))
print(list({'a': 100, 'b': 89}))
print(list({'a': 100, 'b': 89}.items()))

6.元祖(和列表一樣)
tuple()
只能將序列轉(zhuǎn)換成元祖

print(tuple('ancbd'))
print(tuple({'a': 100, 'b': 89}))

7.字典
dict()
序列的每個元素有兩個元素的數(shù)據(jù)才能轉(zhuǎn)換成字典

list1 = [(1, 2)]
print(dict(list1))
tuple1 = ((1, 8), {'a', 'b'})
print(dict(tuple1))

8.集合
set()
序列可以轉(zhuǎn)換成集合厌丑,有去重的功能

print(set([1, 1, 90, 3, 10, 10]))

1.淺拷貝和深拷貝
2.列表和字典的嵌套應(yīng)用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市砍鸠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌录豺,老刑警劉巖饭弓,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異兢哭,居然都是意外死亡夫嗓,警方通過查閱死者的電腦和手機迟螺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門矩父,熙熙樓的掌柜王于貴愁眉苦臉地迎上來排霉,“玉大人,你說我怎么就攤上這事攻柠。” “怎么了瑰钮?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵浪谴,是天一觀的道長。 經(jīng)常有香客問我苟耻,道長,這世上最難降的妖魔是什么胁艰? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮蝗茁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己毛秘,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布艰匙。 她就那樣靜靜地躺著抹恳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪健霹。 梳的紋絲不亂的頭發(fā)上瓶蚂,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音窃这,去河邊找鬼。 笑死祟敛,一個胖子當(dāng)著我的面吹牛兆解,可吹牛的內(nèi)容都是我干的馆铁。 我是一名探鬼主播痪宰,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼衣撬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了具练?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤哥遮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后眠饮,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡寨蹋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年已旧,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片运褪。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡玖瘸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出店读,到底是詐尸還是另有隱情,我是刑警寧澤文虏,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布殖演,位于F島的核電站,受9級特大地震影響趴久,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灭忠,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一座硕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧华匾,春花似錦、人聲如沸沉填。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穿肄。三九已至年局,卻和暖如春咸产,著一層夾襖步出監(jiān)牢的瞬間仲闽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工屑彻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顶吮,地道東北人社牲。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓搏恤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親熟空。 傳聞我的和親對象是個殘疾皇子搞莺,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容