day7——集合,深浅copy
數(shù)據(jù)類型的補充
# s1 = '中國'
# b1 = s1.encode('utf-8')
# # print(b1)-------------->b'\xe4\xb8\xad\xe5\x9b\xbd'
utf-8 bytes --->gbk bytes
# s2 = b1.decode('utf-8')
# # print(s2)---------------中國
# b2 = s2.encode('gbk')
# print(b2)------------------b'\xd6\xd0\xb9\xfa'
?
數(shù)據(jù)類型的補充
1,元組
tu1 = ('laonanhai')
tu2 = ('laonanhai',)
print(tu1,type(tu1))-----------laonanhai <class 'str'>
print(tu2,type(tu2))-----------('laonanhai',) <class 'tuple'>
tu1 = (1)
tu2 = (1,)
print(tu1,type(tu1))-------------1 <class 'int'>
print(tu2,type(tu2))(1,) -----------<class 'tuple'>
元組里面如果只有一個元素且沒有逗號,則該數(shù)據(jù)的數(shù)據(jù)類型與里面的元素相同
tu1 = ([1, 2, 3])
tu2 = ([1, 2, 3])
print(tu1, type(tu1))----------[1, 2, 3] <class 'list'>
print(tu2, type(tu2))----------[1, 2, 3] <class 'list'>
?
list
l1 = [111, 222, 333, 444, 555,]
索引為奇數(shù)對應的所有元素全部刪除。
方法一
del l1[1::2]
print(l1)--------------[111, 333, 555]
?
***在循環(huán)一個列表時,最好不要改變列表的大小,會影響你的最終結果倒著刪除: for index in range(len(l1)-1,-1,-1):if index % 2 == 1:del l1[index] print(l1)--------------------[111, 333, 555]dict dic = dict.fromkeys('abc',666) print(dic)-----------------{'a': 666, 'b': 666, 'c': 666} dic = dict.fromkeys([11, 22, 33],666) print(dic)--------------------{11: 666, 22: 666, 33: 666} dic = dict.fromkeys([1, 2, 3], []) dic[3].append(666) print(dic)----------------------{1: [666], 2: [666], 3: [666]}
?
***在循環(huán)dict中,最好不要改變dict的大小,會影響結果或者報錯。 dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3','name': 'alex'} for i in dic:if 'k' in i:del dic[i] l1 = [] for key in dic:if 'k' in key:l1.append(key) print(l1) for key in l1:del dic[key] print(dic)---------------------報錯(原因是字典在迭代過程中改變大小)
?
數(shù)據(jù)類型的轉換:
str----------->list split
list--------->str join
tuple-------->list
tu1 = (1, 2, 3)
l1 = list(tu1)
print(l1)------------------[1, 2, 3]
tu2 = tuple(l1)
print(tu2)----------------(1, 2, 3) dic----------->list list(dic)(列表中的元素只有key) dic = {'k1': 'v1', 'k2': 'v2','k3': 'v3',}
l1 = list(dic)
print(l1)------------------------['k1', 'k2', 'k3']
print(list(dic.keys()))------------['k1', 'k2', 'k3']
print(list(dic.values()))------------['v1', 'v2', 'v3']
print(list(dic.items()))---------------[('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')] 0, '', [], () {} ---> bool 都是Fasle
print(bool([0, 0, 0]))------------True
集合
集合本身是可變的數(shù)據(jù)類型,不可hash,有增刪改查操作
集合中的元素必須是可哈希的,不重復的,可以去重
set集合是python中的一個基本數(shù)據(jù)類型
set中的元素是不重復的,無序的,里面的元素必須是可hash的(int,str,tuple,bool)
set就是dict類型的數(shù)據(jù)但是不保存value
day7——作業(yè)
1.判斷一個數(shù)是否是水仙花數(shù), 水仙花數(shù)是一個三位數(shù), 三位數(shù)的每一位的三次方的和還等于這個數(shù).
那這個數(shù)就是一個水仙花數(shù), 例如: 153 = 1**3 + 5**3 + 3**3
n = input("請輸入一個三位數(shù):") # 156 s = int(n[0])**3 + int(n[1])**3 + int(n[2]) ** 3 if int(n) == s:print("是水仙花數(shù)") else:print("不是")
2.給出一個純數(shù)字列表. 請對列表進行排序(升級題).
思路:
1.完成a和b的數(shù)據(jù)交換. 例如, a = 10, b = 24 交換之后, a = 24, b = 10
2.循環(huán)列表. 判斷a[i]和a[i+1]之間的大小關系, 如果a[i]比a[i+1]大. 則進行互換. 循環(huán)結束的時候.
當前列表中最大的數(shù)據(jù)就會被移動到最右端.
3.想一想, 如果再次執(zhí)行一次上面的操作. 最終第二大的數(shù)據(jù)就移動到了右端. 以此類推.
如果反復的進行執(zhí)行相應的操作. 那這個列表就變成了一個有序列表. #①
lst = [88,5,8,6,1,23]
for a in range(len(lst)): # 記錄內部排序的次數(shù)
i = 0
while i < len(lst) - 1: # 把最大值移動到右端
if lst[i] > lst[i+1]: # 比較,
lst[i], lst[i+1] = lst[i+1], lst[i] # 交換
i = i + 1
print(lst)
#②
lis=[12,3,5,8,2,45,1]
for n in range(len(lis)):
for i in range(len(lis)-1):
if lis[i]>lis[i+1]:
lis[i],lis[i+1]=lis[i+1],lis[i]
print(lis)
3.完成彩票36選7的功能. 從36個數(shù)中隨機的產生7個數(shù). 最終獲取到7個不重復的數(shù)據(jù)作為最終的開獎結果.
隨機數(shù):
from random import randint
randint(0, 20) # 0 - 20 的隨機數(shù)
from random import randint lst = [] n = 1 c = 0 a = "" while n <= 7:b = randint(1, 36)if b in lst:continueelse:lst.append(b)n = n+1a = a + " " + str(lst[c])c += 1 print("開獎結果為%s" % (a), end = "")
4. 稅務部門征收所得稅. 規(guī)定如下:?
?? ?? ? 1). 收入在2000以下的. 免征.
?? ?? ? 2). 收入在2000-4000的, 超過2000部分要征收3%的稅.?
?? ?? ? 3). 收入在4000-6000的, 超過4000部分要征收5%的稅.
?? ?? ? 4). 收入在6000-10000的, 超過6000部分要征收8%的稅.??
? ??? ? 4). 收入在10000以上的, 超過部分征收20%的稅.?
? ? 注, 如果一個人的收入是8000, 那么他要交2000到4000的稅加上4000到6000的稅加上6000到8000的稅.?
? ??? ? 收入 = 8000-(4000-2000)*3%-(6000-4000)*4%-(8000-6000)*8%
讓用戶輸入它的工資, 計算最終用戶拿到手是多少錢.
num = int(input("請輸入你的工資:")) if num <= 2000:print("你的工資是%s"%(num)) if 2000 < num <= 4000:num -= (num-2000)*0.03print("你的工資是%s" % (num)) if 4000 < num <= 6000:num -= (4000-2000)*0.03-(num-4000)*0.05print("你的工資是%s" % (num)) if 6000 < num <= 10000:num -= (4000-2000)*0.03-(6000-4000)*0.05-(num-6000)*0.08print("你的工資是%s" % (num)) if num>10000:num -= (4000 - 2000) * 0.03 - (6000 - 4000) * 0.05 - (10000 - 6000) * 0.08-(num-10000)*0.2print("你的工資是%s" % (num))
?
轉載于:https://www.cnblogs.com/-li926/p/9477726.html
總結
以上是生活随笔為你收集整理的day7——集合,深浅copy的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS运算符类型
- 下一篇: 页面某个模块的文字内容是动态的,可能是几