Python-数据结构(一)
一、數字
整數
Python可以處理任意大小的整數,當然包括負整數,在程序中的表示方法和數學上的寫法一模一樣,例如:1,100,-8080,0,等等。
計算機由于使用二進制,所以,有時候用十六進制表示整數比較方便,十六進制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等。
浮點數
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是完全相等的。浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對于很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等等。
整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四舍五入的誤差。
常用方法:
- int 將字符串轉化為數字
bit_length 當前數字的二進制至少用幾位表示
#!/usr/bin/env python# -*- coding:utf-8 -*-age = 10r = age.bit_length()print(r)#輸出4二、字符串
1. 常用方法
- capitalize 把字符串的第一個字符大寫
mystr.capitalize() - casefold lower 轉換 mystr 中所有大寫字符為小寫 casefold可以識別特殊字符
mystr.lower() - upper 轉換 mystr 中的小寫字母為大寫
mystr.upper() - swapcase 大小寫切換
mystr.swapcase()
- center 返回一個原字符串居中,并使用fillchar填充至長度 width 的新字符串
mystr.center(width, fillchar=” ”) - count 返回str在start和end之間 在 mystr里面出現的次數
mystr.count(str, start=0, end=len(mystr)) - endswith 檢查字符串是否以obj結束,如果是返回True,否則返回 False.
mystr.endswith(obj) - startswith 檢查字符串是否是以 obj 開頭, 是則返回 True,否則返回 False
mystr.startswith(obj) - find 檢測str是否包含在 mystr中,如果包含返回開始的索引值,否則返回-1
mystr.find(str, start=0, end=len(mystr)) - index 跟find()方法一樣,只不過如果str不在 mystr中會報一個異常
mystr.index(str, start=0, end=len(mystr))
format 字符串格式化
#!/usr/bin/env python# -*- coding:utf-8 -*-test = 'my name is {name},age is {age}'print(test)mstr = test.format(name='Tom', age=15)print(mstr)#輸出my name is {name},age is {age}my name is Tom,age is 15 # format的三種玩法res1 = '{} {} {}'.format('egon', 18, 'male')res2 = '{1} {0} {1}'.format('egon', 18, 'male')res3 = '{name} {age} {sex}'.format(sex='male', name='egon', age=18)print(res1)print(res2)print(res3)#輸出egon 18 male18 egon 18egon 18 maleformat_map 類似于format,但傳入的參數是一個字典
#!/usr/bin/env python# -*- coding:utf-8 -*-test = 'my name is {name},age is {age}'print(test)mstr = test.format_map({"name":"Tom", "age":"15"})print(mstr)#輸出my name is {name},age is {age}my name is Tom,age is 15replace 把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次mystr.replace(str1, str2, mystr.count(str1)) name = 'alex say :i have one tesla,my name is alex'print(name.replace('alex', 'SB', 1))#輸出SB say :i have one tesla,my name is alexsplit 以 str 為分隔符切片 mystr,如果 maxsplit有指定值,則僅分隔 maxsplit 個子字符串
mystr.split(str=" ", maxsplit)
- rsplit 類似split,但從右邊開始
- title 把字符串的每個單詞首字母大寫
mystr.title() - ljust 返回一個原字符串左對齊,并使用fillchar填充至長度 width 的新字符串
mystr.ljust(width, fillchar=” ”) - rjust 返回一個原字符串右對齊,并使用fillchar填充至長度 width 的新字符串
mystr.rjust(width, fillchar=” ”) - zfill 返回指定長度的字符串,原字符串右對齊,前面填充0
mystr.zfill(width) - lstrip 刪除 mystr 左邊的空白字符 也可以去除指定的字符
mystr.lstrip()
- rstrip 刪除 mystr 右邊的空白字符 也可以去除指定的字符
mystr.rstrip() - strip 刪除mystr字符串兩端的空白字符 也可以去除指定的字符
mystr.strip() - rfind 類似于 find()函數,不過是從右邊開始查找
mystr.rfind(str, start=0,end=len(mystr) ) - rindex 類似于 index(),不過是從右邊開始.
mystr.rindex( str, start=0,end=len(mystr)) - partition 把mystr以str分割成三部分,str前,str和str后
mystr.partition(str)
- rpartition 類似于 partition()函數,不過是從右邊開始.
mystr.rpartition(str) - splitlines 按照行分隔,返回一個包含各行作為元素的列表
mystr.splitlines()
- isupper 判斷字符串否全是大寫字母
mystr.isupper() - islower 判斷字符串否全是小寫字母
mystr.islower() - isalpha 如果 mystr 所有字符都是字母 則返回 True,否則返回 False
mystr.isalpha() - isdigit isdecimal isnumeric 如果 mystr 只包含數字則返回 True 否則返回
False。isdigit可以判斷一些特殊字符例如②。 isnumeric可以判斷中文數字例如二。
mystr.isdigit()
- isalnum 如果 mystr 所有字符都是字母或數字則返回 True,否則返回 False
mystr.isalnum() - isspace 如果 mystr 中只包含空格,則返回 True,否則返回 False
mystr.isspace() - istitle 如果字符串的每個單詞的首字母都是大寫,則返回True,否則返回False
mystr.istitle() - isprintable 判斷字符串是否能夠被打印
mystr.isprintable()
- join 將字符串、元組、列表中的元素以mystr連接生成一個新的字符串
mystr.join(str)
- expandtabs 方法把字符串中的 tab 符號(’\t’)轉為空格,tab 符號(’\t’)默認的空格數是
8。從頭開始數,數到第一個\t正好為8個空格,不足則補空格,如果還有\t,接著從第一個\t數到第二個\t仍然為8個空格,以此類推直到最后一個\t結束。
S.expandtabs([tabsize=8])
translate 替換字符串中指定的字符
test = 'ahjsykliuiyjka'm = str.maketrans('aeiou','12345')v = test.translate(m)print(v)#輸出1hjsykl353yjk1重點:
1、strip,lstrip,rstrip
2、lower,upper
3、startswith,endswith
4、format的三種玩法
5、split,rsplit
6、join
7、replace
8、isdigit
2. 下標切片
字符串中"下標"的使用
字符串實際上就是字符的數組,所以支持下標索引。
如果有字符串:name = ‘abcdef’,在內存中的實際存儲如下:
如果想取出部分字符,那么可以通過下標的方法,(注意python中下標從 0 開始)
name = 'abcdef'print(name[0])print(name[1])print(name[2])運行結果:abc切片
切片是指對操作的對象截取其中一部分的操作。
切片的語法:變量名[起始:結束:步長]
注意:選取的區間屬于左閉右開型,即從"起始"位開始,到"結束"位的前一位結束(包含起始位本身但不包含結束位本身)。結束位可以不寫,那么默認按照步長一直到末尾。
如果取出一部分,則可以在中括號[]中
示例1:name = 'abcdef'print(name[0:3]) # 取下標0~2 的字符運行結果:abc示例2:name = 'abcdef'print(name[2:]) # 取下標為2開始到最后的字符運行結果:cdef示例3:name = 'abcdef'print(name[len(name)-1]) # 取下標為字符長度-1的字符print(name[-1]) # 取下標為倒數第一個的字符運行結果:ff示例4:name = 'abcdef'print(name[1:-1]) # 取第2個到倒數第2個字符切片print(name[0::2]) # 從第一個字符開始每次步長為2取切片運行結果:bcdeace示例5:name = 'abcdef'print(name[-1:-5:-1]) # 逆向取倒數第一個到倒數第4個字符切片print(name[-1::-1]) # 逆向取倒數第一個到末尾的字符切片print(name[::-1]) # 倒序字符的切片運行結果:fedcfedcbafedcba總結
以上是生活随笔為你收集整理的Python-数据结构(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python-流程控制
- 下一篇: Python-数据结构(二)