[英]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.