【问题标题】:Python list of lists conventionPython 列表约定列表
【发布时间】:2023-04-03 16:17:01
【问题描述】:

我有一个类似下面的列表(y)。现在,我想做的是删除对象[n,m]。如果n 匹配某个值。我因此思考列表列表(m 将在运行时多次更改,而n 是静态的)是否是解决此问题的方法?如果有更清洁的方法,那么我的“for”语句可以做到这一点。这里的性能是最受关注的。

y = [[1,'A'],[2,'B'],[3,'C']]

def f(x):
    for x in y:
       if x[0] == 2:
            y.remove(x)

print(f(2)) # [[1,'A'],[3,'C']]

【问题讨论】:

  • 什么是f(2):?你打算定义一个函数吗?
  • 你的实现不正确,只是让你知道,但我不确定你到底在问什么
  • f(2): 应该是什么?那是无效的语法。
  • 我猜你的意思是def f(x):
  • @calebgoodman 哈哈,我记住了!我本来打算写伪代码,但是嘿……这基本上是 Python :D

标签: python list set tuples


【解决方案1】:

您可以使用dictionary 而不是列表列表,因为您可以快速检查字典中是否有内容。然后,您可以使用del 删除该密钥:

y = {1: 'A', 2: 'B', 3: 'C'}

def f(x):
   if x in y:
       del y[x]

f(2)
print(y)  # {1: 'A', 3: 'C'}

【讨论】:

  • 哦,真干净..!谢谢你!在我的实现中,我的密钥将是 websocket,但这不是我认为的问题
  • @Frallan websocket 对象必须是“可散列的”才能成为字典键。
【解决方案2】:

您可以通过列表理解来做到这一点:

>>> x = 2
>>> y = [[1,'A'],[2,'B'],[3,'C']]
>>> [l for l in y if l[0] != x]
[[1, 'A'], [3, 'C']]

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 2015-02-09
    • 2012-07-14
    • 2022-06-16
    • 1970-01-01
    • 2022-01-24
    • 2021-04-01
    • 1970-01-01
    相关资源
    最近更新 更多