1.元組
1.什麼是元組
元組是不可變的清單(不支援增删改的操作),元組是有序的(支援下标操作)
元組是容器型資料類型,将()作為容器的标志,多個元素之間用逗号,隔開
元組中的元素的要求和清單一樣
1)空元組:()
2)單個元素的元組:
Tuple2 = (10,)
3)多個元素的元組
tuple4 = (100, 200, 300)
tuple5 = 100, 200, 300
2.擷取元組中的元素
1.擷取單個元素
names = '生活大爆炸', '權利的遊戲', '吸血鬼日記', '破産姐妹', '尼基塔'
print(names[-2])
2.切片
names = '生活大爆炸', '權利的遊戲', '吸血鬼日記', '破産姐妹', '尼基塔'
print(names[1::2])
3.周遊
for 變量 in 元組
4.其他方式:
a.
touple6 = (10, 20, 30)
x, y, z = touple6
print(x, y, z)
num1, num2 = 100, 200 # num1, num2 = (100,200)
b. 變量1,變量2,變量3,… =元組
前面的變量的個數小于元組中元組的個數,并且有且隻有一個變量前有*
帶變量最後的取值為不帶的變量取後剩下的
person = ('餘婷', '女', 18, 100, 89, 50)
name, *gender, age, num = person
print(name, gender, age, num)
2.字典基礎
1.什麼時候使用字典:
a.需要同時儲存多個資料
b.多個資料的意義不同(需要做區分)
2.什麼是字典(dict)
字典是容器型資料類型,将{}作為容器的标志,多個元素用逗号,隔開,字典元素都是鍵值對
{鍵1: 值1, 鍵2:值2, }
字典是可變的,支援增删改,字典是無序的,不支援下标操作
字典對元素的要求:必須所有元素都是鍵值對
鍵 - 是不可變的,是唯一的,一般是字元串
值 - 任何類型的資料,可以重複
字典在儲存資料的時候,真正儲存的是值,鍵是用來對值進行區分和說明的
2.擷取字典的值
1.擷取單個元素對應的值
a. 字典[key] - key不存在會報錯
b. 字典.get(key) - key不存在時候不報錯,報None
c. 字典.get(key, 預設值) - key不存在時候不報錯,并且傳回預設值
2 周遊
for 變量 in 字典
循環體
這裡變量取到的是字典中所有的key
dog = {'name': '财财', 'age': 3, 'breed': '土狗', 'gender': '母', 'weight': 10}
for x in dog:
print(x, dog[x])
練習:聲明一個變量,同時儲存四個學生的資訊,每個學生需要包含學生的姓名、年齡、電話、成績,統計四個學生中未成年人的個數
students = [{'name': 'zhang', 'age': 19, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 13, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 17, 'tel': 110, 'score': 70}, {'name': 'zhang', 'age': 190, 'tel': 110, 'score': 70}]
count = 0
for x in students:
if x['age'] < 18:
count += 1
print('未成年人個數', count)
3,字典元素的增删改
1.增、改
文法一:
字典[key] = 新值
改:如果key存在,就将key對應的值修改成指定的值
增:如果key不存在,就以"key: 新值"的形式添加一個鍵值對
文法二:
添加鍵值對 :字典.setdufault(鍵,值)
movie = {'name': '西遊記', 'time': '1978-10-23', 'director': '吳承恩'}
print(movie)
movie['time'] = '1989-10-2'
print(movie)
movie['score'] = 9.0
print(movie)
movie.setdefault('type', '神話')
print(movie)
2.删
1.del
Del 字典[key] - 删除指定key對應的鍵值對(key不存在會報錯)
2.pop
字典.pop(key) - 取出字典中指定key對應的值,并傳回取出的值
del movie['director']
print(movie)
value = movie.pop ('type')
print(movie)
4.字典相關操作和方法
1.字典相關操作
字典不支援加法和乘法運算
1.比較運算:
字典不可以比較大小,隻能比較相等
2.in 和 not in
資料 in 字典 - 判斷字典中是否存在指定的key
資料 not in 字典 - 判斷字典中是否不存在指定的key
cat = {'name': '花花', 'age': 2, 'colour': '白色'}
print('name' in cat) # True
print('花花' in cat) # False
3.相關函數
len(字典) - 統計字典中鍵值對的個數
dict(資料) - 将指定的資料轉換成字典
此處對資料的要求:
1.是容器型資料類型
2.資料中的元素是有且隻有兩個元素的容器
3.小容器中的第一個元素是不可變的
字典轉換成其他資料類型:
bool(字典) - 空字典會轉換成false,其他都輸True
隻有數字類型和小部分字元串能轉換成數字,其他不行,字典也不行
list(字典) - 把字典所有的key轉換成清單元素
touple(字典) - 把字典所有的key轉換成元組元素
print(len(cat))
print(dict([[42, 12], [235, 6346]])) # {42: 12, 235: 6346}
print(list(cat))
2.相關方法
1、 字典.clear() - 清空字典
2、字典.copy() - 複制字典并産生一個新的字典并傳回
3、dict.fromkeys() - 建立字典
dict.fromkeys(序列) - 将序列中的元素都作為字典的key,字典的值為none
dict.fromkeys(序列, 值) - 将序列中的元素都作為字典的key,字典的值都是指定的值
stu = dict.fromkeys(['name', 'age', 'gender', 'tel', 'address', 'score'])
print(stu)
4.items, keys, values
print(cat.keys()) # 擷取字典所有的key傳回一個容器,這個容器不是清單
print(cat.values()) # 擷取字典所有的值傳回一個容器,這個容器不是清單
print(cat.items()) #擷取字典所有的鍵值對傳回一個容器,這個容器不是清單,容器中的元素是元組,每個元組對應一個鍵值對
-
update
字典.update(序列) - 用序列生成的字典去更新原字典(更新方式:不存在就添加,存在就修改)
dict4 = {'a', '10', 's', '35'} dict4.update({'a', 100, 'for'})
5.集合(set)
1.什麼是集合
集合是容器型資料類型,将{}作為容器的标志,裡面多個元素用逗号,隔開
元素是普通資料不是鍵值對
{元素1, 元素2, 元素3,…}
集合是可變的,支援增删改
集合是無序的
集合對元素的要求:集合中的元素是不可變并且唯一的,清單不能作為集合中的元素
可以利用集合元素的唯一性進行去重操作
空集合:
empty = set() # {}是空字典
非空集合
set1 = {1, 123, 524}
2.集合中元素的增删改查
1查
集合沒有辦法直接擷取單個元素,隻能周遊
‘’’
for 變量 in 集合
循環體
變量取到的就是集合中的每個元素
‘’’
nums = {42, 525, 563, 56745, 575}
for x in nums:
print(x)
2增
‘’’
方法1
a.集合.add(元素)
b.集合.update(序列) - 将序列中元素全部添加到集合中,序列中元素必須是不可變的
‘’’
nums.add(1000)
print(nums)
nums.update((1, 23, 35))
print(nums)
3删
‘’’
集合.remove(元素) - 删除集合中指定的元素(元素不存在會報錯)
集合.discard(元素) - 删除集合中指定的元素(元素不存在不會報錯)
‘’’
4改 : 集合無法修改元素
3.數學集合運算
1 Python中的集合支援數學集合運算
2并集 |
3 差集 - 集合1 - 集合2 : 集合1中除了集合2剩下的部分
4對稱差集^ 去掉兩個集合公共部分後剩下的部分
5真子集 >,<
集合1 > 集合2 - 判斷集合2是否是集合1的真子集
集合1 < 集合2 - 判斷集合1是否是集合2的真子集