python數據類型


python數據類型

一、數值型

二、字符型

三、容器型數據類型

 

數值型

1、整型

x = 3
print(id(x))
x = 5
print(id(x))

# id(): 返回一個整數,代表變量在內存中的地址
# 以上兩個id返回的值明顯不一樣,說明變量值的地址是不一樣的

2、浮點型

浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型

注:  浮點數的取值范圍和精度一般無限制,但是浮點數運算可能存在誤差,也就是可能有不確定尾數

x = 2.23
print(x)
d = 4.3
c = d-x
print(c)

3、布爾型

布爾數據類型,簡稱布爾類型,在 Python 中用 `bool`表示。 bool 類是 int 類的子類。 布爾類型提供了兩個布爾值來表示真(對)或假(錯),在 Python 中分別用 `True`(真或對)或`False`(假或錯)來表示。

print(True)  # True 首字母要大寫
print(False)  # False 首字母要大寫
print(type(True))  # 查看 True 的類型
print(type(False))  # 查看 False 的類型

結果:

True
False
<class 'bool'>
<class 'bool'>

字符型

1.字符串的表示

(1)用單引號、雙引號或三引號括起來的符號系列稱為字符串, 並且單引號、雙引號、三單引號、三雙引號可以互相嵌套,用來表示復雜字符串

1 "wyb", 'Hello, World', "python", '''Tom said, "Let's go"'''都是字符串

(2)空串表示為'', ""

1 # 下面是空串:
2 msg = ''
3 name = ""

(3)三引號表示的字符串可以換行,支持排版較為復雜的字符串;三引號還可以在程序中表示較長的注釋

1 msg = '''
2 我是誰
3 我在哪
4 我在干什么
5 '''
6 print(msg)  # 字符串換行
1 '''
2 三引號中可以寫多行注釋
3 這里可以寫多行注釋
4 '''

(4)不加引號的字符串會被系統認為是變量

>>> name = jack
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'jack' is not defined
>>> jack = "wyb"
>>> name = jack
>>> name
'wyb'

字符串常用方法

(1)字符串拼接:

+:  直接將兩個字符串相加   *: 字符串復制多次

join(seq) 以指定字符串作為分隔符,將 seq 中所有的元素(的字符串表示)合並為一個新的字符串

1 >>> name = "wyb"
2 >>> age = "21"
3 >>> name + age
4 'wyb21'
5 >>> name*3
6 'wybwybwyb'
1 >>>''.join("python")
2 'python'
3 >>>'123'.join("python")
4 'p123y123t123h123o123n'

注: 字符串只能與字符串進行拼接,不能與其他數據類型一起拼接!

1 >>> name = "wyb"
2 >>> age = 21
3 >>> name + age
4 Traceback (most recent call last):
5   File "<stdin>", line 1, in <module>
6 TypeError: must be str, not int

(2)大小寫:

capitalize() 將字符串的第一個字符轉換為大寫

swapcase() 將字符串中大寫轉換為小寫,小寫轉換成大寫

upper() 轉換字符串中所有小寫字母為大寫 

lower() 轉換字符串中所有大寫字符為小寫

title() 返回"標題化"的字符串,就是說所有單詞都是以大寫開始,其余字母均為小寫

>>> s = "python web framework"
>>> s.capitalize()
'Python web framework'
>>> s
'python web framework'
>>> s.upper()
'PYTHON WEB FRAMEWORK'
>>> s.lower()
'python web framework'
>>> s.title()
'Python Web Framework'

>>> s = "ABCDefg"
>>> s.swapcase()
'abcdEFG'

(3)字符串填充:

center(width, fillchar) 返回一個指定的寬度 width 居中的字符串,fillchar 為填充的字符,默認為空格

ljust(width[, fillchar]) 返回一個原字符串左對齊,並使用 fillchar 填充至長度 width 的新字符串,fillchar 默認為空格。

rjust(width,[, fillchar]) 返回一個原字符串右對齊,並使用fillchar(默認空格)填充至長度 width 的新字符串

zfill (width) 返回長度為 width 的字符串,原字符串右對齊,前面填充0

 
>>> s = "python"
>>> s.center(20, '*')
'*******python*******'
>>> s.ljust(10, '*')
'python****'
>>> s.rjust(10, '*')
'****python'
>>> s.zfill(10)
'0000python'

(4)數值計算:

len(string) 返回字符串長度

count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出現的次數,如果 beg 或者 end 指定則返回指定范圍內 str 出現的次數,str可以是一個字符也可以是多個字符

>>> s = "python"
>>> len(s)
6
>>> s = "111222abcdefga"
>>> s.count(1)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> s.count('1')
3
>>> s.count('1111')
0
>>> s.count('111')
1
>>> s.count('a')
2

容器型數據類型

1、列表

# append()  將參數作為元素添加到列表中去
a = [1, 2]
a.append([3, 4])    
print(a)    # [1, 2, [3, 4]]
# extend()  將參數列表逐個添加到列表中去
a = [1, 2]
a.extend([3, 4])
print(a)    # [1, 2, 3, 4]
# insert(index, object)     在指定位置index前插入元素object
a = [1, 2, 3, 4]
a.insert(1, [3, 4])
print(a)    # [1, [3, 4], 2, 3, 4]
復制代碼
# 修改元素有兩個方法,一個是通過下標,一個是通過切片(切片是左閉右開區間)
a = [1, 2, 3, 4]
# 方式一:下標修改
a[1] = ""
print(a)    # [1, '中', 3, 4]
# 方式二:切片修改,也可以實現刪除
a[2:3] = ["", "", "", ""]   # [1, '中', '天', '下', '大', '同', 4]
print(a)
a[2:3] = []
print(a)    # [1, '中', '下', '大', '同', 4]
復制代碼
# a.index(x,begin,.end)       # 在a中的begin和end之間,查找字符x的下標,沒有會報錯
a = [1, 2, 3]
print(a.index(2))   # 1
復制代碼
列表.count(x, begin, end)    # 查詢x在列表中的個數
del 列表[下標值]             # 根據下標進行刪除
列表.pop()                   # 刪除最后一個元素,也可以針對指定的下標刪除,會返回刪除的內容
列表.remove(元素)            # 將指定的元素從列表中刪除
列表.sort(reverse=True)      # sort方法是將列表按特定順序重新排列,默認為由小到大,參數reverse=True可改為倒序,由大到小。
列表.reverse()                # reverse方法是將list逆置。

2、字典

 字典表示為dict,使用鍵值對的形式來存儲數據的,使用的時候用花括號({})來對這些鍵值對進行封裝,而且內部也是無序存儲的。相對於list來說,字典的查詢速度快,不會隨着key的增加而變慢,但是需要大量的內存。這個通過key計算位置的算法被稱為哈希算法。

如下:

注:鍵可以使用:元組,數字,字符串,如果是布爾值,會忽略,如果是字典或者列表,會直接報錯。

如果鍵重復,只保留最后一個

常用字典方法

# 取字典值可以用鍵來取,如果寫的是字典中沒有的鍵,會報錯,一般用get來取值,沒有對應的鍵會返回None,get的第二個參數可以設置返回的值
a = {"name": "張三", "age": 18, "sex": ""}
print(a["name"])    # 張三
print(a.get("name"))    # 張三
print(a.get("nam"))     # None
print(a.get("nam", "找不到"))      # 找不到
print(a["nam"])     # 報錯
復制代碼
# 添加一個鍵值對,直接用:字典名["鍵名"] = 值
a = {"name": "張三", "age": 18, "sex": ""}
a["address"] = "北京"
print(a)
復制代碼
# 字典名.keys() 返回字典所有key,並放在一個類似列表的dict_keys類中
# 字典名.values() 返回字典所有value,並放在一個類似列表的dict_values類中
# 字典名.items() 返回所有key和values,所有的鍵值對分別構成一個元組,並放在一個類似列表的dict_values類中
a = {"name": "張三", "age": 18, "sex": ""}
print(a.keys())
print(type(a.keys()))
print(a.values())
print(type(a.values()))
print(a.items())
print(type(a.items()))

# 注:可以在for循環中用拆包的方式分別獲取key和value值
復制代碼
復制代碼
# 刪除一個鍵值對可以用:del 字典名["鍵名"]
# 刪除字典則是:del 字典名
# pop也可以刪除一個鍵值對:字典名.pop(鍵名,參數二),如果沒有對應的鍵,返回第二個參數,不寫的話會直接報錯
# 隨機刪除一個鍵值對:字典名.popitem()
# clear是清空字典
a = {"name": "張三", "age": 18, "sex": ""}
del a["name"]
print(a)       # {'age': 18, 'sex': '男'}
print(a.pop("hobby", "沒有"))
a.popitem()    # {'sex': '男'}
print(a)
a.clear()
print(a)       # {}
del a
print(a)       # a被刪除,not defined
復制代碼
其他:

di.setdefault("k111","123")    # 設置值,如果鍵存在,則返回原有值,如果不存在,則將第一個參數作為鍵,第二個參數作為值插入到字典中,並返回值
di.update({"k1":"111","k2":"324"})        # 設置值,如果已經存在則覆蓋,不存在則填入,參數中也可以用k1=23,k2="daf"這種格式
根據序列創建字典,di.fromkeys({"k1","k2","k3"],123)      # 參數中,第一個列表是所有的key,第二個是指定統一的

3、元組

元組不可以增刪改

元組 (Tuple) 是 Python 中基本數據結構之一,與列表類似,但元組中的元素不允許被修改,因此元組也被稱作 只讀列表 。 元組使用小括號 - () 包裹,元素間使用逗號 - , 分隔,元組中的元素可以是字符串、數字、列表、元組等其他數據類型。

a = (1, 2, 3, [4, 5])
a[3][1] = 9
print(a)        # (1, 2, 3, [4, 9])

4、集合

集合的兩大功能:

  • 集合可以實現去重的功能
  • 集合可以實現關系測試:交集;差集;並集;是否子集;是否沒有交集

1. 集合的定義

集合里面的元素是沒有重復的

 

定義一個空集合:第一種方法的定義是錯誤的,生成的是一個字典;第二種方法才是正確的定義一個空集合的方法。

 

2. 集合的特性

集合是無序的,不重復的數據類型,因此不支持索引;切片;重復和連接,只滿足成員操作符和for循環。

 

3. 集合的增刪查

增加:

1. add()—增加單個元素

 

2. update()—增加多個元素

 

刪除:

1. pop()—默認刪除集合的第一個元素,這里與列表剛好相反,尤其注意,不可相互混淆。

 

2. remove()—刪除指定的元素

 

3. clear()—清空集合元素

總結
可變數據類型:列表,字典,集合
不可變數據類型:數值類型,字符串,元組
可變數據類型實現某個功能,直接改變可變的數據類型;
不可變數據類型實現某個功能,需要將結果賦值給另外一個變量;
是否實現for循環
可迭代數據類型:str,list,tuple,dict,set
不可迭代數據類型:數值類型
是否支持索引,切片,重復和連接特性
有序的數據類型:str,list,tuple支持
無序的數據類型:dict,set不支持


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM