(1)list.pop( 下标序号 ) # 序号从0开始,记得逆序删除
(2)list.remove( 元素项 )
from u_工具 import stream,to_self
def list去掉指定项(数据源list, 序号列表, 序号从0开始=True, 元素值列表=None, 不改变原数组=True):
if 不改变原数组:
数据源list = to_self(数据源list)
if 序号列表:
if isinstance(序号列表, str):
序号列表 = int(序号列表)
if isinstance(序号列表, int):
序号列表 = [序号列表]
if not 序号从0开始:
序号列表 = stream(序号列表).map(lambda i: int(i) - 1).collect()
序号列表.sort(key=None, reverse=True)
for i in 序号列表:
数据源list.pop(i)
if 元素值列表:
if not isinstance(元素值列表, list):
元素值列表 = [元素值列表]
for i in 元素值列表:
if i in 数据源list:
数据源list.remove(i)
return 数据源list
a = [1,2,3,4,5,6,7,8,9]
print(a)
b = list去掉指定项(a,[1,4,8,2],False)
print(b)
b = list去掉指定项(a,[],False,[1,4,8,2])
print(b)
b = list去掉指定项(a,[1,4],False,[8,2])
print(b)
u_工具:https://github.com/hl-mio/u_util/tree/main/python3
多层list去掉指定项
from u_工具 import *
def list去掉指定项_多层list(数据源list, 多层序号字符串_list=None, 序号从0开始=True, 元素值列表=None, 不改变原数组=True, 序号分隔符="."):
if 不改变原数组:
数据源list = to_self(数据源list)
if 多层序号字符串_list:
if isinstance(多层序号字符串_list, str):
多层序号字符串_list = [多层序号字符串_list]
for 多层序号字符串 in 多层序号字符串_list:
序号list = 多层序号字符串.split(序号分隔符)
临时list = 数据源list
for i in 序号list[:-1]:
if 序号从0开始:
临时list = 临时list[int(i)]
else:
临时list = 临时list[int(i)-1]
list去掉指定项(临时list,序号list[-1],序号从0开始,元素值列表=None,不改变原数组=False)
if 元素值列表:
if not isinstance(元素值列表, list):
元素值列表 = [元素值列表]
for 元素值 in 元素值列表:
临时list = 数据源list
def 递归删除list中的指定元素(数据源list, 元素值):
list去掉指定项(数据源list, None, 序号从0开始, 元素值列表=[元素值], 不改变原数组=False)
for i in 数据源list:
if isinstance(i, list):
递归删除list中的指定元素(i, 元素值)
递归删除list中的指定元素(临时list,元素值)
return 数据源list
a=[[1,2,3],[4,5,6]]
print(a)
print(f"\n删除{a[0][2]}")
b = list去掉指定项_多层list(a, "0.2")
print(b)
print("\n删除1、2、6")
b = list去掉指定项_多层list(a, 元素值列表=[1,2,6])
print(b)