字符串类型的数字比较大小_Python核心知识系列:数字与字符串类型
?學習任何一種編程語言時首先要對它的數據類型有所了解,從本篇開始會對 Python 中的常見數據類型的基本概念和操作進行介紹。
Python中有6種標準的數據類型:數字(Number)、字符串(String)、列表(List)、元組(Tuple)、集合(Set)、字典(Dictionary)。
上述6種數據類型可分為兩類:
- 不可變數據類型:數字、字符串、元組。
- 可變數據類型:列表、集合、字典。
什么是不可變數據類型和可變數據類型,在下面具體的示例中再介紹,會有更清晰的認識。
本文介紹兩個最基本的數據類型:數字和字符串。
數字
1 基本概念
Python 的數字類型中包括:整型(int)、浮點型(float)、布爾型(bool)、復數(complex)。其中,布爾型:表示真(True)、假(False)。0和空都表示False,如 ' '、[ ]、{ }、None。非空表示True。
2 常用操作
數值運算:加、減、乘、除、整除、求余(+、-、 *、 /、 //、 %)
10、2、8、16進制表示與轉換:
二進制:用0b表示,如0b10表示10進制的2。
八進制:用0o表示,如0o10表示10進制的8。
十六進制:用0x表示,如0x10表示10進制的16。
bin( ):轉換為二進制。
int( ):轉換為十進制。
hex( ):轉換為十六進制。
oct( ):轉換為八進制。
內建函數(BIF):
abs():取絕對值
ceil() / floor():向上 / 向下取整
round():四舍五入
min() / max():最小值/最大值
下面給出了數字類型的知識點導圖:
最后,我們再看一下,為什么說數字是不可變類型。每種數據類型對應的變量自創建時就會被分配一個內存地址,當該數據類型的對應變量的值發生了改變,那么它對應的內存地址也會發生改變,就稱不可變數據類型。
與不可變類型相對的,當數據類型的對應變量的值發生了改變,它對應的內存地址不發生改變,則稱為可變數據類型。
例如:給變量 num 賦值,然后改變 num 的值,發現前后兩次輸出的變量值都為整型,內存地址發生改變。
id():獲取對象的內存地址
type():查看對象的類型
num = 2 print(id(num), type(num)) num = 3 print(id(num), type(num)) # 輸出 140720244078400 <class 'int'> 140720244078432 <class 'int'>字符串
1 基本概念
字符串是一個序列,可以使用單引號('')、雙引號("")或三引號(''' ''',""" """)創建。此外,三引號可定義多行字符串。
字符串中可包含轉義字符,如換行(n )、單引號(' )。
非轉義的原始字符串:字符串前加r,例如:print(r'hellonworld'),換行符 n 也會被輸出,而不會產生換行。
unicode 字符串:在字符串前加u,對字符串進行 unicode 編碼。在 Python3 中,字符串默認是 unicode 編碼,中文字符串前無需加u,而對于 Python2,默認編碼是ascii,在中文前需要加u。
2 常用操作
常用操作主要有以下幾點:
- 字符串拼接/合并
- 字符串復制
- 字符串索引/切片
- 字符串的替換
- 字符串的匹配查找
- 去除字符串兩側指定字符
- 字符串按指定字符分隔
- 計算字符串的長度
- 統計指定字符串出現的次數
- 判斷是否包含指定字符串
- 字符串轉換大小寫
- 格式化字符串
下面通過具體示例依次介紹各種操作。
字符串拼接/合并
使用 “+”合并字符串
s = "hello" + " " + "world!" print(s) # 輸出 hello world!使用 join() 方法:str.join(seq), str為連接符,seq為字符串 或 字符串為元素構成的序列。
s1 = 'python' s2 = ['I', 'love', 'python'] print('_'.join(s1)) print('_'.join(s2)) # 輸出 p_y_t_h_o_n I_love_python字符串復制
s = 'python' print(s*3) # 輸出 pythonpythonpython字符串索引/切片
通過下標索引,默認從0開始。
s = 'python' result = s[1] print(result) # 輸出 y切片 [start:stop:step] start:開始索引,stop:結束索引,step: 步長,默認值為1。
s = 'python' r1 = s[1:] # 從開始索引截取到字符串的最后 r2 = s[:3] # 從開頭截取到結束索引之前 r3 = s[1:3] # 從開始索引截取到結束索引之前 r4 = s[:] # 截取所有字符串 r5 = s[::-1] # 字符串反轉 print('r1=%s, r2=%s, r3=%s, r4=%s, r5=%s'% (r1, r2, r3, r4, r5)) # 格式化輸出 # 輸出 r1=ython, r2=pyt, r3=yt, r4=python, r5=nohtyp字符串的替換
""" 功能:將字符串str中的子字符串old用新子字符串new替換。 語法:str.replace(old, new[, max]) 參數:str為原始字符串,old為將被替換的子字符串,new為新字符串,max表示最多替換的次數,可選。 返回:返回替換后的新字符串。 """ s1 = 'I love python!' r1 = s1.replace('python', 'java') s2 = 'abcabcabcabc' r2 = s2.replace('ab', 'AB', 3) print(r1) print(r2) # 輸出 I love java! ABcABcABcabc字符串的匹配查找
""" 功能:檢測字符串中是否包含子字符串 語法:str.find(substr, beg=0, end=len(string)) 參數:substr為待查找的字符串,beg為開始索引,默認為0,end為結束索引,默認為字符串的長度。 返回:如果包含則返回子字符串開始的索引值,否則返回-1。 """ s = 'Always on the road.' r1 = s.find('road', 7, len(s)) r2 = s.find('Road') print(r1, r2) # 輸出 14 -1與 find() 類似,index() 也可以檢測字符串中是否包含子字符串。不同的是,當查詢不到待匹配的字符串時,會拋出異常。
""" 功能:檢測字符串中是否包含子字符串 語法:str.index(substr, beg=0, end=len(string)) 參數:substr為待查找的字符串,beg為開始索引,默認為0,end為結束索引,默認為字符串的長度。 返回:如果包含子字符串返回開始的索引值,否則拋出異常。 """ s = 'Always on the road.' r1 = s.index('road', 7, len(s)) print(r1) r2 = s.index('Road') # 輸出 14 ValueError: substring not found去除字符串兩側指定字符
""" 功能:用于移除字符串頭尾指定的字符 語法:str.strip([char]) 參數:chars為待移除的字符序列 返回:移除字符串頭尾指定的字符生成的新字符串。 """ s1 = ' Always on the road.tn' r1 = s1.strip() print(r1) s2 = 'abcdcdab' r2 = s2.strip('ab') print(r2) # 輸出 'Always on the road.' 'cdcd'與 strip() 類似的還有 lstrip()、rstrip() 兩個函數,lstrip() 用于去掉左側的指定字符,rstrip() 用于去掉右側的指定字符。
字符串按指定字符分隔
""" 功能:通過指定分隔符對字符串進行切片。 語法:str.split(substr="", num=str.count(substr)) 參數:substr為分隔符,默認為所有的空字符,包括空格、換行(n)、制表符(t)等,num為分隔次數,默認為-1,即分隔所有。 返回:返回分割后的字符串列表。 """ s1 = ' Always on the road.tn' r1 = s1.split() print(r1) s2='abcdabcdabcd' r2 = s2.split('c', 2) print(r2) # 輸出 ['Always', 'on', 'the', 'road.'] ['ab', 'dab', 'dabcd']計算字符串的長度
s = 'Always on the road.' r = len(s) print(r) # 輸出 19統計指定字符串出現的次數
""" 功能:用于統計字符串里某個字符出現的次數。 語法:str.count(substr, start=0,end=len(str)) 參數:substr為待匹配的子字符串,start和end分別為字符串開始、結束搜索的位置。 返回:返回子字符串在字符串中出現的次數。 """ s = 'Always on the road.' r = s.count('a') print(r) # 輸出 2判斷是否包含指定字符串
s = 'Always on the road.' print('road' in s) print('road' not in s) # 輸出 True False字符串轉換大小寫
將每個單詞首字母變為大寫: title()
s = 'I love python!' r = s.title() print(r) # 輸出 I Love Python!字符串字母全部轉為小寫/大寫: lower()/upper()
s = 'I love python!' r1 = s.lower() r2 = s.upper() print(r1) print(r2) # 輸出 i love python! I LOVE PYTHON!字符串首字母大寫: capitalize()
s = 'i love python!' r = s.capitalize() print(r) # 輸出 I love python!大小寫互換: swapcase()
s = 'abcABC' r = s.swapcase() print(r) # 輸出 ABCabc格式化字符串
%-格式化
""" 格式化符號: %s:格式化字符串 %d:格式化整數 %f:格式化浮點數,可指定小數點后的精度 """ s = ("lin", '1001') print("姓名:%s, 工號:%s"%s) # 輸出 姓名:lin, 工號:1001str.format()-格式化
# 按默認位置填充 print("{} {}".format("hello", "world") ) # 輸出 hello world # 按位置索引填充 print("{1} {0}".format("world", "hello")) # 輸出 hello world # 通過參數填充 print("姓名:{name}, 學號:{ID}".format(name="張三", ID="1002")) # 輸出 姓名:張三, 學號:1002 # 通過字典設置參數 data = {"name": "張三", "ID": "1002"} print("姓名:{name}, 學號:{ID}".format(**data)) # 輸出 姓名:張三, 學號:1002f-string 格式化
""" 是Python3.6新引入的一種字符串格式化方法 在形式上是以 f 或 F 修飾符引領的字符串(f'xxx' 或 F'xxx'),以大括號 {} 標明被替換的字段。 在本質上并不是字符串常量,而是一個在運行時運算求值的表達式。 """ # 解析變量 name = "張三" ID = "1002" print(f"姓名: {name}, 學號: {ID}") # 輸出 姓名: 張三, 學號: 1002 # 解析字典 data = {"name": "張三", "ID": "1002"} print(f"姓名: {data['name']}, 學號: {data['ID']}") # 輸出 姓名: 張三, 學號: 1002 # 表達式 s1 = 'hello' s2 = 'world' print(f'{s1+s2}') # 輸出 helloworld最后,附上字符串相關知識的思維導圖:
—END—
總結
以上是生活随笔為你收集整理的字符串类型的数字比较大小_Python核心知识系列:数字与字符串类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos ezhttp mysql_
- 下一篇: yum 安装apache php mys