Python--數據類型、循環、運算符、容器的使用

由于最近有自動化測試的需要,對Python的語法不是很熟悉,Python的介紹就忽略了,下面開始Python基本語法的學習

一、第一個Python程序

下載安裝Pycharmhttps://www.jetbrains.com/pycharm/download/#section=windows

創建工程比較簡單,這邊就直接開始擼碼:
python中的main函數使用if __name__ == '__main__':開始

if __name__ == '__main__':
    print("hello python")

運行結果:

二、數據類型

在使用數據類型之前,先來了解下python中的注釋:
單行注釋:#內容
多行注釋:'''內容'''"""內容"""

1. 整型

表示一個整數:

if __name__ == '__main__':
    # 定義整數變量
    i = 10

    print(i)
    # 輸出變量類型
    print(type(i))

運行結果:

2. 浮點型

表示一個小數:

if __name__ == '__main__':
    # 定義小數變量
    f = 8.8

    print(f)
    print(type(f))

運行結果:

3. 布爾類型

Python中布爾類型使用TrueFalse表示,這兩位還可以表示10的整數。

if __name__ == '__main__':
    # 定義布爾類型
    b = True

    print(b)
    print(type(b))
    # 將True和False轉為為整形表示
    print(int(True))
    print(int(False))

運行結果:

4. 字符串類型

4.1 定義方式

字符串是我們使用的最常見的類型,python中字符串類型定義方式有三種:

定義方式 描述
單引號:'內容' 表示單行字符串
雙引號:"內容" 和單引號相同,表示單行字符串
三對單引號:'''內容''' 表示多行字符串
三對雙引號:"""內容""" 表示多行字符串
if __name__ == '__main__':
    info = '一對單引號'
    print(info, type(info))
    print("-------------")

    info = "一對雙引號"
    print(info, type(info))
    print("-------------")

    info = '''三對單引號
    三對單引號
    三對單引號
    '''
    print(info, type(info))
    print("-------------")

    info = '''三對雙引號
    三對雙引號
    三對雙引號
    '''
    print(info, type(info))
    print("-------------")

運行結果:

4.2 獲取字符串長度

兩種方式:

  • 使用內置len函數:
    info = "abc"
    print(len(info))
  • 使用字符串的__len__函數:
    info = "abc"
    print(info.__len__())
4.3 獲取字符串拼接

python中,字符串拼接使用+號,但數字型變量(整型和浮點型)和字符串相加會報錯:

    info = "abc"

    print(info + 1)

運行結果:

可以調用內置函數str,將之轉為字符串類型:

    print(info + str(1))

5. 類型轉換

上面基本類型之間都可以相互轉換,方式如下:

轉換方法 描述
str(var) var轉換為字符串
int(var) var轉換為整形
float(var) var轉換為浮點型

三、循環

除了循環外,我把條件控制也放在這塊了

1. 條件控制

1.1 單分支

用于判斷表達式是否成立,語法:if 表達式:

    if True:
        print("真")
    else:
        print("假")

運行結果:

1.2 多分支

多分支使用elif

    i = 10
    if i > 10:
        print("i大于10")
    elif i < 10:
        print("i小于10")
    else:
        print("i等于10")

運行結果:

1.3 三目運算符

python中的三目運算符是我見過的最奇葩的,語法:成立執行語句 if 條件 else 不成立執行語句

    gender = 0
    print("男") if gender == 1 else print("女")

運行結果:

2. for循環

2.1 for循環基本語法

學習for循環之前,先來了解下rangerange也是python中一個容器類型,表示一個區間,定義語法為:range([開始],結束,[步長])
for循環可以遍歷range中的內容,for循環的語法為:for 變量名 in 容器:

    for i in range(0, 10, 2):
        print(i)

運行結果:

2.2 continue 與break
  • continue可以直接進入循環的下一次
    for i in range(10, 2):
        if i == 4:
            continue
        print(i)

運行結果:

  • break可以直接跳出循環:
    for i in range(10, 2):
        if i == 4:
            break
        print(i)

運行結果:

2.3 else追加執行

python特有的特性,當循環正常執行完成(不使用break跳出循環),使用else可以追加執行一塊代碼:

    for i in range(0, 10, 2):
        if i == 4:
            continue
        print(i)
    else:
        print("循環執行結束啦")

運行結果:

3. while循環

while循環和for循環類似,只是結束條件需要自己指定,語法為:while 條件:

    i = 0
    while i < 10:
        print(i)
        i += 2

執行結果:

除此以外,while循環中也可以使用continuebreakelse

四、運算符

這邊只介紹python中一些特殊的運算符

1. 算術運算符

1.1 取余:%

python中一正一負的取余操作要采用新的公式:余數 = 被除數 - 除數 * 商,其中商向上取整

    print(8 % -3)

執行結果:

1.2 取整://

python使用//進行取整操作,一正一負的情況向下取整:

    print(12 // 5)
    print(12 // -5)

執行結果:

1.3 冪運算:**

python中可以直接使用**來進行冪運算

    print(2 ** 3)

執行結果:

2. 賦值運算符

python中不支持++--操作,需要使用+=1-=1

2.1 解構

python也支持多個變量賦值:

    a, b, c = range(3)
    print(a, b, c)

運行結果:

交換兩個變量的值就可以使用解構了:

    a, b = 10, 20
    a, b = b, a
    print(a, b)

運行結果:

3. 比較運算符

3.1 值相等:==

python中的==表示的是變量的值相等,并不表示內存地址相同
由于編譯器會優化以及常量池,所以使用列表進行測試,列表在后續容器中會介紹:

    a = [10, 20, 30]
    b = [10, 20, 30]
    print(a == b)

運行結果:

3.2 地址相等:is

python中使用is對比兩個變量是否是一個內存地址:

    a = [10, 20, 30]
    b = [10, 20, 30]
    print(a == b)
    print(a is b)

運行結果:

is相對應,is not則表示兩個變量內存地址不相等,返回True

4. 邏輯運算符

符號 描述
and 并且
or 或者
not

五、容器

Java中有很多類型的容器,像ListMap等,他們用于存放指定類型的數據,Python中也有對應的容器

1. 列表

和Java的List對應,python中定義列表使用:[]list()

    m_list = [1, 2]
    print(m_list)

也可以使用list()函數,將range轉換為list:

    m_list = list(range(0, 2))
    print(m_list)
1.1 獲取列表的元素

獲取列表元素使用:變量名[索引]

    m_list = [1, 2]

    print(m_list[0])

運行結果:

python中可以使用負數作為索引,表示倒著取元素:


    m_list = [1, 2]

    print(m_list[-1])

運行結果:

1.2 列表增加元素

添加元素有三種方式:

  • append()方法在列表尾添加一個元素,相當于Java的add()
    m_list = [1, 2]
    m_list.append(3)
    print(m_list)

運行結果:

  • extend()方法在列表尾添加一個列表,相當于Java的addAll()
    m_list = [1, 2]
    m_list.append(3)
    m_list.extend([4, 5])

    print(m_list)

運行結果:

  • insert()方法在列表指定索引后添加一個元素:
    m_list = [1, 2]
    m_list.append(3)
    m_list.extend([4, 5])
    m_list.insert(2, 10)

    print(m_list)

運行結果:

1.3 查找元素的索引

使用index()方法,查找元素的索引,并支持指定索引范圍:

    print(m_list.index(10))
    print(m_list.index(10, 0, 4))

運行結果:

如果查找不到,拋出異常:

    print(m_list.index(8))

運行結果:

1.4 列表元素的修改與刪除

修改列表元素很簡單,只要賦值新的值即可:

    m_list = [1, 2]
    m_list[0] = 3
    print(m_list)

運行結果:

元素刪除可以通過值刪除(remove()方法),也可以通過索引刪除(pop()方法):

    # 值刪除
    m_list.remove(2)
    print(m_list)
    
    # 索引刪除
    m_list.pop(0)
    print(m_list)

運行結果:


列表清空使用del關鍵字或clear()方法,其中del會將內存清空,變量不可使用:

clear()方式:

    m_list.clear()
    print(m_list)

運行結果:

del方式:

    del m_list
    print(m_list)

運行結果:

1.5 元素是否存在于列表中

使用in關鍵字,判斷元素是否在列表中:

    m_list = [1, 2]
    # 判斷3是否在列表中
    print(3 in m_list)

運行結果:

1.6 元素遍歷

元素遍歷使用for循環,語法為for 變量名 in 列表名

    m_list = [1, 2]

    for item in m_list:
        print(item)

運行結果:

1.7 列表操作總結
功能 方法 描述或例子
定義列表 變量名=[] 空列表:m_list=[] ;初始值列表:m_list=[1,2]
list([range([開始],結束,[步長])]) 空列表:m_list=list() ;初始值列表:m_list = list(range(0, 2))
獲取列表的元素 變量名[索引] 索引支持負數,獲取索引為1的元素:m_list[1]
列表增加元素 append(元素) 增加一個元素:m_list.append(3)
extend(列表) 添加一個列表:m_list.extend([4,5])
insert(索引,元素) 指定索引后面追加一個元素:m_list.insert(2,10)
查找元素的索引 index(元素,[開始],[結束]) 如果元素存在,返回元素的索引,反之拋出異常:m_list.index(20)
列表元素的修改 變量名[索引]=新元素 賦值一個新元素:m_list[0]=100
列表元素的刪除 remove(元素) 刪除指定元素:m_list.remove(100)
pop(索引) 刪除指定索引下的元素:m_list.pop(1)
clear() 清空列表元素:m_list.clear()
del 刪除變量內存:del m_list
元素是否存在于列表中 in 判斷元素是否在列表中:2 in m_list
元素遍歷 for 變量名 in 列表名 遍歷列表:for item in m_list
列表生成推導式 [i for i in range([開始],結束,[步長])] 快速生成一個列表:m_list = [i for i in range(0, 10,2)]

2. 字典

字典對應Java中的HashMap,存放的是鍵值對,定義字典使用:{}dict()
{}用法:

    d = {"name": "張三", "age": 18}
    print(d)

運行結果:

dict()用法:

    d = dict(name="張三", age=19)
    print(d)

運行結果:

2.1 字典元素的獲取

字典元素都是通過鍵獲取的,獲取有兩種方式:

[索引]獲取:

    print(d["name"])

get()方法獲取:

    print(d.get("name"))

還可以根據返回是否為None,判斷是否存在鍵值對:

    print(d.get("name1"))

同樣的可以使用in關鍵字,判斷是否存在鍵:

    print("name1" in d)

運行結果:

2.2 字典元素的增刪改

字典增加和修改元素使用[key]直接賦值即可:

    d["gender"] = '女'
    print(d["gender"])

刪除元素可以使用del

    del d["gender"]
    print("gender" not in d)

運行結果:

清空元素可以使用clear()

    d.clear()
    print(list(d.keys()))

運行結果:

2.3 字典所有的key和value獲取

keys()方法用于獲取字典中所有的key,使用list()將它轉換為列表:

    print(list(d.keys()))

values()方法用于獲取字典中所有的value:

    print(list(d.values()))

items()方法用于獲取字典中所有的鍵值對,使用list()將它轉換為元表,元表后續會介紹:

    print(list(d.items()))

運行結果:

2.4 字典元素的遍歷

遍歷還是使用for循環即可,其中由于python的解構特性,for循環變量也支持多個:

    for k, v in d.items():
        print(k, v)

運行結果:

2.5 字典操作總結
功能 方法 描述或例子
定義字典 變量名={} 空字典:d={} ;初始值字典:d = {"name": "張三", "age": 18}
dict() 空字典:d=dict() ;初始值字典:d= dict(name="張三", age=19)
獲取字典的元素 變量名[key] 獲取key為name的元素:d["name"],不存在拋出異常
get(key) 獲取key為name的元素:d.get("name"),不存在返回None
字典增加元素 變量名[key]=value 增加一個元素:d["gender"] = '女'
字典元素的修改 變量名[key]=新value 將key賦值一個新value:d["gender"] = '男'
字典元素的刪除 del 刪除指定鍵值對:del d["gender"]
clear() 清空列表元素:d.clear()
元素是否存在于字典中 in 判斷元素是否在字典中:"name1" in d
元素遍歷 for 變量名 in 字典名 遍歷字典:for k, v in d.items()
字典生成推導式 {k:v for k,v in zip(列表1, 列表2)} 快速生成一個字典:d = {k: v for k, v in zip(keys, values)}

3. 元組

python中元組是不可變的列表,一旦創建,內存就不可修改了,只能讀取,對多線程下操作提升了性能
元組的定義使用:()tuple()

()方式:

    t = (1, 2)
    print(t)

tuple()方式,tuple的入參需要一個容器,其實就是將其他容器轉換為元組:

    t = tuple((1, 2))
    print(t)

運行結果:

元組除了不能增加修改外,其他用法和列表相同

4. 集合

集合對應Java中的HashSet,如果熟悉源碼的就知道,HashSet就是HashMap,只是HashSet存放的value都是null,所以集合的使用和字典差不多,定義集合使用:{}set()

{}方式:

    s = {1, 2}
    print(s)

set()方式,也元素一樣需要一個容器:

    s = set([1, 2])
    print(s)

運行結果:

4.1 判斷元素是否在集合中

使用in來判斷:

    print(3 in s)
4.2 集合元素的增加

兩種方式:add()update()

add()方法一次增加一個元素:

    s.add(3)
    print(s)

運行結果:

update()方法傳入一個容器,一次增加多個元素:

    s.update([4, 5, 6])
    print(s)

運行結果:

4.3 集合元素的刪除

remove()方法,刪除指定的key,如果不存在拋出異常:

    s.remove(3)
    print(s)

discard()方法,刪除指定的key,如果不存在不拋出異常:

    s.discard(3)
    print(s)

pop()方法,隨機刪除一個元素:

    s.pop()
    print(s)

clear()方法,清空集合:

    s.clear()
    print(s)

運行結果:

4.4 集合間比較

集合除了使用==對比兩個集合中元素是否一樣外,還支持以下比較操作:

issubset()方法用于判斷本集合是否是其他集合的子集:

    s1 = {1, 2, 3}
    s2 = {1, 2}
    print(s2.issubset(s1))

與之相對的,issuperset()方法用于判斷本集合是否是其他集合的超集:

    print(s1.issuperset(s2))

運行結果:

isdisjoint()方法用于判斷本集合和另一個集合是否沒有交集:

    s1 = {1, 2, 3}
    s2 = {4, 5}
    print(s1.isdisjoint(s2))

運行結果:

4.5 集合數據操作

集合還支持以下的數學操作:

intersection()方法,求交集:

    s1 = {1, 2, 3, 4}
    s2 = {4, 5}
    print(s1.intersection(s2))

union()方法,求并集:

    print(s1.union(s2))

difference()方法,求差集:

    print(s1.difference(s2))

symmetric_difference()方法,求對稱差集:

    print(s1.symmetric_difference(s2))

運行結果:

4.6 集合操作總結
功能 方法 描述或例子
定義集合 變量名={} 空集合:s={} ;初始值集合:s = {1, 2}
set() 空集合:s = set() ;初始值集合:s = set([1, 2])
集合增加元素 add() 增加一個元素:s.add(3)
update() 增加多個元素:s.update([4, 5, 6])
字典元素的刪除 remove() 刪除指定元素,不存在拋異常:s.remove(3)
discard() 刪除指定元素,不存在不拋異常:s.discard(3)
pop() 刪除隨機元素:s.pop()
clear() 清空集合:s.clear()
元素是否存在于集合中 in 判斷元素是否在集合中:3 in s
元素遍歷 for 變量名 in 集合名 遍歷集合:for k in s1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容