Какой самый быстрый способ пропустить наборы с определенной структурой в продукте itertool?Python

Программы на Python
Ответить
Anonymous
 Какой самый быстрый способ пропустить наборы с определенной структурой в продукте itertool?

Сообщение Anonymous »

Мне приходится обрабатывать огромное количество кортежей, состоящих из k целых чисел, каждый из которых находится в диапазоне от 1 до Max_k.
Каждый Max может быть разным.
Мне нужно пропустить кортежи, в которых элемент достиг максимального значения, в этом случае сохраняется только кортеж с «1» в оставшейся позиции.
Например, если максимальное значение второго элемента тройки равно 4, мне нужно сохранить (1,4,1) но пропустить
(1,4,2) , (1,4,3) ... (2,4,1) и т. д.
В Python, как игрушечный пример с жестко закодированными значениями Max (5,4,2) следующий предикат itertools.filterfalse выполняет эту работу:

Код: Выделить всё

def filtering_logic(y):

if y[0]==5:
if y[1] > 1 or y[2] >1:
return True

if y[1]==4:
if y[0] > 1 or y[2] >1:
return True

if y[2]==2:
if y[0] > 1 or y[1] >1:
return True

return False
Я почти уверен, что мне не хватает гораздо более быстрого способа сделать это.
Мой типичный сценарий — это кортежи с 16–20 элементами с максимальными значениями на отметке 50–70.
Какой подход рекомендуется использовать?

Подробнее здесь: https://stackoverflow.com/questions/793 ... -a-itertoo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»