第二節課
今天主要講了數據類型
分爲str字符串、int整數、字典、列表、集合、元組
# ########################################## str 字符串 ###############################################
#1、字符串首字母大寫capitalize
# name = 'liuming'
# v = name.capitalize() #設置生成一個新的值
# print(name) #字符串本身不會變
# print(v) #新的值變化
# 2、字符串所有大寫變小寫casefold
# name = 'LiuMing'
# v =name.casefold()
# print(v)
#3、所有大寫變小寫
# name = "LiuMing"
# v=name.lower()
# print(v)
#4、設置長度,並文本居中
#參數1:表示中長度
#參數2:空白處填充的字段(長度只能爲1)
# name = 'liuming'
# v = name.center(15,'-')
# print(v)
#5、表示轉入值在字符串中出現的次數
#參數1:要查找的值(子序列)
#參數2:起始位置(索引)
#參數3:結束位置(索引)
# name = 'alexliumangnishausaisha'
# v = name.count('a')
# print(v)
# v = name.count('li',12) #起始位置
# print(v)
# v = name.count('a',0,18) #結束位置
# print(v)
#6、是否以xx結尾
# name = 'liuming'
# v = name.endswith('ng') #正確返回True,錯誤返回False
# print(v)
#7、是否以xx開頭
# name = 'liuming'
# v = name.startswith('lb') #正確返回True,錯誤返回False
# print(v)
#8、轉換成字節
# name ='劉銘'
# v1 = name.encode(encoding='utf-8') #指定編碼
# v2 = name.encode(encoding='gbk') #指定編碼
# print(v1,v2)
#9、找到製表符\t進行替換(包含開頭的值),根據製表符,自動生成表格(\n換行製表)
# name = 'liu\tming\tal\nex\twu\tpei'
# v = name.expandtabs(30) #指定寬度
# print(v)
#10、找到指定子序列的索引位置:不存在返回-1
# name = 'liumingalex' #不存在返回-1
# v = name.find('q')
# print(v)
# v = name.index('o') #不存在則報錯
# print(v)
#11、字符串格式化
# i = '我叫:%s;年齡:%s;性別:%s'
# v = i%('劉銘',19,'男') #使用佔位符格式化字符串
# print(v)
# i = '我叫:{0};年齡:{1};性別:{2}'
# v = i.format('劉銘',19,'男') #使用format格式化字符串(字符串位置)
# print(v)
# i = '我叫:{name};年齡:{age};性別:{gender}'
# v = i.format_map({'name':'劉銘','age':19,'gender':'那'}) #使用字典格式化字符串
# print(v)
#12、是否是數字、漢字
# name = 'alex8漢字'
# v =name.isalnum() #允許有數字
# print(v)
# v2 =name.isalpha() #不允許有數字
# print(v2)
#13、判斷是否是數字
# num ='②123二'
# v1 = num.isdecimal() #可以識別'123'
# v2 = num.isdigit() #可以識別'123','②'
# v3 = num.isnumeric() #可以識別'123','②',二
# print(v1,v2,v3)
#14、是否是標識符
# n = 'name'
# v = n.isidentifier()
# print(v)
#15是否全部是小寫
# name = 'LMSlns'
# v =name.islower() #是否全部是小寫
# print(v)
# v = name.isupper() #是否全部是大寫
# print(v)
#16、全部變大寫
# name = 'liuming'
# v = name.upper() #字符串全部變大寫,lower()全部變小寫
# print(v)
#17、是否包含隱藏的xx
# name = '二狗二狗二狗\nsbsbsbs'
# v = name.isprintable()
# print(v)
#18、是否全部是空格
# name = ' '
# v =name.isspace()
# print(v)
#19、元素拼接(元素字符串)*****
# name = 'alex'
# v = '_'.join(name) #指定拼接字符
# print(v)
# name_list = ['alex','liuming','liukang']
# v ='說'.join(name_list)
# print(v)
#20、左右填充
#中center左rjust右ljust
# name = 'alex'
# v =name.center(12,'-')
# print(v)
# v =name.rjust(12,'*')
# print(v)
# v =name.ljust(13,'$')
# print(v)
#21、對應關係+翻譯
# m = str.maketrans('aeojj','12344') #對應關係
# name = "asdkahkjfhkjsh123hkj;asdsfjjjcnnn"#講對應關係的字母翻譯爲數字
# v = name.translate(m)
# print(v)
#22、分割保留分割的元素
# name = '劉銘SB李SB進'
# v = name.partition('SB')
# print(v)
#23、替換
# name = '劉銘SB李SB進'
# v =name.replace('SB','hehe') #把SB改成hehe
# print(v)
# v = name.replace('SB','heh',1) #把第一個SB改成heh
# print(v)
#24.移除空白,\n\t,自定義
# name = 'alex\t\n'
# v =name.strip()
# print(v)
#25.大小寫轉換
# name = 'AlesX'
# v = name.swapcase()
# print(v)
#26.填充
# name = 'alex'
# v = name.zfill(45) #指定填充的個數
# print(v)
#
####字符串總結
name= 'liuming\t'
name.capitalize() #字符串首字母大寫
name.casefold() #所有大寫變小寫
name.lower() #所有大寫變小寫
name.center(20,'-') #文本居中,20指定寬度,-指定填充
name.count('u',1,6) #查找值,u爲要查找的值,1字符串位置開頭,6字符串結尾
name.startswith('li') #查詢以xx開頭
name.endswith('ng') #查詢以xx結尾
name.expandtabs(20) #找到製表符\t進行替換製作表格(包含前面的值)
name.format_map({'name':'alex'}) #字符串格式化,根據字典
name.format('liuming') #字符串格式化
name.isalnum() #允許有數字
name.isalpha() #不允許有數字
name.isdecimal() #是否有數字可以識別123
name.isdigit() #是否有數字可以識別123,②
name.isnumeric() #是否有數字可以識別123,二,②
name.isidentifier() #是否是標識符
name.islower() #是否全部是小寫
name.isupper() #是否全部是大寫
name.upper() #全部變大寫
name.lower() #全部變小寫
name.isprintable() #是否包含隱藏的xx
name.isspace() #是否全部是空格
'_'.join(name) #元素拼接
name.rjust(20,'-') #左填充,20指定寬度,-填充的東西
name.ljust(20,'-') #右填充,20指定寬度,-填充的東西
#對應關係+翻譯
m = str.maketrans('aeojj','12344') #對應關係
name = "asdkahkjfhkjsh123hkj;asdsfjjjcnnn"#講對應關係的字母翻譯爲數字
v = name.translate(m) #講對應關係的字母翻譯爲數字
name.partition('um') #分割,保留分割的元素,根據um分割
name.replace('um','SB',1) #替換,um替換爲SB,1指定位置替換
name.strip() #移除空白\t\n
name.swapcase() #大小寫轉換
name.zfill(20) #填充0 ,20指定寬度
len(name) #測寬度
# ########################################## int 整數 ###############################################
#1.當前整數的二進制表示,最少位數
# age = 4 # 001
# print(age.bit_length())
# #獲取當前數據的字節表示
# age = 15
# v1 =age.to_bytes(10,byteorder='big') #10進制,從右往左
# v2 =age.to_bytes(10,byteorder='little') #10進制,從左
# print(v1,v2)
# ########################################## bool 布爾值 ##########################################
# v = 0 #True
# v = "" --> #空內容:False
# v = []--> #空內容:False
# ########################################## list 列表 ##########################################
#列表爲可變類型
user_list = ['劉銘','李','金','王五','李']
#1.追加
# user_list.append('趙四') #在最後追加趙四
# print(user_list)
#2.清空
# user_list.clear() #清空表格內容
# print(user_list)
#3.拷貝(淺拷貝)
# v = user_list.copy() #拷貝到v
# print(v)
# print(user_list)
#4.計數
# v = user_list.count('李') #計算列表中有幾個李
# print(v)
# print(user_list)
#5.擴展原列表
# user_list.extend(['裏護額','alex']) #寫新表擴展到之前表格裏
# print(user_list)
#6.查找元素索引,找不到報錯
# v =user_list.index('李')
# print(v)
#7.刪除並獲取元素 索引
# v =user_list.pop(1) #刪除位置爲1的值
# print(v)
# print(user_list)
#8.刪除
# user_list.remove('李')
# print(user_list)
#9.翻轉(倒序)
# user_list.reverse()
# print(user_list)
#10.排序
# nums =[11,33,22,44,1,2]
# nums.sort() #排序從小到大
# print(nums)
# nums.sort(reverse=True) #排序從大到小
# print(nums)
###### 額外:
# user_list = ['李泉','劉一','李泉','劉康','豆豆','小龍']
# user_list[0]
# user_list[1:5:2] #索引
# del user_list[3] #刪除
# for i in user_list:
# print(i)
# user_list[1] = '姜日天'
# user_list = ['李泉','劉一','李泉','劉康','豆豆',['日天','日地','泰迪'],'小龍']
# li = ['eric','alex','tony']
#
# v = len(li) #長度
# print(v)
#
# li.append('seven') #添加
# print(li)
#
# li.insert(0,'Tony') # 插入
# print(li)
#
# li[1] = 'Kelly' #根據索引替換
#
# li.remove('eric') #刪除
# print(list)
#
# v = li.pop(1) #刪除並獲取元素
# print(v)
# print(li)
#
# del li[2] #刪除表
# del li[0:2] # 0 =<x < 2
# print(li)
# li.reverse() #翻轉
# print(li)
# for i in li: #循環表
# print(i)
# ######################################### 強插:range,enumrate #########################################
# 1. 請輸出1-10
# 2.7: 立即生成所有數字
# range(1,11) # 生成1-10
# 3.x: 不會立即生成,只有循環迭代時,才一個一個生成
# for i in range(1,11): #使用for循環生成1-10
# print(i)
# for i in range(1,11,2): # 生成1-10,2爲不長生成 1 3 5 7
# print(i)
# for i in range(10,0,-1): #
# print(i)
# 1. 3.x 不會立生成,迭代之後才一個一個創建;
"""
- 2.7:
range()
xrange() 不會立生成,迭代之後才一個一個創建;
- 3.x
range() 不會立生成,迭代之後才一個一個創建;
"""
# 2. range: 三個參數
#
# li = ['eric','alex','tony']
# # range,len,li循環
# for i in range(0,len(li)):
# ele = li[i]
# print(ele)
# li = ['eric','alex','tony']
# for i in li:
# print(i)
# for i in range(0,len(li)):
# print(i+1,li[i])
# enumerate額外生成一列有序的數字
# li = ['eric','alex','tony']
# for i,ele in enumerate(li,1):
# print(i,ele)
#
# v = input('請輸入商品序號:')
# v = int(v)
# item = li[v-1]
# print(item)
# #######列表總結
# user_list = ['李泉','劉一','劉康','豆豆','小龍']
# user_list.append('劉i') #追加
# user_list.clear() #清空表
# v =user_list.copy() #淺拷貝
# v =user_list.count('劉一') #計數
# user_list.extend(['是的','阿斯頓']) #擴展原列表
# v =user_list.index('豆豆') #查找索引,找不到報錯
# v =user_list.pop('1') #刪除並獲取元素
# user_list.remove('豆豆') #刪除
# user_list.reverse() #翻轉
# user_list.sort() #排序從小到大
# user_list.sort(reverse=True) #排序從大到小
# user_list[1:5:2] #索引從1-5,2不常
# del user_list[2] #刪除
# v= len(user_list) #統計長度
# user_list.insert(1,'tony') #插入
# ######################################### dict:字典: 可變類型 #########################################
# 1. 清空、
# dic = {'k1':'v1','k2':'v2'}
# dic.clear()
# print(dic)
# 2. 淺拷貝
# dic = {'k1':'v1','k2':'v2'}
# v = dic.copy()
# print(v)
# 3. 根據key獲取指定的value;不存在不報錯
# dic = {'k1':'v1','k2':'v2'}
# v = dic.get('k1111',1111)
# print(v)
# v = dic['k1111']
# print(v)
# 4. 刪除並獲取對應的value值
# dic = {'k1':'v1','k2':'v2'}
# v = dic.pop('k1')
# print(dic)
# print(v)
# 5. 隨機刪除鍵值對,並獲取到刪除的鍵值
# dic = {'k1':'v1','k2':'v2'}
# v = dic.popitem()
# print(dic)
# print(v)
# k,v = dic.popitem() # ('k2', 'v2')
# print(dic)
# print(k,v)
# v = dic.popitem() # ('k2', 'v2')
# print(dic)
# print(v[0],v[1])
# 6. 增加,如果存在則不做操作
# dic = {'k1':'v1','k2':'v2'}
# dic.setdefault('k3','v3')
# print(dic)
# dic.setdefault('k1','1111111')
# print(dic)
# 7. 批量增加或修改
# dic = {'k1':'v1','k2':'v2'}
# dic.update({'k3':'v3','k1':'v24'})
# print(dic)
# dic = dict.fromkeys(['k1','k2','k3'],123)
# print(dic)
# dic = dict.fromkeys(['k1','k2','k3'],123)
# dic['k1'] = 'asdfjasldkf'
# print(dic)
# dic = dict.fromkeys(['k1','k2','k3'],[1,])
# {
# k1: 123123213, # [1,2]
# k2: 123123213, # [1,]
# k3: 123123213, # [1,]
# }
# dic['k1'].append(222)
# print(dic)
# ########## 額外:
# - 字典可以嵌套
# - 字典key: 必須是不可變類型
# dic = {
# 'k1': 'v1',
# 'k2': [1,2,3,],
# (1,2): 'lllll',
# 1: 'fffffffff',
# 111: 'asdf',
# }
# print(dic)
# key:
# - 不可變
# - True,1
# dic = {'k1':'v1'}
# del dic['k1']
# 布爾值:
# 1 True
# 0 False
#
# bool(1111)
# #####字典總結
dic ={'k1':'v1','k2':'v2'}
dic.clear() #清空
v=dic.copy() #淺拷貝
v=dic.get('keee',111) #根據key獲取指定的value,不存在不報錯
dic.pop('k1') #刪除並獲取刪除的鍵值
dic.setdefault('k3','v3')#增加,如果存在則不做操作
dic.update({'k3':'v3','k4':'v4'})#批量增加或修改
del dic['k1'] #刪除
# ##################################### set,集合,不可重複的列表;可變類型 #####################################
# s1 = {"alex",'eric','tony','李泉','李泉11'}
# s2 = {"alex",'eric','tony','劉一'}
# 1.s1中存在,s2中不存在
# v = s1.difference(s2)
# print(v)
# #### s1中存在,s2中不存在,然後對s1清空,然後在重新複製
# s1.difference_update(s2)
# print(s1)
# 2.s2中存在,s1中不存在
# v = s2.difference(s1)
# print(v)
# 3.s2中存在,s1中不存在
# s1中存在,s2中不存在
# v = s1.symmetric_difference(s2)
# print(v)
# 4. 交集
# v = s1.intersection(s2)
# print(v)
# 5. 並集
# v = s1.union(s2)
# print(v)
# 6. 移除
# s1 = {"alex",'eric','tony','李泉','李泉11'}
# s1.discard('alex')
# print(s1)
# s1 = {"alex",'eric','tony','李泉','李泉11'}
# s1.update({'alex','123123','fff'})
# print(s1)
# ##### 額外:
# s1 = {"alex",'eric','tony','李泉','李泉11'}
# for i in s1:
# print(i)
# s1 = {"alex",'eric','tony','李泉','李泉11',(11,22,33)}
# for i in s1:
# print(i)