2、Python變量與數據類型

變量

變量在程序中能儲存計算結果或表示值抽象概念,變量可以通過變量名訪問。
變量命名規則:

變量名只能是字母,數字和下劃線的任意組合
變量名不能以數字開頭
變量名大小寫敏感
變量名不能爲關鍵字

聲明變量

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章