網站首頁 編程語言 正文
列表是什么
列表是元素的集合,存儲在一個變量中。
列表中存儲的元素類型沒有限制,根據需要動態分配和回收內存
列表中的每個元素都會分配一個數字用來表示它的位置(索引),第一個索引是 0,第二個索引是 1,依此類推。
列表的數據項不需要具有相同的類型
列表可以存儲重復數據
列表的CRUD
創建列表
創建一個列表,只要把逗號分隔的不同的數據項使用方括號括起來即可。如下所示:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["a", "b", "c", "d"]
與字符串的索引一樣,列表索引從 0 開始。列表可以進行截取、組合等。
列表中元素的類型的多樣性
a_list=['lemon', 100, ['a', 'b', 'c', 'd'], True]#同一個list的類型可以是字符串,整型,布爾型(true和false),以及嵌套的lis
訪問列表中的值
使用下標索引來訪問列表中的值,同樣你也可以使用方括號的形式截取字符,如下所示:
list1 = ['physics', 'chemistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7]
print("list1[0]: ", list1[0]) # list1[0]: physics
# 嵌套列表
list1 = ['physics', 'chemistry', 1997, 2000,[1,2,3,4,5]]
print("list1[0]: ", list1[4][0]) # list1[0]: 1
print(a[1:3]) #按下標0開始,不包括最右邊的3
print(a[1:]) #1以及之后的全部
print(a[:3]) #3之前的但不包括3
print(a[:]) #所有
print(a[::2])#[start:end:step]start和end為空的時候,默認是全選,step為空時默認是1,這個表示的是從索引為0開始,以步長為2來選擇元素
print(a[1:3:2])#以索引為1開始,索引3結束,步長為2來選擇元素
print(a[::-1])#當step為-1時,將列表進行了逆序排序
print(a[::-2])#將列表進行了逆序排序,步長為2來選擇元素
更新列表
修改列表中的元素需要使用索引表示將指定索引位置的元素進行重新賦值。
list1 = ['physics', 'chemistry', 1997, 2000]
list1[0]= 'maths'
print("list1[0]: ", list1[0]) # list1[0]: maths
刪除元素
移除列表中的元素,可以通過 del 語句,通過索引號指定要刪除的元素對象。
list1 = ['physics', 'chemistry', 1997, 2000]
del list1[0]
print("list1[0]: ", list1[0]) # list1[0]: chemistry
拼接列表
print('列表相加:', [1, 2, 3] + [4, 5, 6])# 列表相加: [1, 2, 3, 4, 5, 6]
列表相乘
print('列表相乘:', ['a', 'b']*3) # 列表相乘: ['a', 'b', 'a', 'b', 'a', 'b']
判斷
print('判斷列表元素是否存在于列表中:', 'a' in ['a', 'b']) # True
print('判斷列表元素是否存在于列表中:', 'a' not in['a', 'b']) # Falue
遍歷列表
python 迭代列表中元素,主要有三種方式,具體如下:
第一種方法(直接)
list1 = ['physics', 'chemistry', 1997, 2000]
for item in list1:
print(item)
或者
names = ['james', 'michael', 'emma', 'emily']
index = 0 #通過while循環來列出所有元素
while index < len(names):
print(names[index])
index += 1
第二種方法range
借助 range 和 len 內置函數,通過元素索引遍歷列表元素;
list1 = ['physics', 'chemistry', 1997, 2000]
for i in range(len(list1)):
print(i, list1[i])
第三種方法enumerate
通過內置枚舉函數 enumerate 直接獲取遍歷的索引和元素;
list1 = ['physics', 'chemistry', 1997, 2000]
for i, item in enumerate(list1):
print(i, item)
列表推導式
列表生成式即List Comprehensions,是Python內置的非常簡單卻強大的可以用來創建list的生成式,使用列表生成式可以節省很多行代碼
語法結構如下:
# 普通的生成式
[表達式 for 變量 in 舊列表]
# 加條件的生成式
[表達式 for 變量 in 舊列表 if 條件]
# if...else條件的生成式
[表達式 if 條件1 else 條件2 for 變量 in 舊列表]
過濾掉名詞字母長度不足4的名字,示例代碼如下:
names = ["Tom", "Lily", "Jack", "Steven", "Bod"]
# 在不是用列表生成式的過程
news_names = []
for name in names:
if len(name) > 3:
news_names.append(name)
print(news_names) # ['Lily', 'Jack', 'Steven']
# 使用列表生成式
new_names = [name for name in names if len(name) > 3]
print(new_names) # ['Lily', 'Jack', 'Steven']
將1-100的整數可以被3和5整除的數字組成一個新的列表, 示例代碼如下所示:
# 舊方法
number_list = []
for i in range(101):
if i % 3 == 0 and i % 5 == 0:
number_list.append(i)
print(number_list) # [0, 15, 30, 45, 60, 75, 90]
# 列表生成式
new_num_list = [i for i in range(101) if i % 3 == 0 and i % 5 == 0]
print(new_num_list) # [0, 15, 30, 45, 60, 75, 90]
將0到10的奇數和0到5的偶數組成一個不重復的列表,示例代碼如下所示:
# 將0到10的奇數和0到5的偶數組成一個不重復的列表
# 舊方法
news_number_list = []
for x in range(10):
if x % 2 != 0:
for y in range(5):
if y % 2 == 0:
news_number_list.append([x, y])
print(news_number_list)
# [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
# 新方法
news_num_list = [[x, y] for x in range(10) if x % 2 != 0 for y in range(6) if y % 2 == 0]
print(news_num_list)
# [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
將列表中的數字大于8000的加200 小于等于8000的加500,示例代碼如下:
# 將列表中的數字大于8000的加200 小于等于8000的加500
number = [5000, 10000, 4500, 80000, 12000]
# 舊方法
for i in number:
if i > 8000:
i += 200
else:
i += 500
print(number) # [5500, 10200, 5000, 80200, 12200]
# 新方法
new_number = [i + 200 if i > 8000 else i + 500 for i in number]
print(new_number) # [5500, 10200, 5000, 80200, 12200]
列表常用方法
獲取列表長度
len() 方法返回列表元素個數。
print(len([1, 2, 3])) # 3
列表后面添加元素
append() 方法用于在列表末尾添加新的對象。
food=['egg', 'fish', 'cake', 'tomato']
food.append('ice') #在list的末尾添加元素
print(food)
指定位置添加元素
insert() 函數用于將指定對象插入列表。
food=['egg', 'fish', 'cake', 'tomato']
food.insert(1, 'meat') #在1這個位置添加元素
print(food)
刪除元素
pop() 函數用于移除列表中的一個元素(默認最后一個元素),并且返回該元素的值。
food=['egg', 'fish', 'cake', 'tomato']
food.pop() #刪除list末尾的元素
print(food)
food.pop(2) #刪除索引2的元素
print(food)
定義 remove() 方法具有指定值的首個元素,如果有重復,刪除的是第一次出現的元素,如果元素不存在會報錯
list2 = [1, 2, 4, 5, 7, 4]
list2.remove(4)#從列表中找出第一個數值為4的值然后刪除,不管第二個
print('remove:', list2)
返回的是某個元素在列表里面的個數
count()方法返回元素出現次數
fruits = ['apple', 'banana', 'cherry']
number = fruits.count("cherry")
print(number)
合并列表
定義 extend()方法將列表元素(或任何可迭代的元素)添加到當前列表的末尾
list1 = [1, 3, 3, 4, 5]
list2 = [6, 5, 8, 9]
list1.extend(list2) #在列表1后面添加列表2
print(list1)
返回的是元素在列表中的第一個位置
定義 index()方法返回該元素最小索引值(找不到元素會報錯)
list2 = [1, 2, 4, 5, 7, 4]
print('index:', list2.index(4)) # 從列表中找出第一個數值為4的索引位置,不管第二個
排序
從小到大排序,類型不能混 ,使用的是ASCII值進行排序
list2 = [1, 2, 4, 5, 7, 4]
list2.sort()#對原列表進行排序
print('sort;', list2)
將列表進行翻轉
定義reverse() 方法反轉元素的排序順序
fruits = ['apple', 'banana', 'cherry']
fruits.reverse()
print(fruits)
清除列表
定義 clear()方法清空列表所有元素
list2 = [1, 2, 4, 5, 7, 4]
list2.clear()
print(list2)
淺拷貝列表
定義 copy()方法返回指定列表的副本 ,如果某個元素是引用類型那么復制的就是這個元素的地址
fruits = ['apple', 'banana', 'cherry', 'orange']
c = fruits.copy()
print(c
深拷貝列表
使用用deepcopy()方法,才是真正的復制了一個全新的列表,包含原列表內部的引用類型
import copy
old = [1,[1,2,3],3]
new = copy.deepcopy(old)
注意: 使用深淺拷貝需要導入copy模塊,因為深拷貝要拷貝的元素跟多,所以速度會遠不如淺拷貝,在編程的過程中要注意避免造成多余的系統負擔;
原文鏈接:https://blog.csdn.net/weixin_45203607/article/details/126653159
相關推薦
- 2023-01-12 C#11新特性之file關鍵字的用法教程_C#教程
- 2022-10-30 golang基于errgroup實現并發調用的方法_Golang
- 2022-07-30 使用logging模塊debug方法來調試代碼
- 2023-12-18 BindingException異常產生原因及解決方案
- 2022-08-30 如何解決React?useEffect鉤子帶來的無限循環問題_React
- 2022-09-14 React路由組件傳參的三種方式(params、search、state)_React
- 2022-11-25 Python?Playwright的使用詳解_python
- 2021-12-06 C語言使用rand函數生成隨機數_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支