python3的list去掉指定项,以及多层list去掉指定项

本文介绍了Python中两种删除列表元素的方法:pop()和remove(),并提供了一个函数`list去掉指定项`用于根据序号或元素值删除列表项。此外,还展示了如何使用该函数处理多层列表,包括递归删除指定元素。示例代码展示了如何在不同场景下使用这些功能。
摘要由CSDN通过智能技术生成

(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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值