如何在Python中删除复合列表中的内部单元?

如何在Python中删除复合列表中的内部单元?,python,Python,如果我在Python中得到了这样一个复合列表——一个大列表,那么我如何才能优雅地只删除,比如说,元素“c”,而不同时删除整个元素['c','d','g']? 显然,仅仅list.remove并不适用于此,而实现for循环也可以 x = [['a','b'],['c','d','g'],['e','f','h','i','j'].......['zzy','xxx']] 但是计算起来很昂贵,因为这是一个很长的列表 谢谢如果您想更改最小元素的定义,可以使用min查找最小元素,并提供自定义键函数 n

如果我在Python中得到了这样一个复合列表——一个大列表,那么我如何才能优雅地只删除,比如说,元素“c”,而不同时删除整个元素['c','d','g']? 显然,仅仅list.remove并不适用于此,而实现for循环也可以

x = [['a','b'],['c','d','g'],['e','f','h','i','j'].......['zzy','xxx']]
但是计算起来很昂贵,因为这是一个很长的列表


谢谢

如果您想更改最小元素的定义,可以使用min查找最小元素,并提供自定义键函数

n是所有列表中的元素总数的On解决方案可以通过省略最小的元素来重建每个列表:

for i in x:
    for j in i:
        if j == 'c':
           i = i.remove(j)

我能找到的对您的代码的唯一改进是:

x = [['a','b'],['b','b'],['c','c']]

smallest = min(min(l) for l in x)

x = [[e for e in l if e != smallest] for l in x]
print(x)
# [['b'], ['b', 'b'], ['c', 'c']]

^2上的速度很慢,但比^3上的第一个解决方案快得多。

到目前为止您尝试了什么?您的问题留给我们很多解释。您希望此选项仅适用于此小列表吗?为什么“a”比“b”小a'和b'是字符串。到目前为止,您也没有提供任何您尝试过的内容。列表总是二维的还是任意深度的?我道歉。我是Python新手,不太习惯在这里提问。我已经编辑了一点,如果你能看一下,我会很感激的。非常感谢你的回答!但是它实际上是一个很长的列表,所以使用循环可能要花费很多时间。我已经编辑了这个问题clearer@D.Chain我已经将答案更新为不使用remove,因为正如您正确指出的,在每个列表中调用它在计算上很昂贵。在计算时间方面,一个更有效的替代方法是重建列表。
x = [['a','b'],['c','d','g'],['e','f','h','i','j'],['zzy','xxx']]

def remove(compound_list, elem):
    for lst in compound_list:
        for ix, item in enumerate(lst):
            if item == elem:
                del lst[ix]
remove(x, 'c')