Python - 基礎數據類型 list 列表


什么是列表

  • 列表是一個有序的序列
  • 列表中所有的元素放在 [ ] 中間,並用逗號分開
  • 一個 列表 可以包含不同類型的元素,但通常使用時各個元素類型相同

 

特征

占用空間小,浪費內存空間少 

 

聲明列表變量

  • 列表元素可以是任意數據類型,也可以混搭
  • 可以數組嵌套數組,俗稱二元數組
lis = [1, 2, 3, 1.11]
lis = ["a", "b", "c"]
lis = [True, False]
lis = [{"a": 123}, {"b": 456}]
lis = [[1], [2]]
lis = [(1), (2)]
lis = [1, 1.2, "2", True, {}, [], ()]

 

列表常見運算操作

運算符 +

# + 運算
a = [1] + [2, 3, ] + [4, 5]
print(a)

b = [1, 2] + ["3", "4"]
print(b)

# 輸出結果 [1, 2, 3, 4, 5] [1, 2, '3', '4']
  •  變量 b 是賦值兩個不同數據類型的列表,雖然不會報錯,但是 pycharm 會有 warning
  • Expected type 'List[int]' (matched generic type 'List[_T]'), got 'List[str]' instead 
  • 本來應該是 List[int],但后面用了 List[str] 代替,不過我也沒 get 到這個 warn 想干嘛哈哈

 

運算符 *

# * 運算
a = [1, 2] * 3
print(a)

# 輸出結果 [1, 2, 1, 2, 1, 2]

 

索引(下標)取值

# 索引
a = [1, 2, True, {"name": "小菠蘿"}, ["how", "hi"]]

print(a[0])
print(a[2])
print(a[-1])
print(a[-2])


# 輸出結果
1
True
['how', 'hi']
{'name': '小菠蘿'}

  

切片取值

  • 和字符串一樣,列表也可以切片
  • 使用語法:列表[start : end : step],獲取列表中在 [start, end) 范圍的子列表
  • 注意范圍 [start, end) 包含 start,不包含 end
  • step 是步長,設為 n,則每隔 n 個元素獲取一次
# 切片
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(a[:])  # 取全部
print(a[0:])  # 取第一個元素到最后一個元素
print(a[::-1])  # 逆序取全部元素
print(a[2:5])  # 取第三個元素到第五個元素


# 輸出結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
[0, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[3, 4, 5]

 

切片賦值

注意:賦值的值也必須是列表,否則會報錯  TypeError: can only assign an iterable 

# 切片賦值
a = ["1", "2", "3"]
print(a)
a[:] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]  # 切片獲取所有元素,並重新賦值
print(a)

a[2:4] = [33, 44]
print(a)

a[2:4] = []  # 相當於去掉第 3、4 個元素
print(a)

a[:] = []  # 將 a 賦值為空列表
print(a)


# 輸出結果
['1', '2', '3']
[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
[1, 2, 33, 44, 5, 6, 7, 8, 9, 0]
[1, 2, 5, 6, 7, 8, 9, 0]
[]

 

關鍵字 in

  • 通過關鍵字 in 檢查列表中是否包含指定元素,返回 bool 值
  • not in 則是取反
# in、not in
a = [1, 2, True, {"name": "小菠蘿"}, ["how", "hi"]]

print(1 in a)
print(3 in a)
print({"name": "小菠蘿"} in a)
print(False not in a)


# 輸出結果
True
False
True
True

 

列表常見會用上的內置函數

len()

獲取列表長度

# 獲取列表長度 
print(len([1, 2, 3, 4])) 

# 輸出結果 
4

 

max()

獲取列表值最大的元素

最簡單的栗子

# max
a = [1, 2, 3]
print(max(a))

# 輸出解雇
3

  

不同數據類型的栗子

# 其他栗子 
a = [1, 2, True, 3]
print(max(a))

a = ["a", "b", "c"]
print(max(a))

a = [[1, 2], [3, 4], [3, 5]]
print(max(a))


# 輸出結果
3
c
[3, 5]

 

同一個列表里包含不同數據類型的話呢?

a = ["a", "b", 1]
print(max(a))


# 輸出結果
    print(max(a))
TypeError: '>' not supported between instances of 'int' and 'str'
  • 很明顯,直接報錯了,提示 > 運算符不支持在 int 、str 兩種數據類型做運用
  • 所以,使用 max、min 函數時,列表的數據記得是同一個數據類型哦

 

傳多個參數的栗子

上面的栗子都是給 max 函數傳遞了單個參數

print(max(1, 2, 3))
print(max([1, 2], [1, 2, 3]))


# 輸出結果
3
[1, 2, 3]

會返回最大的那一個參數值

 

查看 max() 源碼

def max(*args, key=None): # known special case of max
    """
    max(iterable, *[, default=obj, key=func]) -> value
    max(arg1, arg2, *args, *[, key=func]) -> value
    
    With a single iterable argument, return its biggest item. The
    default keyword-only argument specifies an object to return if
    the provided iterable is empty.
    With two or more arguments, return the largest argument.
    """
    pass

 

兩種傳值方式

 max(iterable, *[, default=obj, key=func]) 

倘若只傳一個列表,那么可以指定 default 參數值,當傳的列表為空的時候,返回 default 值

 

 max(arg1, arg2, *args, *[, key=func]) 

可以傳多個參數,返回最大的參數值

 

min()

  • 獲取列表值最小的元素
  • 跟 max() 就是反過來了,不再舉栗子咯

 

list 常見方法

https://www.cnblogs.com/poloyy/p/15058981.html

 


免責聲明!

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



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