Python——數據類型(數字,字符串,dict ,set,map函數)

python核心數據類型

Number(數字)

  • python支持 int(整數) , float(浮點型) , complex(複數) 三種不同的數據類型。
a = 3
b = 3.14
c = 3 + 4j
print (type(a),type(b),type(c))
#結果:
<class 'int'> <class 'float'> <class 'complex'>
#判斷變量是否是該類型
print(isinstance(a,int))
#結果:
True
  • Number實例代碼
import math
print(math.factorial(32))  #計算32的階乘
263130836933693530167218012160000000

print(0.4-0.3 == 0.1)    #實數之間儘量避免直接比較大小
False

print(0.4-0.3)
0.10000000000000003

print(math.isclose(0.4-0.3,0.1))  #測試兩個實數是否足夠接近
True
#python中複數的運算
c = 3 + 4j
print (c+c)     #複數相加   
print (c.real)      #複數的實部
print(c.imag)     #複數的虛部
print (3+4j.imag)   #相當於3+(4j).imag
#結果:
(6+8j)
3.0
4.0
7.0

數字類型的各類函數

數學函數

在這裏插入圖片描述

隨機函數

在這裏插入圖片描述

三角函數

在這裏插入圖片描述

數學常量

在這裏插入圖片描述

String(字符串)

  • python中的字符串可以使用單引號,雙引號,三引號(三個單引號或者是三個雙引號)括起來,使用\(反斜槓)轉義特殊字符。
  • python3源碼文件默認以UTF-8編碼,所有字符串都是Unicode字符串。
  • 支持字符串拼接,截取等多種運算。
text = '''beautiful is better than ugly.
explicit is better than implicit
simple is better than complex
flat is better than nested
'''
print(len(text))  #字符串長度,即所有字符的數量
print(text.count('is'))  #字符串中單詞is出現的次數
print ('beautiful' in text)  #測試字符串中是否包含單詞beautiful
121
4
True

字符串操作方法:(以下“str”表示爲一個字符串)

str[ ]:索引

str[ : ]:剪切

len(str):長度

str.upper():字符串中字母大寫

str.lower():字符串中字母小寫

str.capitalize()

str.title()

str.swapcase()

text = 'beautiful is better than ugly is.'
print(text.upper())   #字符串中字母大寫
print(text.lower())  #字符串中字母小寫
print(text.capitalize())    #句首字母大寫
print(text.title())     #每個字符首字母大寫
print(text.swapcase())  #原來的大寫變小寫,小寫變大寫


BEAUTIFUL IS BETTER THAN UGLY IS.
beautiful is better than ugly is.
Beautiful is better than ugly is.
Beautiful Is Better Than Ugly Is.
BEAUTIFUL IS BETTER THAN UGLY IS.

split(str = ’ ',num = string.count(str))

  • 其中num = string.count(str))以str爲分隔符截取字符串,如果num有指定值,則僅截取num+1個子字符串。
  • rsplit()類似,從右側開始截取。

str.join(seq):已制定字符串作爲分隔符,將seq中所有元素(的字符串表示)合併爲一個新的字符串。

text = 'Beautiful is better than ugly.'
print(text.split())     #使用空白字符進行分割
print(text.split(maxsplit = 1))
print(text.rsplit(maxsplit = 2))
print('1,2,3,4'.split(','))
print(','.join(['1','2','3','4']))

['Beautiful', 'is', 'better', 'than', 'ugly.']
['Beautiful', 'is better than ugly.']
['Beautiful is better', 'than', 'ugly.']
['1', '2', '3', '4']
1,2,3,4

str.find(sub,start,end):搜索字符串中是否有sub字符串,從start開始,end結束。

str.replace(str1,str2,max):將字符串中的str1替換爲str2,替換不超過max次。

text = 'python是一門非常棒的編程語言。'
#replace() 方法返回替換後的新字符串,可以直接再次調用replace()方法
print(text.replace('棒','優雅').replace('編程','程序設計'))
print(text)		#text沒有發生變化,是因爲字符串是不可變的,replace()是產生一個新的字符串

python是一門非常優雅的程序設計語言。
python是一門非常棒的編程語言。

for v in str:字符串迭代

index(x):從左到右依次檢測x第一次出現的索引值,如果不存在,返回異常

rindex(x):從右到左依次檢測x第一次出現的索引值,索引值爲從左數的,如果不存在,返回異常

text = '處處飛花飛處處;聲聲笑語笑聲聲。'
print(text.rindex('處'))
print(text.index('聲'))
print(text.count('處'))

6
8
4

count(x):返回x在字符串中出現的次數

maketrans():創建字符串映射的轉換表。

translate(str):根據str給出的映射轉換錶轉換string字符。

table = ''.maketrans('0123456789','零一二三四五六七八九')
print('Tel:6761865'.translate(table))

Tel:六七六一八六五	

ljust(width,fillchar):返回一個原字符串左對齊,並使用fillchar填充至長度width的新字符串,fillchar默認爲空格。rjust()、center()類似。

print('居左'.ljust(20)+'結束')
print('居右'.rjust(20,'#'))   #左側使用#填充
print('居中'.center(20,'-'))  #兩側使用-填充

居左                  結束
##################居右
---------居中---------

startswith()、endswith():檢查字符串是否以指定字符開頭或者是結尾,返回值爲布爾值。

text = 'beautiful is better than ugly is.'
print(text.startswith('beautiful'))
print(text.startswith('Beautiful'))
print(text.endswith(('.',',',':')))

True
False
True

strip() 、rstrip()、lstrip():從兩側、右側、左側截取字符串的指定字符

text = '******=======text========###$$$$*****'
print(text.strip('*'))  #從兩端刪除*號

#從兩端刪除=#*,參數中無需規定順序,類似於一個字符串列表。
# 右端只刪除了*是因爲參數中沒有$,所以遇到$時候停止
print(text.strip('=#*'))

print(text.lstrip('*='))    #從左端刪除*=

#從右端刪除*$=,只刪除了*$,到#停止是因爲參數裏沒有#
print(text.rstrip('*$='))
結果:
=======text========###$$$$
text========###$$$$
text========###$$$$*****
******=======text========###

Process finished with exit code 0

list列表

tuple元組

dict字典

  • 字典是有序(python 3.6 版本之後更新)的對象集合,使用鍵-值(key-value)存儲,具有極快的查找速度。
  • 鍵(key)必須使用不可變類型。
  • 同一個字典中,鍵(key)必須是唯一的,如果重複,最後的一個鍵值會替換前面的,值不需要唯一。
  • 字典中值可以時任意數據類型,但鍵必須是不可變的,如字符串,數字或元組。
d = {'Michael':95,'Bob':75,'Tracy':85}
print(d['Michael'])
95

d = {'a':1,'b':2,'b':3}
print(d)
{'a':1,'b':3}
  • 創建字典的另一種方法:dict函數
items = [('name','Ruby'),('age',25)]
d = dict(items)
print(d)

d = dict(name = 'Ruby',age = 25)
print(d)
#結果:
{'name': 'Ruby', 'age': 25}
{'name': 'Ruby', 'age': 25}

字典的常用方法:

在這裏插入圖片描述

copy():返回字典高層結構的一個拷貝,但是不復制嵌入結構,只複製對那些結構的引用。
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
print(d['name'])
print(d.get('age','sex'))   #如果字典中有age,則返回該鍵相對應的值,如果沒有則返回get函數的第二個參數。
#結果:
Ruby
25

print(list(d))  #返回字典的鍵
print(list(d.values())) #返回字典的值
print(list(d.items()))  #返回字典的所有元素
#結果:
['name', 'age', 'sex']
['Ruby', 25, 'female']
[('name', 'Ruby'), ('age', 25), ('sex', 'female')]

#用for循環,返回字典的所有元素:
for k,v in d.items():
    print(k,v,sep = ' ')
#結果:
name Ruby
age 25
sex female
'''
字典元素的修改,添加與刪除
'''

#當以指定“鍵”爲下標給字典元素賦值時,1)若是“鍵”存在,則修改;2)若是不存在,則添加。
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
d['name'] = 'zhaojiaxuan'
d['address'] = 'Nei Meng gu '
print(d)
{'name': 'zhaojiaxuan', 'age': 25, 'sex': 'female', 'address': 'Nei Meng gu '}



#用update()方法可以將另一個字典的元素一次性全部添加到當前字典,如果鍵相同就替換,如沒有像關鍵就添加
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
b = {'name':'zhaojiaxuan','address':'liulin'}
d.update(b)
print(d)
{'name': 'zhaojiaxuan', 'age': 25, 'sex': 'female', 'address': 'liulin'}


#刪除
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
print(d.pop('name'))	#用pop()刪除指定“鍵”對應的元素,同時返回對應的“值”
print(d)
Ruby	
{'age': 25, 'sex': 'female'}

# 使用popitem()刪除
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
print(d.popitem())	#刪除最後一個元素,並以元組的形式返回最後一個元素的鍵值對
print(d)
('sex', 'female')
{'name': 'Ruby', 'age': 25}


#使用del函數刪除
items = [('name','Ruby'),('age',25),('sex','female')]
d = dict(items)
del d['name']  
print(d)
{'age': 25, 'sex': 'female'}

set集合

  • set和dict類似,也是一組key的集合,但是不存儲value。由於key不可以重複,所以在set中,沒有重複的key。
  • set是無序的,重複元素在set中自動被過濾。
s = set([1,2,3])
print(s)
s = set([1,1,2,2,3,4,4,5])
print(s)
#結果:
{1, 2, 3}
{1, 2, 3, 4, 5}
  • set中只可以包含數字、字符串、元組等不可變類型的數據,而不可以包含列表、字典、集合等可變類型數據,包含列表等可變類型的元組也不能作爲集合的元素。
  • set是無序的,所以不支持用下標直接訪問特定位置的元素,但是可以使用random模塊中的sample()函數隨機選取部分元素。
  • set可以看作是數學意義上的無序和無重複元素的集合,因此,兩個set可以做數學意義上的交集(&)、並集(|)、差集(-)等操作。

set常用方法:

s.add(x):將元素x添加到集合s中,如果已存在,則不進行任何操作

s.update(x):將x的元素添加到集合s中,x可以是元組,列表,字典等。

s.pop(x):隨機刪除集合中的一個元素。

s.remove(x):將元素x從集合s中刪除,如果x不存在,則會發生錯誤。

s.discard(x):將元素x從集合s中刪除,如果x不存在,不會發生錯誤。

s = {3,5,9,7,6}
s.add(2)    #給集合增加一個元素2
print(s)

s = {3,5,9,7,6}
d = {8,2,9}
s.update(d)     #將集合d更新到集合s中
print(s)
s.pop()     #隨機刪除一個元素
print(s)
s.remove(5)     #刪除5
print(s)
s.discard(2)       #刪除一個不存在的元素,不會報錯
print(s)

#結果:
{2, 3, 5, 6, 7, 9}
{2, 3, 5, 6, 7, 8, 9}
{3, 5, 6, 7, 8, 9}
{3, 6, 7, 8, 9}
{3, 6, 7, 8, 9}

綜合示例

list = [1,2,3]
tuple = (1,2,3)
dict = {'a':97,'b':98,'c':88}
set = {1,2,3}
print(dict['a'])    #字典的下標是“鍵”,輸出爲對應“鍵”的“值”
print(tuple.index(2))   #查看元組中元素2首次出現的位置
#結果:
97
1

#查看字典中那些“鍵”對應的“值”爲98
for key,value in dict.items():  #items爲元素
    if value == 98:
        print(key)
#結果:
b

map函數

s = []
for i in range(5):
    s.append(i)
print(s)
a = map(str,s)  #map函數就是把轉換函數,將s中元素從int轉換爲str
print('1' in a)
#結果:
[0, 1, 2, 3, 4]
True

數據類型間的轉換

  • base表示轉換爲base進制的整數
  • real表示複數的實數,imag表示複數的虛數
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章