Соглашение о списках списков Python - PullRequest
0 голосов
/ 11 октября 2019

У меня есть список что-то вроде этого ниже (у). Теперь я хочу удалить объект [n,m]. Если n соответствует некоторому значению. В связи с этим я размышляю над тем, могут ли списки списков (m изменяться несколько раз в течение времени выполнения, в то время как n является статическим) подходить для этого? И если есть более чистый способ, то мое «за» заявление сделать это. Производительность здесь - высшая проблема.

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']]

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Вы можете сделать это с пониманием списка:

>>> x = 2
>>> y = [[1,'A'],[2,'B'],[3,'C']]
>>> [l for l in y if l[0] != x]
[[1, 'A'], [3, 'C']]
0 голосов
/ 11 октября 2019

Вы можете использовать словарь вместо списка списков, потому что вы можете быстро проверить, есть ли что-то в словаре. Затем вы можете использовать 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'}
...