Я работаю с «for» в Python, и мне нужно удалить некоторые списки T, если выполняются некоторые условия.
T=[[0, 2, 4, 6], [0, 2, 4, 8], [0, 2, 5, 8], [0, 2, 5, 11], [0, 2, 6, 11], [0, 3, 5, 8], [0, 3, 5, 11], [0, 3, 6, 10], [0, 3, 6, 11], [0, 3, 8, 10], [0, 4, 6, 10], [0, 4, 8, 10], [1, 3, 5, 7], [1, 3, 5, 11], [1, 3, 6, 10], [1, 3, 6, 11], [1, 3, 7, 10], [1, 4, 6, 9], [1, 4, 6, 10], [1, 4, 7, 9], [1, 4, 7, 10], [1, 5, 7, 9], [1, 5, 9, 11], [1, 6, 9, 11], [2, 4, 6, 9], [2, 4, 7, 8], [2, 4, 7, 9], [2, 5, 7, 8], [2, 5, 7, 9], [2, 5, 9, 11], [2, 6, 9, 11], [3, 5, 7, 8], [3, 7, 8, 10], [4, 7, 8, 10]]
Пример: удалите все списки, где появляется номер 1, затем
T=[[0, 2, 4, 6], [0, 2, 4, 8], [0, 2, 5, 8], [0, 2, 5, 11], [0, 2, 6, 11], [0, 3, 5, 8], [0, 3, 5, 11], [0, 3, 6, 10], [0, 3, 6, 11], [0, 3, 8, 10], [0, 4, 6, 10], [0, 4, 8, 10], delete([1, 3, 5, 7]), delete([1, 3, 5, 11]), delete([1, 3, 6, 10]), delete([1, 3, 6, 11]), delete([1, 3, 7, 10]), delete[1, 4, 6, 9], delete[1, 4, 6, 10], delete[1, 4, 7, 9], delete[1, 4, 7, 10], delete[1, 5, 7, 9], delete[1, 5, 9, 11], delete[1, 6, 9, 11], [2, 4, 6, 9], [2, 4, 7, 8], [2, 4, 7, 9], [2, 5, 7, 8], [2, 5, 7, 9], [2, 5, 9, 11], [2, 6, 9, 11], [3, 5, 7, 8], [3, 7, 8, 10], [4, 7, 8, 10]]
Есть ли алгоритм или команда в Python, чтобы сделать это ??
Всего 1 ответ
Вы можете сделать это с помощью списка comprehesnion: [lst for lst in T if 1 not in lst]
или цикл for:
final = []
for lst in T:
if 1 not in lst:
final.append(lst)
Если вы работаете над изучением Python, понимание списка - это однострочный цикл for для создания списков.
Понимание списка также обычно быстрее, чем для циклов:
def for_loop(T):
final = []
for lst in T:
if 1 not in lst:
final.append(lst)
return final
def list_comp(T):
return [lst for lst in T if 1 not in lst]
%timeit for_loop(T)
3.02 µs ± 61.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit list_comp(T)
2.16 µs ± 9.37 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)