Python數(shù)據(jù)類型詳解02

一. Number(數(shù)字)

  • Python 中數(shù)學運算常用的函數(shù)基本都在 math 模塊狱庇、cmath 模塊中。
  • math 模塊提供了許多對浮點數(shù)的數(shù)學運算函數(shù)粱锐。
  • cmath 模塊包含了一些用于復數(shù)運算的函數(shù)往史。
  • cmath 模塊的函數(shù)跟 math 模塊函數(shù)基本一致忠蝗,區(qū)別是 cmath 模塊運算的是復數(shù),math 模塊運算的是數(shù)學運算。
  • 要使用 mathcmath 函數(shù)必須先導入:
import math

# 或者
import cmath

1. Python數(shù)學常量

math模塊中定義了三個數(shù)學常量

# 自然常數(shù) e
e = 2.718281828459045
# 圓周率垮媒,一般以π來表示
pi = 3.141592653589793
# 2π
tau = 6.283185307179586

2. Python三角函數(shù)

要直接訪問的,需要導入 math 模塊, 然后通過 math 靜態(tài)對象調(diào)用方法

函數(shù) 描述
acos(x) 返回x的反余弦弧度值航棱。
asin(x) 返回x的反正弦弧度值睡雇。
atan(x) 返回x的反正切弧度值。
atan2(y, x) 返回給定的 X 及 Y 坐標值的反正切值饮醇。
cos(x) 返回x的弧度的余弦值它抱。
hypot(x, y) 返回歐幾里德范數(shù) sqrt(x*x + y*y)
sin(x) 返回的x弧度的正弦值朴艰。
tan(x) 返回x弧度的正切值观蓄。
degrees(x) 將弧度轉換為角度,如degrees(math.pi/2) 混移, 返回90.0
radians(x) 將角度轉換為弧度

3.Python數(shù)學函數(shù)

函數(shù) 返回值 ( 描述 )
abs(x) 返回數(shù)字的絕對值,如abs(-12) 返回 12
ceil(x) 返回數(shù)字的上入整數(shù)(小數(shù)向上取整)侮穿,如math.ceil(4.1) 返回 5, math.ceil(4.0) 返回 4
cmp(x, y) 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1; (Python在3.x中已經(jīng)棄用)
exp(x) 返回e的x次冪, 如math.exp(2) 返回7.38905609893065
fabs(x) 返回數(shù)字的絕對值歌径,如math.fabs(-10) 返回10.0
floor(x) 返回數(shù)字的下舍整數(shù)(小數(shù)向下取整),如math.floor(4.9)返回 4
log(x) math.log(math.e)返回1.0, math.log(100,10)返回2.0
log10(x) 返回以10為基數(shù)的x的對數(shù)亲茅,如math.log10(100)返回 2.0
max(x1, x2,...) 返回給定參數(shù)的最大值回铛,參數(shù)可以為序列。
min(x1, x2,...) 返回給定參數(shù)的最小值芯急,參數(shù)可以為序列勺届。
modf(x) 返回x的整數(shù)部分與小數(shù)部分(元組形式),兩部分的數(shù)值符號與x相同娶耍,整數(shù)部分以浮點型表示; 如:math.modf(99.09), 返回(0.09000000000000341, 99.0)
pow(x, y) x**y 運算后的值免姿。
round(x [,n]) 返回浮點數(shù)x的四舍五入值,如給出n值榕酒,則代表舍入到小數(shù)點后的位數(shù); 如round(90.09, 1)輸出:90.1; 如:round(90.09)輸出:90
sqrt(x) 返回數(shù)字x的平方根, 如:math.sqrt(4)返回 2.0
  • 其中abs()fabs() 區(qū)別
    • abs()是一個內(nèi)置函數(shù)胚膊,而fabs()math模塊中定義的。
    • fabs()函數(shù)只適用于floatinteger類型想鹰,而abs() 也適用于復數(shù)

4. Python隨機數(shù)函數(shù)

  • 隨機數(shù)可以用于數(shù)學紊婉,游戲,安全等領域中辑舷,還經(jīng)常被嵌入到算法中喻犁,用以提高算法效率,并提高程序的安全性何缓。
  • 隨機數(shù)函數(shù)需要導入 random 模塊肢础,然后通過 random 靜態(tài)對象調(diào)用函數(shù)方法
  • Python包含以下常用隨機數(shù)函數(shù):

4-1. choice

從序列(元組, 列表, 字符串)的元素中隨機挑選一個元素

import random

random.choice( seq  )

# 測試用例
# 從序列的元素中隨機挑選一個元素
print(random.choice((1, 3, 5, 2)))
print(random.choice([1, 2, 3, 4]))
# 隨機返回一個字符
print(random.choice("titanjun"))

4-2. randrange

返回指定遞增基數(shù)集合中的一個隨機數(shù),默認基數(shù)缺省值為1, 默認類型為int

randrange(self, start, stop=None, step=1, _int=int)
  • 參數(shù)
    • start -- 指定范圍內(nèi)的開始值碌廓,包含在范圍內(nèi)传轰。
    • stop -- 指定范圍內(nèi)的結束值,不包含在范圍內(nèi)谷婆。
    • step -- 指定遞增基數(shù)
# 輸出 100 <= number < 1000 間的隨機偶數(shù)
print(random.randrange(100, 1000, 2))

4-3. random

隨機生成的一個實數(shù)慨蛙,它在[0,1)范圍內(nèi)

print(random.random())

4-4. seed

該函數(shù)沒有返回值, 改變隨機數(shù)生成器的種子, 可生成同一個隨機數(shù)

random.seed(5)
print(random.random())
random.seed()
print(random.random())

4-5. shuffle

  • 將列表的所有元素隨機排序, 沒有返回值
  • 因元組不支持二次賦值, 所以元組不支持重新排列
# 將序列的所有元素隨機排序
list1 = [1, 2, 3, 4]
random.shuffle(list1)
print(list1)

4-6. uniform

  • 隨機生成一個在[x, y)范圍內(nèi)的實數(shù)
  • 參數(shù):
    • x -- 隨機數(shù)的最小值,包含該值纪挎。
    • y -- 隨機數(shù)的最大值期贫,不包含該值。
print(random.uniform(2, 5))

二. 字符串

上一篇文章Python數(shù)據(jù)類型詳解01介紹了字符串的一些基礎知識, 這里就主要介紹字符創(chuàng)中常用的函數(shù)和語法

1. innot in

判斷字符串是否包含指定字符串

# 判斷字符串中是否包含某字符串
str = 'Hello Python'

if ('llo' in str):
    str += ' True'
else:
    str += ' False'
print(str)

# 判斷字符串是否不包含某字符串
if ('py' not in str):
    str += ' not in'
else:
    str += ' in'
print(str)

// 分別輸出
Hello Python True
Hello Python True not in

2. 字符串格式化

把其他類型的數(shù)據(jù)格式化為字符串形式返回, 字符串和其他類型之間要有%分開

符號 描述
%c 格式化字符及其ASCII碼
%s 格式化字符串
%d 格式化整數(shù)
%u 格式化無符號整型
%o 格式化無符號八進制數(shù)
%x 格式化無符號十六進制數(shù)
%X 格式化無符號十六進制數(shù)(大寫)
%f 格式化浮點數(shù)字廷区,可指定小數(shù)點后的精度
%e 用科學計數(shù)法格式化浮點數(shù)
%E 作用同%e唯灵,用科學計數(shù)法格式化浮點數(shù)
%g %f和%e的簡寫
%G %f 和 %E 的簡寫
%p 用十六進制數(shù)格式化變量的地址

使用方式

print('che is %d' % 19)

// 跟C語言的寫法
prin他("che is %d", 19)

3. str.format()函數(shù)

  • Python2.6 開始,新增了一種格式化字符串的函數(shù) str.format()隙轻,它增強了字符串格式化的功能埠帕。
    基本語法是通過 {}: 來代替以前的 % 垢揩。
  • format 函數(shù)可以接受不限個參數(shù),位置可以不按順序敛瓷。

簡單使用

# format函數(shù)
# 不設置指定位置叁巨,按默認順序
str1 = '{} {}'.format('hello', 'python')
print(str1)
# 設置指定位置
str2 = '{0}{1}'.format('Python', '字符串')
print(str2)
# 設置指定位置
str3 = '{1} {0} {1}'.format('hello', 'che')
print(str3)

# 設置參數(shù)
print("姓名: {name}, 年齡: {age}".format(name='che', age=18))
# 設置字典參數(shù)
dic = {'name': 'jun', 'age': 20}
print("姓名: {name}, 年齡: {age}".format(**dic))
# 設置列表參數(shù)
list0 = ['titan', 20]
print("姓名: {0[0]}, 年齡: {0[1]}".format(list0))

/*輸出結果
hello python
Python字符串
che hello che
姓名: che, 年齡: 18
姓名: jun, 年齡: 20
姓名: titan, 年齡: 20
*/

4. 格式化操作符輔助指令

相關操作符具體的使用后面再說

符號 功能
* 定義寬度或者小數(shù)點精度
- 在負數(shù)前面顯示加號( - )
+ 在正數(shù)前面顯示加號( + )
# 在八進制數(shù)前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于用的是'x'還是'X')
0 顯示的數(shù)字前面填充'0'而不是默認的空格
% %%輸出一個單一的'%'
m.n. m 是顯示的最小總寬度,n 是小數(shù)點后的位數(shù)(如果可用的話)
: 后面帶填充的字符呐籽,只能是一個字符锋勺,不指定則默認是用空格填充
{{}} 轉義大括號, 類似%的輸出

5. 數(shù)字格式化操作符

數(shù)字 格式 輸出 描述
3.1415926 {:.2f} 3.14 保留小數(shù)點后兩位
3.1415926 {:+.2f} +3.14 帶符號保留小數(shù)點后兩位
-1 {:+.2f} -1.00 帶符號保留小數(shù)點后兩位
2.71828 {:.0f} 3 不帶小數(shù)
5 {:0>2d} 05 數(shù)字補零 (填充左邊, 寬度為2)
5 {:x<4d} 5xxx 數(shù)字補x (填充右邊, 寬度為4)
10 {:x<4d} 10xx 數(shù)字補x (填充右邊, 寬度為4)
1000000 {:,} 1,000,000 以逗號分隔的數(shù)字格式
0.25 {:.2%} 25.00% 百分比格式
1000000000 {:.2e} 1.00e+09 指數(shù)記法
13 {:10d} 13 右對齊 (默認, 寬度為10)
13 {:<10d} 13 左對齊 (寬度為10)
13 {:^10d} 13 中間對齊 (寬度為10)

進制轉換(以十進制數(shù)字11為例)

進制 格式 輸出
二進制 '{:b}'.format(11) 1011
十進制 '{:d}'.format(11) 11
八進制 '{:o}'.format(11) 13
十六進制 '{:x}'.format(11) b
小寫十六進制 '{:#x}'.format(11) 0xb
大寫十六進制 '{:#X}'.format(11) 0XB
print('百分比: %d%%' % 23)
print('{}索引值: {{0}}'.format('jun'))
print('{:#x}'.format(9))
print('{:#X}'.format(9))

/*輸出結果: 
百分比: 23%
jun索引值: {0}
0x9
0X9
*/

6.字符串的內(nèi)建函數(shù)

下列方法實現(xiàn)了string模塊的大部分方法,如下表所示列出了目前字符串內(nèi)建支持的方法狡蝶,所有的方法都包含了對Unicode的支持庶橱,有一些甚至是專門用于Unicode

方法 返回結果 描述
'titan'.capitalize() Titan 把字符串的第一個字符大寫
'hello\tpython'.expandtabs() hello python 把字符串 string 中的 tab 符號轉為空格,tab 符號默認的空格數(shù)是 8
str5.find('irl') 11 檢測 str 是否包含在 string 中贪惹,如果 beg 和 end 指定范圍苏章,則檢查是否包含在指定范圍內(nèi),如果是返回開始的索引值奏瞬,否則返回-1
str5.rfind('irl') 11 同find方法, 從右向左查詢
str5.index('gi') 10 跟find()方法一樣枫绅,只不過如果str不在 string中會報一個異常.
str5.rindex('gi') 10 同index方法, 從右向左查詢
'jun0929'.isalnum() True 至少有一個字符并且所有字符都是字母或數(shù)字則返回 True,否則返回 False
'titan'.isalpha() True 至少有一個字符并且所有字符都是字母則返回 True,否則返回 False
u'23e'.isdecimal() False 字符串只包含十進制字符返回True,否則返回False(只針對unicode對象)
"123456".isdigit() True 字符串只包含數(shù)字則返回 True 否則返回 False
'23e'.islower() True 字符串中包含至少一個區(qū)分大小寫的字符硼端,并且所有這些(區(qū)分大小寫的)字符都是小寫并淋,則返回 True,否則返回 False
u"23443434"isnumeric() True 字符串中只包含數(shù)字字符珍昨,則返回 True县耽,否則返回 False(只針對unicode對象)
" ".isspace() True 字符串中只包含空格,則返回 True镣典,否則返回 False.
'JING'.isupper() True 字符串中包含至少一個區(qū)分大小寫的字符酬诀,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True骆撇,否則返回 False
'-'.join( ['a', 's', 'd'] ) a-s-d 用于將序列中的元素以指定的字符連接生成一個新的字符串
'THIS'.lower this 返回將字符串中所有大寫字符轉換為小寫后生成的字符串
"88this".lstrip('8') this 返回截掉字符串左邊的空格或指定字符后生成的新字符串
'this88'.rstrip('8') this 返回截掉字符串右邊的空格或指定字符后生成的新字符串
max('python') z 返回字符串中最大的字母
min('python') h 返回字符串中最小的字母
'https://www.titanjun.top'.partition('://') ('https', '://', 'www.titanjun.top') 返回一個3元的元組,第一個為分隔符左邊的子串父叙,第二個為分隔符本身神郊,第三個為分隔符右邊的子串
'this'.startswith('th', 1, 4) False 檢查字符串在制定范圍內(nèi)是否是以指定子字符串開頭
"0jun0".strip('0') jun 返回移除字符串頭尾指定的字符生成的新字符串
'Python'.swapcase() pYTHON 返回大小寫字母轉換后生成的新字符串
'hello python'.title() Hello Python 返回所有單詞都是以大寫開始
'jun'.upper() JUN 返回小寫字母轉為大寫字母的字符串

除了以上方法外還有下列重要方法

6-1. count()方法

返回子字符串在字符串中出現(xiàn)的次數(shù)

str.count(sub, start= 0,end=len(string))

//使用
print('hello world'.count('l', 1, 8))
print('hello world'.count('l'))

//輸出: 
2
3
  • 參數(shù)
    • sub -- 搜索的子字符串
    • start -- 字符串開始搜索的位置。默認為第一個字符,第一個字符索引值為0趾唱。
    • end -- 字符串中結束搜索的位置涌乳。字符中第一個字符的索引為 0。默認為字符串的最后一個位置甜癞。

6-2. center()方法

返回一個原字符串居中,并使用空格填充至長度 width 的新字符串夕晓。默認填充字符為空格

str.center(width, fillchar)

//使用
>>> str = 'titan'
>>> str.center(8, '-')
'--titan---'
>>> str.center(9)
'   titan   '
>>>
  • 不提供 fillchar 參數(shù)則默認為空格
  • width 參數(shù)小于等于原字符串的長度時,原樣返回
  • 無法使左右字符數(shù)相等時候悠咱,左側字符會比右側少 1

6-3. encode()方法

以 encoding 指定的編碼格式編碼字符串蒸辆。errors參數(shù)可以指定不同的錯誤處理方案

str.encode(encoding='UTF-8',errors='strict')

//示例
'titan'.encode('UTF-8','strict')

//輸出: b'titan'
  • encoding -- 要使用的編碼征炼,如"UTF-8"。
  • errors -- 設置不同錯誤的處理方案躬贡。默認為 strict,意為編碼錯誤引起一個UnicodeError谆奥。 其他可能得值有 ignore, replace, xmlcharrefreplace, backslashreplace 以及通過 codecs.register_error() 注冊的任何值。

6-4. endswith()方法

用于判斷字符串是否以指定后綴結尾拂玻,如果以指定后綴結尾返回True酸些,否則返回False

str.endswith(suffix[, start[, end]])

//使用示例
str5 = 'her is my girl friend haha!!'
print(str5.endswith('!!'))
print(str5.endswith('ha', 0, len(str5) - 2))

//輸出結果: 都是True
  • suffix -- 該參數(shù)可以是一個字符串或者是一個元素
  • start -- 字符串中的開始位置, 可不傳
  • end -- 字符中結束位置, 可不傳

6-5. ljust() 和 rjust()方法

  • ljust(): 返回一個原字符串左對齊,并使用空格填充至指定長度的新字符串。如果指定的長度小于原字符串的長度則返回原字符串
  • rjust(): 返回一個原字符串右對齊
  • 參數(shù)
    • width -- 指定字符串長度檐蚜。
    • fillchar -- 填充字符魄懂,默認為空格
str.ljust(width[, fillchar])
str.rjust(width[, fillchar])

//測試用例
str = "this is string example....wow!!!";
print str.ljust(50, '0');
print str.rjust(50, '0');

//輸出:
this is string example....wow!!!000000000000000000
000000000000000000this is string example....wow!!!

6-6. replace()方法

返回字符串中的 old(舊字符串) 替換成 new(新字符串)后生成的新字符串,如果指定第三個參數(shù)max闯第,則替換不超過 max 次

str.replace(old, new[, max])

//測試
str = 'Python is a good language!'
print(str7.replace('o', 'i', 2))

//輸出: 
Pythin is a giod language!

6-7. split()方法

通過指定分隔符對字符串進行切片市栗,如果參數(shù) num 有指定值,則僅分隔 num 個子字符串

str.split(str="", num=string.count(str))

//測試
str7 = 'Python is a good language!'
print(str7.split(' '))
print(str7.split(' ', 3))

//輸出:
['Python', 'is', 'a', 'good', 'language!']
['Python', 'is', 'a', 'good language!']

6-8. splitlines()方法

按照行('\r', '\r\n', \n')分隔乡括,返回一個包含各行作為元素的列表肃廓,如果參數(shù) keepends 為 False,不包含換行符诲泌,如果為 True盲赊,則保留換行符

str.splitlines([keepends])

//測試
str8 = 'ab c\n\nde fg\rkl\r\n'
print(str8.splitlines())

str9 = 'ab c\n\nde fg\rkl\r\n'
print(str9.splitlines(True))

//輸出:
['ab c', '', 'de fg', 'kl']
['ab c\n', '\n', 'de fg\r', 'kl\r\n']
  • 對于Python語言, 我也正在努力學習中, 文中如有不足之處, 還望多多指教
  • 測試代碼詳見 GitHub地址
  • 后期會持續(xù)更新相關文章, 未完待續(xù)...
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敷扫,隨后出現(xiàn)的幾起案子哀蘑,更是在濱河造成了極大的恐慌,老刑警劉巖葵第,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绘迁,死亡現(xiàn)場離奇詭異,居然都是意外死亡卒密,警方通過查閱死者的電腦和手機缀台,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哮奇,“玉大人膛腐,你說我怎么就攤上這事《Ψ” “怎么了哲身?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長贸伐。 經(jīng)常有香客問我勘天,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任脯丝,我火速辦了婚禮商膊,結果婚禮上,老公的妹妹穿的比我還像新娘巾钉。我一直安慰自己翘狱,他們只是感情好,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布砰苍。 她就那樣靜靜地躺著潦匈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪赚导。 梳的紋絲不亂的頭發(fā)上茬缩,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機與錄音吼旧,去河邊找鬼凰锡。 笑死,一個胖子當著我的面吹牛圈暗,可吹牛的內(nèi)容都是我干的掂为。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼员串,長吁一口氣:“原來是場噩夢啊……” “哼勇哗!你這毒婦竟也來了?” 一聲冷哼從身側響起寸齐,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤欲诺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渺鹦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扰法,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年毅厚,在試婚紗的時候發(fā)現(xiàn)自己被綠了塞颁。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡吸耿,死狀恐怖殴边,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情珍语,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布竖幔,位于F島的核電站板乙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜募逞,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一蛋铆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧放接,春花似錦刺啦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苟蹈,卻和暖如春糊渊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背慧脱。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工渺绒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人菱鸥。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓宗兼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氮采。 傳聞我的和親對象是個殘疾皇子殷绍,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 〇、前言 本文共108張圖扳抽,流量黨請慎重篡帕! 歷時1個半月,我把自己學習Python基礎知識的框架詳細梳理了一遍贸呢。 ...
    Raxxie閱讀 18,928評論 17 410
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,216評論 0 4
  • Python 面向對象Python從設計之初就已經(jīng)是一門面向對象的語言镰烧,正因為如此,在Python中創(chuàng)建一個類和對...
    順毛閱讀 4,211評論 4 16
  • 《小窗幽記》云:“余嘗凈一室楞陷,置一幾怔鳖,陳幾種快意書,放一本舊法帖固蛾;古鼎焚香结执,素麈揮塵,意思小倦艾凯,暫休竹榻献幔。餉時而起...
    馨香子閱讀 692評論 0 0