2009-10-14 1 views
1

Я не был уверен, был ли хороший способ сделать это. Но я думал, что дам stackoverflow попробовать :)выражение python для этого: max_value = max (firstArray), который не находится во втором массиве

У меня есть список/массив с целыми числами, а второй массив также с целыми числами. Я хочу найти максимальное значение из первого списка, но значение не может быть во втором массиве.

Есть ли какой-нибудь «причудливый» способ в python, чтобы положить это в одно выражение?
MAX_VALUE = макс (firstArray), который не находится в secondArray

ответ

12

Использование наборов для получения значений в firstArray, которые не в secondArray:

max_value = max(set(firstArray) - set(secondArray)) 
+1

набор() должен быть один из моих любимых видов в питона! Перл научил нас думать в словарях, Python думать в наборах. –

+0

неподдерживаемый тип операндов для -: 'list' и 'list' – Johannes

+0

oh Я имел в виду 'int' и 'set' ... not 'list' и 'list' – Johannes

1

Вот один из способов:

max_value = [x for x in sorted(first) if x not in second][0] 

Это менее эффективно, чем сортировка затем с помощью для цикла, чтобы проверить, если элементы находятся во втором массиве, но он отлично подходит для одной линии!

+0

красиво спасибо: D: D – Johannes