from functools import reduce #python 3
>>> l = [[1,2,3],[4,5,6], [7], [8,9]]
>>> reduce(lambda x,y: x+y,l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Метод extend()
в вашем примере изменяет x
вместо того, чтобы возвращать полезное значение (которое ожидает reduce()
).
Более быстрый способ сделать версию reduce
be
>>> import operator
>>> l = [[1,2,3],[4,5,6], [7], [8,9]]
>>> reduce(operator.concat, l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Используйте плагин формы jQuery . Он поддерживает загрузку файлов HTML5 и может вернуться к скрытому iframe, если браузер слишком старый.
Если вы хотите отправить файл, вам придется перейти с iframe - «обходным путем», описанным здесь здесь , например
. Для вашей проблемы, почему сериализация всегда пуста посмотрите на источник jquery . Тип поля ввода проверяется на это регулярное выражение
/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i
Как вы можете видеть, тип «файл» не является частью этого, и поэтому jquery не будет сериализовать это поле ввода.
проверить этот скрипт . он устанавливает базовые html и JS через jQuery для использования загрузки через iframe. хороший способ загрузки файлов «асинхронно»;)