Python的非數字類型


Python 中數據類型可以分為 數字型 和 ⾮數字型

數字型:整型 ( int )、浮點型( float )、布爾型( bool )、復數型 ( complex )

非數字型:字符串、列表、元組、字典

在 Python 中,所有 ⾮數字型變量 都⽀持以下特點:

  1. 都是⼀個 序列 sequence ,也可以理解為 容器

  2. 取值 []

  3. 遍歷 for in

  4. 計算⻓度、最⼤/最⼩值、⽐較、刪除

  5. 鏈接 + 和 重復 *

  6. 切⽚

切⽚ 使⽤ 索引值 來限定范圍,從⼀個⼤的 字符串 中 切出 ⼩的 字符串 

列表 和 元組 都是 有序 的集合,都能夠 通過索引值 獲取到對應的數據

字典 是⼀個 ⽆序 的集合,是使⽤ 鍵值對 保存數據

 一、列表(相當於java的數組)

列表是有序的集合

列表的定義

  List (列表) 是 Python 中使⽤ 最頻繁 的數據類型,在其他語⾔中通常叫做 數組

  專⻔⽤於存儲 ⼀串 數據,存儲的數據 稱為 元素

  列表⽤ [] 定義,元素 之間使⽤ , 分隔

  列表的 索引 從 0 開始

注意:從列表中取值時,如果 超出索引范圍,程序會報錯

列表常⽤操作

 

1、循環遍歷 

遍歷 就是 從頭到尾 依次 從 列表 中取出 每⼀個元素,並執⾏相同的操作 

Python中實現遍歷的⽅式很多,⽐如while循環、for循環、迭代器等 

# while循環實現列表的遍歷 
i = 0 
name_list = ["zhangsan", "lisi", "wangwu"] 
list_count = len(name_list) 
while i < list_count: 
    name = name_list[i] 
    print(name) 
    i += 1

Python為了提⾼列表的遍歷效率,專⻔提供 for循環 實現遍歷 

Python中for循環的本質是 迭代器 

# for 實現列表的遍歷 
for name in name_list: 
    循環內部針對列表元素進⾏操作 
    print(name)

2、列表嵌套

⼀個列表中的元素⼜是⼀個列表,那么這就是列表的嵌套
schoolNames = [['北京⼤學','清華⼤學'], ['南開⼤學','天津⼤學','天津師范⼤學'], ['⼭東⼤學','中國海洋⼤學']]

示例:⼀個學校,有3個辦公室,現在有8位⽼師等待⼯位的分配,請編寫程序: 1> 完成隨機的分配 2> 獲取辦公室信息 (每個辦公室中的⼈數,及分別是誰) 

import random 
# 定義⼀個列表⽤來保存3個辦公室 
offices = [[],[],[]] 
# 定義⼀個列表⽤來存儲8位⽼師的名字 
names = ['A','B','C','D','E','F','G','H'] 
# 完成隨機分配 
i = 0 
for name in names: 
    index = random.randint(0,2) 
    offices[index].append(name) 
# 獲取辦公室信息 
i = 1 
for tempNames in offices: 
    print('辦公室%d的⼈數為:%d'%(i,len(tempNames))) 
    i+=1 
    for name in tempNames: 
        print("%s"%name,end='') 
    print("\n") 
    print("-"*20)    

二、元組

元組是有序的集合

元組的定義 

  元組⽤ () 定義

  ⽤於存儲 ⼀串 數據,元素 之間使⽤ , 分隔 

  元組的 索引 從 0 開始 

# 定義元組 
info_tuple = ("zhangsan", 18, 1.75) 
# 取出元素的值 
print(info_tuple[0]) # 輸出:zhangsan

元組中 只包含⼀個元素 時,需要 在元素后⾯添加逗號

info_tuple = (50, )

元組常⽤操作

Tuple (元組)與列表類似,不同之處在於元組的 元素不能修改

info_tuple = ("zhangsan", 18, 1.75) 
info_tuple[0] = "lisi" # 程序報錯

 

應⽤場景

1、作為⾃動組包的默認類型

info = 10, 20 
print(type(info)) # 輸出類型為 tuple 
# 交換變量的值 
a = 10 
b = 20 
a, b = b, a # 先⾃動組包,后⾃動解包

 2、格式字符串,格式化字符串后⾯的 () 本質上就是⼀個元組

info = ("zhangsan", 18) 
print("%s 的年齡是 %d" % info)

3、讓列表不可以被修改,以保護數據安全

# 元組和列表之間的轉換 
# 使⽤ `tuple` 函數 把列表轉換成元組 
list1 = [10, 11] 
tuple1 = tuple(list1) 
# 使⽤ `list` 函數 把元組轉換成列表 
# list1 = list(tuple1)

 三、字典(相當於json)

字典是無序的集合

字典的定義

1)、dictionary (字典) 是 除列表以外 Python 之中 最靈活 的數據類型

2)、字典同樣可以⽤來 存儲多個數據,常⽤於存儲 描述⼀個 物體 的相關信息

3)、字典⽤ {} 定義

4)、字典使⽤ 鍵值對 存儲數據,鍵值對之間使⽤ , 分隔

  鍵 key 是索引

  值 value 是數據

  鍵 和 值 之間使⽤ : 分隔

  值 可以取任何數據類型,但 鍵 只能使⽤ 字符串、數字或 元組

  鍵必須是唯⼀的

# 定義字典 
xiaoming = { 
    "name": "⼩明", 
    "age": 18, 
    "gender": True, 
    "height": 1.75
} 
# 取出元素的值 
print(xiaoming["name"]) # 輸出: ⼩明

字典常⽤操作

 

應⽤場景

在開發中,字典的應⽤場景是:

使⽤ 多個鍵值對,存儲 描述⼀個 物體 的相關信息 —— 描述更復雜的數據信息

將 多個字典 放在 ⼀個列表 中,再進⾏遍歷,在循環體內部針對每⼀個字典進⾏相同的處理

card_list = [
  {"name": "張三", "qq": "12345", "phone": "110"},
  {"name": "李四", "qq": "54321", "phone": "10086"}
]

 四、字符串

字符串的定義

1)、字符串 就是 ⼀串字符,是編程語⾔中表示⽂本的數據類型

2)、在 Python 中可以使⽤ ⼀對雙引號 " 或者 ⼀對單引號 ' 定義⼀個字符串v

  雖然可以使⽤ \" 或者 \' 做字符串的轉義,但是在實際開發中:

    如果字符串內部需要使⽤ " ,可以使⽤ ' 定義字符串

    如果字符串內部需要使⽤ ' ,可以使⽤ " 定義字符串

3)、可以使⽤ 索引 獲取⼀個字符串中 指定位置的字符,索引計數從 0 開始

4)、也可以使⽤ for 循環遍歷 字符串中每⼀個字符

⼤多數編程語⾔都是⽤ " 來定義字符串

string = "Hello Python" 
for c in string: 
    print(c)

字符串的常⽤操作

1、判斷

 2、查找和替換

 

 3、拆分和連接

 

 4、⼤⼩寫轉換

 

 5、文本對齊

 6、去除空白字符

提示:列表除了查詢⽅法和pop⽅法都沒有返回值,字符串所有⽅法都有返回值

字符串的切⽚

切⽚ 譯⾃英⽂單詞 slice ,翻譯成另⼀個解釋更好理解: ⼀部分

切⽚ 使⽤ 索引值 來限定范圍,根據 步⻓ 從原序列中 取出⼀部分 元素組成新序列

切⽚ ⽅法適⽤於 字符串、列表、元組

字符串[開始索引:結束索引:步⻓]

注意:

1. 指定的區間屬於 左閉右開 型 [開始索引, 結束索引) 對應 開始索引 <= 范圍 < 結束索引

  從 起始 位開始,到 結束 位的前⼀位 結束(不包含結束位本身)

num_str = "0123456789" 
# 1. 截取從 2 ~ 5 位置 的字符串 
print(num_str[2:6])

2. 從頭開始,開始索引 數字可以省略,冒號不能省略

num_str = "0123456789"
# 3. 截取從 `開始` ~ 5 位置 的字符串 
print(num_str[:6])

3. 到末尾結束,結束索引 數字和冒號都可以省略

num_str = "0123456789"
# 2. 截取從 2 ~ `末尾` 的字符串 
print(num_str[2:])

截取完整的字符串

num_str = "0123456789"
# 4. 截取完整的字符串 
print(num_str[:])

4. 步⻓默認為 1 ,如果元素連續,數字和冒號都可以省略

num_str = "0123456789"
# 5. 從開始位置,每隔⼀個字符截取字符串 
print(num_str[::2])
  # 6. 從索引 1 開始,每隔⼀個取⼀個
  print(num_str[1::2])

索引的順序和倒序

1)、在 Python 中不僅⽀持 順序索引,同時還⽀持 倒序索引

2)、所謂倒序索引就是 從右向左 計算索引,最右邊的索引值是 -1,依次遞減

3)、注意:如果 步⻓為負數,並省略了開始索引,則開始索引表示最后⼀位,並省略了結束索引,則結束索引表示第⼀位

# 倒序切⽚ 
# -1 表示倒數第⼀個字符 
print(num_str[-1]) 
# 7. 截取從 2 ~ `末尾 - 1` 的字符串 
print(num_str[2:-1]) 
# 8. 截取字符串末尾兩個字符 
print(num_str[-2:])
# 9. 字符串的逆序(⾯試題) 
print(num_str[::-1])
print(num_str[::-2])

 結果

 五、set集合

set的特點:無序,沒有索引,set中的數據不會重復,格式:{1,2,3,4}

主要作用:列表或元組數據去重,把列表或元組轉換成set類型可以數據去重。

list去重:

不使用set去重時的代碼:

# 數組去重 如果i與第一次出現的索引相同,則表明是第一次出現,如果不同,表示已經出現過
list1 = [1,2,3,2,1]
i = 0
list2 = []
while i < len(list1):
    element = list1[i]
    index = list1.index(element)
    if index == i:
        list2.append(element)
    i += 1
print(list2)

使用set去重

list1 = [1,2,3,2,1]
list2 = list(set(list1))
print(list2)

set、list、tuple之間可以相互轉換

tuple去重:

tuple1 = (1,2,1)
tuple2 = tuple(set(tuple1))
print(tuple2)

六、Python 內置函數

Python 包含了以下內置函數:

注意:字符串 ⽐較符合以下規則: "0" < "A" < "a"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM