python基礎數據類型一(列表)


列表

列表是python的基礎數據類型之一 ,其他編程語言也有類似的數據類型.

比如JS中的數 組, java中的數組等等. 它是以[ ]括起來, 每個元素用' , '隔開而且可以存放各種數據類型:

列表是python中的基礎數據類型之一,其他語言中也有類似於列表的數據類型,比如js中叫數組,他是以[]括起來,每個元素以逗號隔開,而且他里面可以存放各種數據類型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,]]

列表相比於字符串,不僅可以儲存不同的數據類型,而且可以儲存大量數據,

32位python的限制是 536870912 個元素,

64位python的限制是 1152921504606846975 個元素。而且列表是有序的,有索引值,可切片,方便取值。

lst = [1,2,3,"meet",[1,2,3]]

我們定義了一個列表,我們現在來看看內存中是怎樣存儲的

image-20190624212208882

lst我們就可以想象成一個書包,書包中存放了衣服,電腦,書,錢包,錢包中放的是身份證,公交卡,家門鑰匙

1 列表的索引

列表和字符串一樣也擁有索引:

lst = ['劉德華','周潤發','周傑倫','向華強']
print(lst[0])  # 列表中第一個元素
print(lst[1])  # 列表中第二個元素
print(lst[2])  # 列表中第三個元素

注意:列表是可以進行修改的,這里和字符串不一樣

lst[3] = '王健林'
print(lst)

字符串修改

s = '王思聰'
s[0] = '李'
print(s)
結果:
Traceback (most recent call last):
  File "D:/python_object/path2/test.py", line 1076, in <module>
    s[0] = '李'
TypeError: 'str' object does not support item assignment

2 列表的切片

lst = ["麻花藤", "王劍林", "馬芸", "周鴻醫", "向華強"] 
print(lst[0:3])     # ['麻花藤', '王劍林', '馬芸'] 
print(lst[:3])      # ['麻花藤', '王劍林', '馬芸']
print(lst[1::2])    # ['王劍林', '周鴻醫'] 也有步長 
print(lst[2::-1])   # ['馬芸', '王劍林', '麻花藤'] 也可以倒着取 
print(lst[-1:-3:-2])    # 倒着帶步長

3 列表的增刪改查

注意 list和str是不一樣的. lst可以發生改變. 所以直接就在原來的對象上進行了操作

追加模式

lst = ["麻花藤", "林俊傑", "周潤發", "周芷若"] 
print(lst) 
lst.append("wusir") 
print(lst)

插入模式

lst = ["麻花藤", "張德忠", "孔德福"]
lst.insert(1, "劉德華")    # 在1的位置插入劉德華. 原來的元素向后移動一位
print(lst)

迭代添加

# 迭代添加
lst = ["王志文", "張一山", "苦海無涯"]
lst.extend(["麻花藤", "麻花不疼"])
print(lst)

刪除

pop 通過下標刪除元素(默認刪除最后一個)

lst = ["麻花藤", "王劍林林", "李李嘉誠", "王富貴"] 
print(lst)
lst.pop()

deleted = lst.pop()
print('被刪除的',deleted)
print(lst)

el = lst.pop(2)  # 刪除下標位2的元素
print(el)        # 被刪除的元素
print(lst)

remove 通過元素刪除

lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"]
lst.remove('王劍林')
print(lst)

結果:
['麻花藤', '李嘉誠', '王富貴']

lst.remove('哈哈')   # 刪除不存在的元素
結果:
Traceback (most recent call last):
  File "D:/python_object/path2/test.py", line 1115, in <module>
    lst.remove('哈哈')   # 刪除不存在的元素
ValueError: list.remove(x): x not in list

clear 清空

lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"]
lst.clear()
print(lst)

結果:
[]

修改

索引切片修改

# 修改 
lst = ["太白", "太黑", "五色", "銀王", "⽇天"] 
lst[1] = "太污"   # 把1號元素修改成太污 print(lst) 
lst[1:4:3] = ["麻花藤", "哇靠"]     # 切片修改也OK. 如果步長不是1, 要注意元素的數 
print(lst) 
lst[1:4] = ["我是哪個村的村長王富貴"]  # 如果切片沒有步長或者步長是1. 則不用關心個數 
print(lst)

查詢

列表是一個可迭代對象,所以可以進行for循環

lst = ["麻花藤", "王劍林", "李嘉誠", "王富貴"]

for i in lst:
    print(i)

結果:
麻花藤
王劍林
李嘉誠
王富貴

反轉

lst = [1,2,3,4,5]
lst.reverse()

排序

lst = [1,2,3,4,5]
lst.sort()  # 升序
lst.sort(reverse=True)  # 降序

查找

lst = [1,2,3,4,5]
lst.index(3) # 存在就返回索引,不存在就報錯

統計

lst = [1,23,4,5,6,]
lst.count(23) # 統計23出現的次數

list +

lis = [1,2,3]
lst1 = [4,5,6]
print(id(lis))
print(id(lst1))
print(id(lis + lst1))

list *

lst = [1,2,3]
print(lst * 5)
print(id(lst))
print(id(lst * 5))

列表在進行乘法的時候元素都是共用

列表的嵌套

注意:采用降維操作,一層一層的看就好

lst = [1,'太白','wusir',['麻花疼',['可口可樂'],'王健林']]

# 找到wusir
print(lst[2])

# 找到太白和wusir
print(lst[1:3])

# 找到太白的白字
print(lst[1][1])

# 將wusir拿到,然后首字母大寫 在扔回去

s = lst[2]
s = s.capitalize()
lst[2] = s
print(lst)

# 簡寫
lst[2] = lst[2].capitalize()
print(lst)

# 把太白換成太黑
lst[1] = lst[1].replace('白','黑')

# 把麻花疼換成麻花不疼
lst[3][0] = lst[3][0].replace('疼','不疼')
print(lst)

# 在可口可樂后邊添加一個雪碧
lst[3][1].append('雪碧')
print(lst)

你需要存儲大量的數據,且需要這些數據有序的時候。制定一些特殊的數據群體:按順序,按規則,自定制設計數據


免責聲明!

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



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