基本數據類型

# Python 中的變量不須要聲明。每一個變量在使用前都必須賦值,變量賦值之後該變量纔會被建立。
# 在 Python 中,變量就是變量,它沒有類型,咱們所說的"類型"是變量所指的內存中對象的類型。
# 等號(=)用來給變量賦值。
# 等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。
# 變量定義的規則:
# 1.變量名只能是 字母、數字或下劃線的任意組合
# 2.變量名的第一個字符不能是數字
# 3.如下關鍵字不能聲明爲變量名
# ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',
#  'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',
#  'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
# python中的數據又稱爲對象,每建立一個對象都會建立三個屬性
# 一:身份id
# 二:類型type
# 三:值
# is:比較id,id同樣,類型確定同樣,值確定也同樣
# ==:比較的是值

# 基本的數據類型:
# num數字
# str字符串
# 它是一個有序的字符的集合,用於存儲和表示基本的文本信息,‘’或「」或‘’‘ ’‘’中間包含的內容稱之爲字符串

#  list列表 可迭代對象
# []內以逗號分隔,按照索引,存放各類數據類型,每一個位置表明一個元素

# tuple元組
# 與列表相似,只不過[]改爲()

# dict字典
# 字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合。
# 鍵(key)必須使用不可變類型。在同一個字典中,鍵(key)必須是惟一的。

# set集合 無序不重複元素的序列

# 一:可變不可變
# 可變數據類型:列表 字典 集合
# 不可變數據類型:數字 元組 字符串
# 二:存放值的個數
# 一個值:數字,字符串
# 多個值(容器類型):列表,元組,字典
# 三:取值方式
# 直接取值:數字
# 序列類型:字符串,元組,列表
# 映射:字典


# num數字
# int整型
# float浮點型   Python的浮點數就是數學中的小數
# bool布爾值   True和False   1和0
# complex複數   複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。

# 布爾值
# None '' () [] {} 0  都是False
#1 -1 都是True

#數字
# m=10
# a=m.bit_length() #當前數字的二進制,至少用n位表示
# print(a)

# 將字符串轉換成數字
# num='b'
# v=int(num,base=16)#把b以十六進制方式轉換成10進制
# print(v)
# print(bin(10))#十進制轉換成二進制
# print(oct(10))#十進制轉換成八進制
# print(hex(16))#十進制轉換成十六進制

# 列表list
l=[1,2,3,3,4,5,6,7,'z']
l1=['jack']
#
# print(l.index(3))#返回3這個元素的索引
# a=l.count(3)#統計3的個數
# print(a)
# print(len(l))#統計l中有幾個元素

# 切片
# print(l[2:5])#第三個到第四個
# print(l[-2:])

#
# l.append('a') #追加
# print(l)
# l.insert(3,'abc')#把abc插到索引3的位置
# print(l)
# l.extend([7,8])#在最後插入多個
# l.extend('asd')#在最後插入'a','s','d'
# print(l)
# l.extend(l1)
# print(l)
# l=l+l1
# print(l)



#
# l.pop(5)  #刪除索引爲5的元素,默認刪除最後一個值
# print(l)
# l.remove('z')#刪除z這個元素
# print(l)
# del l[2]#刪除索引爲2的元素
# print(l)
# del l #刪除列表

#
# l[2]=555 #賦值操做
# print(l)
# l.clear() #沒動內存空間,只清理了值
# print(l)
# l=[]   #推薦這種方式   指向空列表的內存地址

# l1=[2,3,5,6,4,1]
# l1.sort(reverse=True)   #排序,reverse=Ture表示從大到小排,不寫默認從小到大
# print(l1)
# l1.reverse()#反轉
# print(l1)
# print(l1.copy())#淺拷貝

#隊列:先進先出
# l=[]
# #入隊列
# l.append('people1')
# l.append('people2')
# l.append('people3')
# print(l)
# #出隊列
# print(l.pop(0))
# print(l.pop(0))
# print(l.pop(0))
#
# #insert
# l.insert(0,'people1')
# l.insert(0,'people2')
# l.insert(0,'people3')
# print(l.pop())
# print(l.pop())
# print(l.pop())
# #堆棧:先進後出或後進先出
# l=[]
# #入隊列
# l.append('people1')
# l.append('people2')
# l.append('people3')
# print(l)
# #出隊列
# print(l.pop())
# print(l.pop())
# print(l.pop())

# 元組 一級元素不能被修改,刪除和增長
# tu=(11,22,22,33,44)
# print(tu.count(22))#統計22的個數
# print(tu.index(22))#第一個22的索引


# 字典dict
# d1={}
# d2=dict(x=1,y=2)
# d3=dict({'x':1,'y':2})
# 字典的value能夠是任何值
# 字典能夠有多個key,只有後面的纔會生效
#字典的key必須是不可變類型,或者說是可hash類型
# print(hash(1))
# print(hash('xxx'))
# print(hash((1,2,3)))
# print(hash([1,2,3]))
# print(hash({'a':1,'b':2}))
# 列表、字典不能做爲字典的key,布爾值能做爲key,但會和1,0重複,致使沒法顯示
# python中惟一具備映射關係的數據類型: 字典的查詢效率高於列表
# 建立
# d={[1,2,3]:"yuan","name":"egon"}# 鍵惟一且爲不可變數據類型
# d={1:"yuan","name":"egon"}

#
# v=d['name']#找不到key會報錯
# print(v)
# v=d.get("names",None)  #推薦,key不存在,返回默認值(None)
# print(v)

# d={5:"yuan","name":"egon"}
# for i in d:
#     print(i)#遍歷keys
#     print(i,"----->",d[i])
#     print("%s---->%s======"%(i,d[i]))
# for i in d.values():
#     print(i)#遍歷value
# for k,v in d.items():
#     print(k,v)#取keys和values
# for i,v in enumerate(list,1):#遍歷列表或字符串的索引和值,1表示索引發始值,可不寫,默認爲0
#     print(i,v)



#
d={5:"yuan","name":"egon"}
# d["age"]=123
# print(d)

# 修改
# d[1]=666
# print(d)

# 刪除
# ret=d.pop(5,'None')#刪除d中key值爲5的元素,後面加默認值找不到不會報錯
# print(ret)
# print(d)
# del d[5]#刪除d中key值爲5的元素
# print(d)
# v=d.popitem() #隨機刪一個鍵值對
# print(v)
# d2={"height":123,"sex":"male","name":"alex"}
# d.update(d2)#更新 把d2增長到d,key同樣就覆蓋
# print(d)
# print(list(d.keys()))#查找d全部的key,以列表的形式打印
# print(d.values())#查找d全部的value
# print(d.items())
#已存在,不設置,獲取當前key對應的值
#不存在,設置新的key和value值
# v=d.setdefault('k111','123')
# print(d,v)
#兩種更新方式,已經有的直接覆蓋,沒有的更新
# d.update({'k1':'1111','k3':123})
# print(d)
# d.update(k1=1111,k3=123)
# print(d)
# d6={}.fromkeys(['name','age'],None)#{'name': None, 'age': None}
# print(d6)



# 集合set
# s=frozenset('hello')#不可變集合
# 兩個功能:1 去重 2關係測試
# s1=set([1,3,"hello"])
# s2={1,2,3}
# print(s1)
# print(type(s2))
# print(s.add())#增長一個值
# s.update(s2)#更新多個值
# print(s1)
# print(s1.clear())#清空
# print(s1.copy())#拷貝
# print(s1.remove())#刪除指定元素,不存在會報錯
# print(s1.pop())#隨機刪
# print(s1.discard())#刪除指定元素,不存在不會報錯


#去重:
# l=[1,2,2,34,45]
# s="hello"
# print(set(l))
# print(set(s))

# print({{1,2}:"hello"})#  set是可變數據類型
# print({[]:"hello"})

# s3={1,2,[1,2]}     #  set集合內元素必定是不可變數據類型
# print(s3)

#關係測試
# s1={"hello",1,2,3}
# s2={1,2,("a","b")}

# 取兩者全部的元素:求並集
# print(s1.union(s2)) # {1, 2, 3, ('a', 'b'), 'hello'}
# print(s1|s2)

# 取共同部分:求交集
# print(s1.intersection(s2))# {1, 2}
# print(s1&s2)
# print(s1.isdisjoint(s2))#沒有交集返回True

# 求差集
# print(s1.difference(s2))# {3, 'hello'}
# print(s1-s2)
# print(s2.difference(s1))# {('a', 'b')}
# print(s2-s1)

#對稱差集
# print(s1.symmetric_difference(s2))# {3, 'hello', ('a', 'b')}
# print(s2.symmetric_difference(s1))# {3, 'hello', ('a', 'b')}
# print(s1^s2)#去掉相同的元素而後並集




# 字符串
# 切片
# s='hellowoRld'
# print(s[1:4])    #取第二個到第四個元素
# print(s[1:8:2])   #2 是步長  第二個到第七個每隔兩個取個元素
# print(s[-1])      #取最後一個元素
# print(s[:])    #從頭取到尾
# print(s[:8])    #取到第八個
# print(s[1:-1])   #第二個取到倒數第二個
# print(s[1:])   #第二個取到最後
# print(s[-3:-1])    #取倒數第三個到最後第二個

#查找
# print(s.find('l',5))   #從第5個開始找第一個l的索引  找不到返回-1
# print(s.rfind('l'))   #從右邊開始找第一個l的索引
# print(s.index('e'))#找到元素e的下標  找不到會報錯

# print(s.replace('hello','python',1))  #找到hello,替換成python,替換一次
# print(s.upper())#所有變大寫
# print(s.strip()) #刪除字符串前面和後面的空格和換行符
# print(s.lstrip()) #刪除字符串左邊的空格和換行符
# print(s.rstrip()) #刪除字符串右邊的空格和換行符
# s1="**hello\nworld\n***"
# print(s1)
# print(s1.strip("*"))  #刪除字符串前面和後面的*和換行符
# print(s.startswith('h'))#以什麼開頭,返回布爾值
# print(s.endswith('l')) #以什麼結尾,返回布爾值

# print(s.isidentifier())
# print(s.center(20,'*'))#s居中,*在兩邊,20代指總長度
# print(s.ljust(50,"*")) #左對齊
# print(s.rjust(50,"*")) #右對齊
# print(s.zfill(20)) #右對齊,左邊用0填充
# print(s.capitalize())  #第一個單詞首字母變大寫
# print(s.title())  #每一個單詞的首字母變大寫
# print(s.casefold())  #每一個字母都變成小寫,能處理特殊字符
# print(s.lower())# 每一個字母都變成小寫,只能處理普通字符(英文字母)
# print(s.swapcase())#把大寫變小寫,把小寫變大寫
# print(s.title())#把首字母變大寫

#分割
# print("hello world".split("l",1))    # ["he","lo world"]  l用來分割左右,1是分割次數
# a=s.split("l",3)
# print(type(a)) #類型爲列表
# print("HLLO world".rsplit())   #從右邊開始分割
# print("HELLO\n wor\nld\n".splitlines())    #以\n來分割字符,最後沒有空
# print("HELLO\n wor\nld\n".split("\n"))    #會分最後一個空
# print("HELLo world".zfill(20))      #一共20個字符,前面補0,內容右對齊,字符個數小於自己結果不變

#遍歷
# for i in "hello":
#     print(i)


# 字符串拼接
# s="hello"+"world"+"I"+"am"+"python"
# print(s)
# l=['h','e','l','l','o']
# print(''.join(l))
# 字符串的格式化輸出
# %s:字符串   %d:整型  %f:浮點型
# print('hello %s,%s'%('hehe','haha'))
# print('his age is %d'%25)
# print('hello %s,his age is %d'%('egon',25))
# print('hello %s,his age is %.4f'%('egon',25.1234456))
# print("hello {}, his age is {},sex is {}".format('alex',20,'male'))
# print("hello {0}, his age is {1},sex is {0}".format('alex',20))
# print("hello {name}, his age is {age}".format(age=30,name="egon")) #鍵值對,推薦
# print("hello {name}, his age is {age}".format(**{'age':30,'name':"egon"}))
# print("hello {name}, his age is {age}".format_map({"name":"egon","age":1000})) #字典數據
#判斷是不是數字
# print("一".isdecimal())
# print("一".isdigit())       #不支持負數,經常使用
# print("壹".isnumeric())   #支持最多的

#補充
# str='HEllo'
# sub='l'

# print('hello\tworld'.expandtabs(20))#hello\t一共佔20個
# print(s.count(sub,0,4))#sub在str中在索引[0,4]中存在兩次
# print(s.isalnum())#全部字符都是字母或數字則返回 True,不然返回 False
# print(s.isalpha())#全部字符都是字母則返回 True,不然返回 False
# print(s.islower())#全部這些字符都是小寫則返回 True,不然返回 False
# print(s.isupper())#全部這些字符都是大寫,則返回 True,不然返回 False
# print(s.isspace())#只包含空格,則返回 True,不然返回 False
# print(s.istitle())#判斷首字母是不是大寫,是返回True
相關文章
相關標籤/搜索