繁体   English   中英

如何从列表中删除列表

[英]How to remove lists from a list

我创建了一个列表,在其中我试图仅消除第一个值大于它的第二个值的列表。

我尝试使用要删除的元素创建第二个列表,但我认为这不是最佳方式。

#y = []

x = [[1, 4], [1, 6], [2, 5], [2, 7], [4, 8], [6, 5], [6, 7], [2, 6], [3, 7], [5, 8], [6, 4], [7, 5]]
for i in range(len(x)):
    if x[i][0] > x[i][1]:
        print(x[i])


#        y.append(x[i])

有没有实现这一目标的最佳方法?

我希望在屏幕上打印时得到以下信息:

[[1, 4], [1, 6], [2, 5], [2, 7], [4, 8], [6, 7], [2, 6], [3, 7], [ 5, 8]]

此致,

这应该有效:

y = [[a,b] for a,b in x if a <= b]

测试:

>>> x = [[1, 4], [1, 6], [2, 5], [2, 7], [4, 8], [6, 5], [6, 7], [2, 6], [3, 7], [5, 8], [6, 4], [7, 5]]
>>> y = [[a,b] for a,b in x if a < b]
>>> y
[[1, 4], [1, 6], [2, 5], [2, 7], [4, 8], [6, 7], [2, 6], [3, 7], [5, 8]]
>>> 

这会修改原始列表:

for i, (a, b) in enumerate(x):
    if a > b:
        del x[i]

创建一个新列表:

[v for v in x if v[0] <= v[1]]

或就地消除:

for i in range(len(x) - 1, -1, -1):  # need to start at the end
    if x[i][0] > x[i][1]:
        x.pop(i)
>>> filtered = list(filter(lambda f: f[0] < f[1], x))
>>> print(filtered)

这将使用内置的filter(function, iterable) function 创建一个具有所需值的新列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM