-
set提供了remove()方法允許我們刪除set中的元素。
如果remove的元素不在set里面的話,那么將會引發錯誤。要提前判斷要remove()的元素是否在set里面,確保存在后,再進行remove。
任務:
# 針對以下set,給定一個list,對于list里面的每個元素,如果set中包含這個元素,就將其刪除,否則添加到set里面去。
L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
S = set([1, 3, 5, 7, 9, 11])#?Enter?a?code L?=?[1,?2,?3,?4,?5,?6,?7,?8,?9,?10] S?=?set([1,?3,?5,?7,?9,?11]) for?x?in?L: ????if?x?in?S: ????????S.remove(x) ????else: ????????S.add(x) print(S)
查看全部 -
set提供add()方法,往set里面添加元素。
name_set.add('Gina')
批量往set里面添加元素:set提供了update()方法,可以一次性給set添加多個元素。
names?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] new_names?=?['Hally',?'Isen',?'Jenny',?'Karl'] name_set?=?set(names) name_set.update(new_names)
任務:
# 請使用兩種方式往空的set中添加以下名字:['Jenny', 'Ellena',?'Alice', 'Candy', 'David', 'Hally', 'Bob', 'Isen', 'Karl']。
#?coding=utf-8 names?=?['Jenny',?'Ellena',?'Alice',?'Candy',?'David',?'Hally',?'Bob',?'Isen',?'Karl'] nameset?=?set([]) nameset.update(names) print(nameset)
#?coding=utf-8 names?=?['Jenny',?'Ellena',?'Alice',?'Candy',?'David',?'Hally',?'Bob',?'Isen',?'Karl'] nameset?=?set([]) for?x?in?names: ????nameset.add(x) print(nameset)
查看全部 -
set里面的元素是沒有順序的,因此我們不能像list那樣通過索引來訪問。訪問set中的某個元素實際上就是判斷一個元素是否在set中,這個時候我們可以使用in來判斷某個元素是否在set中。
set元素是區分大小寫的,必須大小寫完全匹配,才能判斷該元素在set里面。
任務:
# 由于name_set不能識別小寫的名字,請改進name_set,是小寫的名字也能判斷在name_set里面。
names = ['Alice', 'Bob', 'Candy', 'David', 'Ellena']
name_set = set(names)#?Enter?a?code names1?=?['Alice',?'Bob',?'Candy',?'David',?'Ellena'] names2?=?[] for?x?in?names1: ????names2.append(x.lower()) ???? name_set?=?set(names2) bool1?=?'Alice'.lower()?in?name_set print(bool1)
查看全部 -
""或''只是一種表達方式,
查看全部 -
set里面的元素是不允許重復的,set里面的元素是沒有順序的。
創建set的方式是使用set(),并傳入一個list,list的元素將會被轉換成set的元素。
s = set([1, 4, 3, 2, 5])
任務:
# 請使用set表示班里面的五個同學。
'Alice', 'Bob', 'Candy', 'David', 'Ellena'#?Enter?a?code set1?=?set(['Alice',?'Bob',?'Candy',?'David',?'Ellena']) print(set1)
查看全部 -
dict提供keys()函數,可以返回dict中所有的key。
dict提供values()函數,可以返回dict中所有的value。
dict提供clear()函數,可以直接清除dict中所有的元素。
任務:
# 已知d = {'Alice': [50, 61, 66], 'Bob': [80, 61, 66], 'Candy': [88, 75, 90]},請輸出d的元素個數。
#?Enter?a?code d?=?{'Alice':?[50,?61,?66],?'Bob':?[80,?61,?66],?'Candy':?[88,?75,?90]} L?=?d.keys() num?=?len(L) print(L) print(num)
查看全部 -
dict提供便捷的pop()方法,允許我們快速刪除元素,pop()方法需要指定需要刪除的元素的key,并返回對應的value。
alice_score= d.pop('Alice')
pop()方法的參數是dict中的key,當key不存在時,同樣會引起錯誤。比如在上述操作中,已經把Alice的成績刪除了,假如再次pop('Alice'),將會引發錯誤。KeyError任務:
# 在dict中,使用keys()方法,可以返回dict的所有key,在刪除某個元素時,可以通過這個方法先判斷某個元素是否存在,請改造前面的程序,使得即使key不存在時,刪除也不會拋異常。
#?Enter?a?code d?=?{ ????'Alice':?45, ????'Bob':?60, ????'Candy':?75, ????'David':?86, ????'Ellena':?49 } alice_score=?d.pop('Alice') key?=?'Alice' if?key?in?d.keys(): ????d.pop(key) ???? print(d.keys()) print(d)
查看全部 -
通過賦值語句就可以把元素添加到dict中去,這個賦值語句其實有兩個功能:
1. 當key不存在時,往dict中添加對應的key: value元素。
2. 當key存在時,會更新dict,用新的value替換原來的value。
在使用賦值語句往dict中添加元素時,為了避免不必要的覆蓋問題,我們需要先判斷key是否存在,然后再做更新。
任務:
# 已有同學們的成績如下,請更新Alice的成績為60,并把舊的成績記錄下來。
d = {
? ?'Alice': 45,
? ?'Bob': 60,
? ?'Candy': 75,
? ?'David': 86,
? ?'Ellena': 49}
解答如下:
d?=?{ ????'Alice':?45, ????'Bob':?60, ????'Candy':?75, ????'David':?86, ????'Ellena':?49 } print(d) past?=?d['Alice'] d['Alice']?=?60 print(past) print(d)
查看全部 -
dict是可變的,我們隨時可以往dict中添加新的key-value。value可以是任意類型的元素,可以是list、tuple等。可以使用賦值語句往dict中添加元素。
任務
已有同學的某次成績dict如下:
d?=?{ ????'Alice':?[45], ????'Bob':?[60], ????'Candy':?[75], }
Alice、Bob、Candy的最近三次的成績分別是[50, 61, 66],[80, 61, 66],[88, 75, 90],請更新dict,使得dict可以保存同學多次的成績。
#?Enter?a?code d?=?{ ????'Alice':?[45], ????'Bob':?[60], ????'Candy':?[75], } print(d) d['Alice']?=?[50,?61,?66] d['Bob']?=?[80,?61,?60] d['Candy']?=?[88,?75,?90] print(d)
查看全部 -
1. dict提供通過key找到對應value的功能,通過d[key]的形式,就可以得到對應的value。
當對應的key不存在時,會引發錯誤。KeyError
需要通過key找到value時,一定要先判斷key存不存在,然后才使用d[key]的方式獲取對應的value,以避免錯誤。
if?'Alice'?in?d: ????print(d['Alice'])
2. 還有一種方法可以通過通過key來獲取對應的value,這種方法不會引起錯誤,dict本身提供get方法,把key當作參數傳遞給get方法,就可以獲取對應的value,當key不存在時,也不會報錯,而是返回None。
通過get方法在代碼實現上更加簡單,且不會引起錯誤,因此更加推薦使用get方法來獲取dict的元素。
任務
根據如下dict,打印出Alice, Bob, Candy, Mimi, David的成績,當同學不存在時,打印None。
#?Enter?a?code d?=?{ ????????'Alice':?45,???? ????'Bob':?60,???? ????'Candy':?75,???? ????'David':?86,???? ????'Ellena':?49 ????} L?=?['Alice',?'Bob',?'Candy',?'Mimi',?'David'] for?key?in?L: ????print(d.get(key))
查看全部 -
python的dict就是專門保存這種映射的,使用dict可以方便的保存“名字”->“成績”的映射。dict中,每一項包含一個key和一個value,key和value是一一對應的。
d?=?{ ????'Alice':?45, ????'Bob':?60, ????'Candy':?75, ????'David':?86, ????'Ellena':?49 }
我們使用花括號{}表示這是一個dict,然后key和value之間使用冒號:分割,并且每一組key:value的最后,以逗號,表示這一組的結束。
我們也可以使用以下的方式定義一個dict,默認得到的是一個空dict,需要調用函數往里面添加數據。d?=?dict() print(d)?#?==>?{}
任務:
# 新來的Gaven同學成績是86,請編寫一個dict,把Gaven同學的成績也加進去。
# Enter a code
d = {
? ? 'Alice': 45,
? ? 'Bob': 60,
? ? 'Candy': 75,
? ? 'David': 86,
? ? 'Ellena': 49,
? ? 'Gaven':86
}
print(d)
查看全部 -
tuple是不可變的,tuple里面的元素,也是不可替換的,針對的是僅包含基礎數據類型(數字類型、布爾類型、字符串類型)的數據,對于組合數據類型,則不受這個約束。
T?=?(1,?'CH',?[3,?4]) L?=?T[2] print(L)?#?==>?[3,?4] #?嘗試替換L中的元素 L[1]?=?40 print(L)?#?==>?[3,?40] print(T)?#?==>?(1,?'CH',?[3,?40])
雖然tuple中的list元素改變了,但是tuple本身指向的list仍然是同一個list,list本身并沒有改變,改變的只是list里面的一個元素,這是tuple所約束不到的范圍。
如果我們直接替換list,這也是不行的。
任務:
# T = (1, 'CH', [3, 4])
tuple里面包含list,導致tuple是可變的,請修改T的定義,不改變基本數據類型的數據,使T是不可變的。# Enter a code
T = (1, 'CH', [3, 4])
print(T)
listtemp = list(T)
listtemp[2] = tuple(listtemp[2])
T = tuple(listtemp)
print(T)
# 先將T轉變為list,然后更改里面的list為tuple,最后將該list轉變為tuple。
查看全部 -
tuple和list一樣,可以包含 0 個、1個和任意多個元素。
1. 包含 0 個元素的 tuple,也就是空tuple,直接用()表示:T = ()
2. 改變優先級我們是通過()來實現的,這和元組的定義有沖突。要定義只有一個元素的tuple,需要在元素后面添加一個逗號,:T = (1, )
3. 對于多個元素的tuple,則加和不加這個逗號,效果是一樣的:T = (1, 2, 3,)
任務:
# tuple的元素也可以是tuple,請判斷以下定義T的元素中,有多少個tuple。
T = ((1+2), ?((1+2),), ('a'+'b'), (1, ), (1,2,3,4,5))
答:T的元素中,有5個tuple,分別是:(1+2)????((1+2),)????('a'+'b')????(1,)? ?(1,2,3,4,5)? ?
查看全部 -
tuple一旦定義之后便不可修改,所以在實際編程中,tuple經常用于存放固定不變的數據。
tuple提供了便捷的方法可以訪問tuple中的數據。
1. count()方法用來統計tuple中某個元素出現的次數。
T?=?(1,?1,?2,?2,?3,?3,?1,?3,?5,?7,?9) print(T.count(1))?#?==>?3 print(T.count(5))?#?==>?1
對于不存在的元素,count方法不會報錯,而是返回0,這是合理的,因為元組里面有0個不存在的元素。
2.?index()方法可以返回指定元素的下標,當一個元素多次重復出現時,則返回第一次出現的下標位置。
index()方法和count()方法不一樣,當指定的元素不存在時,使用index()方法Python會報錯。ValueError: tuple.index(x): x not in tuple.
任務:
# 在某次考試中,班上的成績如下:(100, 69, 29, 100, 72, 99, 98, 100, 75, 100, 100, 42, 88, 100),請統計滿分(100分)同學的數量。
# Enter a code
tuple1 = (100, 69, 29, 100, 72, 99, 98, 100, 75, 100, 100, 42, 88, 100)
x = tuple1.count(100)
print(x)
查看全部 -
元組(tuple)和list一樣,也是一個有序容器,在元組中,同樣可以包含0個或者多個元素,并且也支持索引訪問、切片等操作。
定義元組的方式是使用小括號()將元組內的元素括起來。
T?=?('Alice',?'Bob',?'Candy',?'David',?'Ellena')
元組數據類型可以把不是元組的容器轉換為元組,比如將列表轉換成元組。
T?=?tuple(L)
對于列表數據類型,也可以把元組轉換成列表。
L?=?list(T)
tuple和list不一樣的是,tuple是固定不變的,一旦變成tuple,tuple中的每一個元素都不可被改變,同時也不能再往tuple中添加數據,而list是可以的。
注意:元組(tuple)的這個特性是非常重要的,在運行上tuple的性能是list的數倍。
任務:
#?請創建一個tuple,順序包含0~9的十個數,并嘗試將其轉換為列表list。 #?Enter?a?code list1?=?[] for?i?in?range(10): ????list1.append(i) tuple1?=?tuple(list1) list1?=?list(tuple1) print(tuple1) print(list1)
查看全部
舉報