Преобразование кортежей в список списков [дубликат]

Для Chrome и Firefox я использую только метод JavaScript.

(Мое приложение не может использовать пакет, такой как Blob.js, потому что он обслуживается специальным движком: DSP с

function FileSave(sourceText, fileIdentity) {
    var workElement = document.createElement("a");
    if ('download' in workElement) {
        workElement.href = "data:" + 'text/plain' + "charset=utf-8," + escape(sourceText);
        workElement.setAttribute("download", fileIdentity);
        document.body.appendChild(workElement);
        var eventMouse = document.createEvent("MouseEvents");
        eventMouse.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        workElement.dispatchEvent(eventMouse);
        document.body.removeChild(workElement);
    } else throw 'File saving not supported for this browser';
}

Примечания, оговорки и ласковые слова:

  • У меня был успех с этим кодом как в Chrome, так и в Firefox, работающих в средах Linux (Maipo) и Windows (7 и 10).
  • Однако, если sourceText больше, чем MB, Chrome иногда (только иногда) застревает в его собственная загрузка без указания отказа; До сих пор Firefox не демонстрировал такого поведения. Причиной может быть некоторое ограничение blob в Chrome. Честно говоря, я просто не знаю; если у кого-нибудь есть идеи по исправлению (или, по крайней мере, обнаружению), отправьте сообщение. Если возникает аномалия загрузки, когда браузер Chrome закрыт, он генерирует диагностику, такую ​​как
  • . Этот код несовместим с Edge или Internet Explorer; Я не пробовал Opera или Safari.

25
задан woollybrain 12 February 2013 в 13:47
поделиться

1 ответ

Хотя понимание списка является полностью верным ответом, поскольку вы просто меняете тип, возможно, стоит рассмотреть альтернативу встроенный map() встроенный :

>>> list_of_tuples = [(1, 2), (4, 5)]
>>> map(list, list_of_tuples)
[[1, 2], [4, 5]]

Встроенный модуль map() просто применяет вызываемый к каждому элементу заданного итерабельного. Это делает его полезным для этой конкретной задачи. В общем, понимание списков более читабельно и эффективно (что-то сложное с map() вам нужно lambda), но там, где вы хотите просто изменить тип, map() может быть очень ясным и быстрым.

Обратите внимание, что я использую 2.x здесь, поэтому мы получаем список. В 3.x вы получите итерируемый (который ленив), если вам нужен список в 3.x, просто сделайте list(map(...)). Если вы в порядке с итерируемым для ваших целей, itertools.imap() предоставляет ленивый map() в 2.x.

15
ответ дан Gareth Latty 26 August 2018 в 13:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: