變量
變量
在程序中能儲存計算結果或表示值抽象概念,變量可以通過變量名訪問。
變量命名規則:
變量名只能是字母,數字和下劃線的任意組合
變量名不能以數字開頭
變量名大小寫敏感
變量名不能爲關鍵字
聲明變量
Python 變量不需要聲明,但變量在使用前必須賦值,賦值後該變量才被創建。Python中變量是沒有類型的,但變量所指向內存中的對象是有類型的。
示例:
name = "Jack"
變量賦值
在 Python 中,等號=
是賦值語句,可以把任意數據類型賦值給變量。變量的值可以被修改,而且同一變量名可以被賦值不同類型的值。
a = 123 # a 是整數
a = 'hello' # a 是字符串
a = b = c = 1 # python允許爲多個變量賦值,可以使多個變量被賦予相同的值
a,b,c = 1,3,"lili" # 也可以給多個變量賦予不同的值
常量
在 Python 中,通常用全部大寫的變量名錶示常量如ONE = 1
,但實際上ONE
還是一個變量,可以被改變值。
數據類型
Python3有6種標準數據類型:
不可變數據:Number、String、Tuple(元組)
可變數據:List(列表)、Dictionary(字典)、Set(集合)
Number
數值類型用於存儲數值,python3支持的數值類型如下:
類型 | 說明 |
---|---|
int | 整型,Python3中整型沒有大小限制,所以可以當做Long類型使用 |
float | 浮點型,由整數部分和小數部分組成 |
complex | 由實數部分和虛數部分構成,可以用a+bj或者complex(a,b)表示,實部a和虛部b都是浮點型 |
bool | 布爾型,取值只有True和False兩種 |
示例:
counter = 100 # 整型變量
miles = 1024.2 # 浮點型變量
comp = 1 + 6j # 複數型變量
flag = True # 布爾型變量
print(counter) # 100
print(miles) # 1024.2
print(comp) # 1+6j
print(flag) # True
數字類型轉換:
Python提供下列方法,實現將其他類型變量轉換爲數字類型:
int(x)
將x轉換爲整型
float(x)
將x轉換爲浮點型
complex(x)
將x轉換爲複數,結果爲x+0j
complex(x)
將x和y轉換爲複數,結果爲x+yj
示例:
# 進行類型轉換,輸出變量的類型和值
num = '5'
# type = <class 'str'>, value = 5
print('type = %s, value = %s' % (str(type(num)), num))
num = int(num)
# type = <class 'int'>, value = 5
print('type = %s, value = %s' % (str(type(num)), num))
num = float(num)
# type = <class 'float'>, value = 5.0
print('type = %s, value = %s' % (str(type(num)), num))
num = complex(num)
# type = <class 'complex'>, value = (5+0j)
print('type = %s, value = %s' % (str(type(num)), num))
num = complex(num, 6)
# type = <class 'complex'>, value = (5+6j)
print('type = %s, value = %s' % (str(type(num)), num))
String(字符串)
Python不支持單字符類型,即單字符在Python也是作爲字符串使用。創建字符串可以通過單引號
、雙引號
、三單引
號和三雙引號
,其中三引號可以定義多行字符串。
定義一個字符串s = 'py'
,該語句在計算機中的執行順序是先在內存中創建一個字符串py
,然後在程序棧寄存器中創建一個變量s
,最後將py
的地址賦予s
。
字符串操作的常用方法:
方法 | 說明 |
---|---|
s[:: -1] | 反轉字符串 |
s[x] | 獲取字符串中索引爲x的字符 |
s[-x] | 從右向左,獲取字符串中索引爲x的字符 |
s[x:] | 截取字符串中索引x之後的字符串 |
replace(oldstr, newstr) | 將字符串中中的oldstr全部替換爲newstr |
find(str) | 返回第一次出現子串的索引,找不到則返回-1 |
find(str, x) | 返回索引x之後第一次出現子串的索引 |
index(str) | ,返回第一次出現子串的索引,找不到則會報錯ValueError: substring not found |
rfind(str) | 從右向左尋找,返回第一次出現子串的索引 |
upper() | 將字符串轉爲大寫 |
lower() | 將字符串轉爲小寫 |
swapcase() | 將字符串中的小寫字母轉爲大寫,大寫字母轉爲小寫 |
capitalize() | 將字符串中的第一個字符大寫,其他字符小寫 |
istitle() | 判斷字符串中所有的單詞是否符合首字母大寫,其它字母小寫 |
islower() | 判斷字符串中所有的字母是否爲小寫 |
strip() | 去除字符串首尾的空格 |
示例:
s = 'Python使我快樂,學習Python'
print(s[:: -1]) # 反轉字符串
print(s[0]) # 輸出字符串中索引爲0的字符
print(s[-1]) # 輸出字符串倒數第一個字符
print(s[3:]) # 輸出索引3及其之後的字符
print(s.replace('Python', 'Java')) # 將字符串中所有的Python替換爲Java
print(s.find('P')) # 返回第一次出現子串的索引
print(s.find('P', 4)) # 設定從索引4開始查找
print(s.find('J')) # 找不到則返回-1
print(s.index('P')) # 返回第一次出現子串的索引
# print(s.index('J')) # 查找不到時會報錯: ValueError: substring not found
print(s.rfind('P')) # 從右向左尋找,返回第一次出現子串的索引
print(s.upper()) # 轉爲大寫
print(s.lower()) # 轉爲小寫
print(s.swapcase()) # 大寫轉爲小寫,小寫轉爲大寫
print('s = ', s)
print(s.capitalize()) # 把字符串的第一個字符大寫,其他字符小寫
print(s.istitle()) # 判斷字符串中所又的單詞是否符合首字母大寫,其他字母小寫
print(s.islower()) # 判斷是否全爲小寫
s = ' p p p p p '
print(s.strip()) # 去除首尾空格
print(s.lstrip()) # 去除左空格
print(s.rstrip()) # 去除末尾空格
字符串格式化
推薦採用format()
方法進行字符串格式化。
print('name: %s,age: %s' % ('Jack', '21'))
print('name: {},age: {}'.format('Jack', '21'))
print('name: {0},age: {1}'.format('Jack', '21'))
print('name: {name},age: {age}'.format(name='Jack', age=21))
字符串拼接與拆分
使用+
進行字符串拼接需要每次都重新計算、開闢、釋放內存,效率低下。因此推薦使用join()
進行字符串拼接。
time = ['2019', '10', '21 15:35']
# 字符串拼接
time = '-'.join(time)
print(time) # 2019-10-21 15:35
#字符串分割
print(time.split('-')) # ['2019', '10', '21 15:35']
字符串編碼轉換
python 字符串默認是Unicode編碼。當進行文件保存到外設或進行網絡傳輸時,應該進行編碼轉換,將字符轉換爲字節,以便提高效率。
str = '學習Python'
# 將字符轉爲字節
print(str.encode()) # b'\xe5\xad\xa6\xe4\xb9\xa0Python'
print(str.encode('gbk')) # b'\xd1\xa7\xcf\xb0Python'
# decode 將字節轉爲字符
print(str.encode().decode('utf8')) # 學習Python
print(str.encode('gbk').decode('gbk')) # 學習Python
List
List是由[]
和元素組成的,可以實現大多數集合類的數據結構。List中的元素的類型可以不同,它支持Number型、String型,也可以嵌套List。List中的元素值是可變的。
week = ['Monday', 'Tuesday', 'Wednesday']
print(week[1]) # Tuesday 通過索引獲取list中的值
print(week.index('Monday')) # 輸出匹配的值在list中的索引
# print(week.index('Friday')) # 當該值在字符串中沒找着時會報錯:ValueError: 'Friday' is not in list
week.append('Thursday') # list中增加元素
print(week)
week.remove('Tuesday') # list中刪除指定元素
print(week)
Tuple(元組)
tuple是由()
和元素組成。tuple中的元素的類型可以不同,但元素值是不可變的。
week = ('Monday', 'Monday', 'Tuesday', 'Wednesday')
print(week[1]) # Tuesday 通過索引獲取tuple中的值
print(week[0:3]) # tuple切片
print(week.index('Monday')) # 輸出匹配的值在tuple中的索引
# print(week.index('3')) # 當該值在字符串中沒找着時會報錯:ValueError: tuple.index(x): x not in tuple
print(week.count('Monday')) # 獲取某個值在tuple中的數量
Set(集合)
set是一個無序不重複元素的序列,使用大括號 {}
或者set()
創建,注意:創建一個空集合必須用 set()
而不是{}
,因爲{}
是用來創建一個空字典。
number_set = {1, 2, 3, 4, 5, 5}
# set是無序不重複的序列,因此重複的5被視爲1個
print(number_set) # {1, 2, 3, 4, 5}
# 添加元素
number_set.add(6)
print(number_set)
# 刪除元素
number_set.remove(5)
print(number_set) # {1, 2, 3, 4, 6}
Dictionary(字典)
字典是一種映射類型,它的元素是鍵值對,字典中的key
必須爲不可變類型,且不能重複。創建空字典使用 {}
。
person_info = {
'name': 'Jack',
'age': 13,
'school': 'NAS',
}
print(person_info) # {'name': 'Jack', 'age': 13, 'school': 'NAS'}
# 輸出key爲'age'對應的值
print(person_info['age']) # 13
# 列出所有的key
print(person_info.keys()) # dict_keys(['name', 'age', 'school'])
# 列出所有的key對應的value
print(person_info.values()) # dict_values(['Jack', 13, 'NAS'])
# 獲取key的數量
print(len(person_info)) # 3