1. 程式人生 > >python 學習 D7 遍歷字典的集中方法 集合的作用 以及增刪查

python 學習 D7 遍歷字典的集中方法 集合的作用 以及增刪查

返回值 大小 ren span font enc 遍歷字典 list style

遍歷字典的幾種方法:
dic = {a: 1, b: 2, c: 3}
# 1 遍歷key值
# for key in dic:
#     print(key, dic[key])
#
# for key in dic.keys():
#     print(key, dic[key])         #  a 1  b 2  c 3

# 2 遍歷value值
# for value in dic.values():
#     print(value)                 #  1  2  3

# 3 遍歷字典項
# for kv in dic.items():
# print(kv) # (‘a‘, ‘1‘) (‘b‘, ‘2‘) (‘c‘, ‘3‘) # 4 遍歷key鍵值 # for key,value in dic.items(): # print(key + ‘:‘ + value) # # for (key, value) in dic.items(): # print(key + ‘:‘ + value) # a:1 b:2 c:3


utf - 8 和 gbk 的轉化

# s1 = ‘中國‘
# b1 = s1.encode(‘utf-8‘)
# # print(b1) # # utf-8 bytes --->gbk bytes # s2 = b1.decode(‘utf-8‘) # # print(s2) # b2 = s2.encode(‘gbk‘) # print(b2)

基礎數據類型的補充

1 元組

元組裏面如果只有一個元素且沒有逗號,則該數據的數據類型與裏面的元素相同。

# tu1 = (‘laonanhai‘)
# tu2 = (‘laonanhai‘,)
# print(tu1, type(tu1))
# print(tu2, type(tu2))

# tu1 = (1)
# tu2 = (1,)
# print(tu1, type(tu1)) # print(tu2, type(tu2))

# tu1 = ([1, 2, 3])
# tu2 = ([1, 2, 3],)
# print(tu1, type(tu1))
# print(tu2, type(tu2))

2 列表

#索引為奇數對應的所有元素全部刪除。
#方法一:
# l1 = [111, 222, 333, 444, 555, ]
 
# del l1[1::2]
# print(l1)


#方法二錯誤展示:
# for index in range(len(l1)):
#     print(‘刪除之前的index:%s‘ % index)
#     print(‘刪除之前的l1:%s‘ % l1)
#     if index % 2 == 1:
#         del l1[index]
#     print(‘刪除之後的index:%s‘ % index)
#     print(‘刪除之後的l1:%s‘ % l1)
# print(l1)

# 在循環一個列表時,最好不要改變列表的大小,會影響你的最終結果。
# 倒著刪除。
# for index in range(len(l1)-1, -1, -1):
#     if index % 2 == 1:
#         del l1[index]
# print(l1)

3 字典

fromkeys()

# dic = dict.fromkeys(‘abc‘,666)
# print(dic)
# dic = dict.fromkeys([11,22,33],666)
# print(dic)
# dic = dict.fromkeys([1,2,3],[])
# dic[1].append(666)
# print(dic)

# 在循環dict中,最好不要改變dict的大小,會影響結果或者報錯。

刪除字典鍵帶有“k”的值 先把帶有“k”的鍵放進新的列表裏 然後從列表中刪除
# dic = {‘k1‘: ‘v1‘, ‘k2‘: ‘v2‘,‘k3‘: ‘v3‘,‘name‘: ‘alex‘}
# l1 = []
# for key in dic:
#     if ‘k‘ in key:
#         l1.append(key)
# # print(l1)
# for key in l1:
#     del dic[key]
# print(dic)


# 數據類型的轉換:

str ---> list   split

list --> str join

tuple <---> list  直接轉換 

l1 = list(tu1)

print(l1)

tu2 = tuple(l1)

print(tu2)

dic ----> list    list(dic)(列表中的元素只有key)


dic = {k1: v1, k2: v2,k3: v3,}
l1 = list(dic)
print(l1)



# print(list(dic.keys()))
# print(list(dic.values()))
# print(list(dic.items()))

#0, ‘‘, [], () {}  ---> bool 都是Fasle
 
集合 

集合是一個可變的數據類型,他是以{}形式存在的,空集合set(),


但是它要求它裏面的元素是不可變的,集合是無序的,不重復的。



# set1 = {1, 2, 3, ‘abc‘, (1,2,3), True, }
 1,去重。


# 列表的去重
# l1 = [11, 11, 22, 22, 33, 33, 33, 44]
# l2 = list(set(l1))
# l2.sort()      # 正序排列
# print(l2)


# set1 = {‘alex‘, ‘WuSir‘, ‘RiTiAn‘, ‘egon‘, ‘barry‘}

# 增


# set1.add(‘太白‘)
# print(set1)


# set1.update(‘abc‘)
# set1.update([111, 2222, 333])
# print(set1)

# 刪
# remove按元素刪除
# set1.remove(‘RiTiAn‘)
# print(set1)
# 隨機刪除,有返回值 pop
# print(set1.pop())
# print(set1)
# 清空clear
# set1.clear()
# print(set1)
# 刪除整體 del
# del set1
# print(set1)

# 查

只能用for 循環

# for i in set1:
#     print(i)

2,關系測試。

# set1 = {1, 2, 3, 4, 5}
# set2 = {4, 5, 6, 7, 8}
# 交集 & intersetion


# set3 = set1 & set2
# print(set3)
# print(set1.intersection(set2))
# 並集 | union
# print(set1 | set2)
# print(set1.union(set2))
# 差集 - difference


# print(set1 - set2)  # set1 獨有
# print(set2.difference(set1))  # set2 獨有

# 反交集 ^  symmetric_difference


# print(set1 ^ set2)
# print(set1.symmetric_difference(set2))

# set1 = {1, 2, 3}
# set2 = {1, 2, 3, 4, 5, 6}

# 子集
# print(set1 < set2)  # True set1 是set2的子集
# print(set1.issubset(set2))  # True set1 是set2的子集

# 超集



# print(set2 > set1)  # True set2 是set1的超集
# print(set2.issuperset(set1))  # True set2 是set1的超集

# frozenset 凍集合 把元組 變為可變的



set1 = frozenset({1, 2, 3, alex})
print(set1,type(set1))

深淺 copy

# 對於賦值運算來說,指向的都是同一個內存地址,一變都變。



l1 = [1, 2, 3]
l2 = l1
l3 = l2
l3.append(666)
print(l1, l2, l3)

# 淺copy

#對於淺copy來說,對於淺copy來說,第一層創建的是新的內存地址,而從第二層開始
# ,指向的都是同一個內存地址,所以,對於第二層以及更深的層數來說,保持一致性。


# l1 = [11, 22, 33]
# l2 = l1.copy()
# l1.append(666)
# print(l1, id(l1))
# print(l2, id(l2))

# l1 = [11, 22, [‘barry‘, [55, 66]], [11, 22]] # l2 = l1.copy() # l1[2].append(‘alex‘) # print(l1,id(l1)) # print(l2,id(l2)) # print(l1, id(l1[-1])) # print(l2, id(l2[-1]))

# 深copy   deepcopy 
深copy 完全獨立。
 

import copy  引入copy 模塊


import copy
l1 = [11, 22, 33]
l2 = copy.deepcopy(l1)
l1.append(666)
print(l1, id(l1))
print(l2, id(l2))


import copy
l1 = [11, 22, [barry]]
l2 = copy.deepcopy(l1)
l1[2].append(alex)
print(l1, id(l1[-1]))
print(l2, id(l2[-1]))


對於切片來說,這是淺copy。


# l1 = [1, 2, 3, 4, 5, 6, [11,22]]
# l2 = l1[:]
# l1.append(666)
# print(l1, l2)
# l1[-1].append(666)
# print(l1, l2)

 
 

 
 
 

 

python 學習 D7 遍歷字典的集中方法 集合的作用 以及增刪查