- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
from itertools import groupby
In [31]: [list(g) for k, g in groupby('AAAABBBCCDAABBB')]
Out[31]:
[['A', 'A', 'A', 'A'],
['B', 'B', 'B'],
['C', 'C'],
['D'],
['A', 'A'],
['B', 'B', 'B']]
In [30]: [list(g) for k, g in list(groupby('AAAABBBCCDAABBB'))]
Out[30]: [[], ['B'], [], [], [], []]
Wrotberry 09.11.2018 05:54 # −101
syoma 09.11.2018 06:00 # 0
Wrotberry 09.11.2018 06:02 # −101
syoma 09.11.2018 06:18 # 0
guest8 09.11.2018 13:14 # −999
guest8 09.11.2018 13:30 # −999
guest8 09.11.2018 23:48 # −999
Tarkun 19.11.2018 01:47 # 0
roman-kashitsyn 19.11.2018 12:37 # 0
Tarkun 19.11.2018 15:18 # 0
roman-kashitsyn 19.11.2018 15:32 # 0
Где ты берёшь эти фразы? Неужели гугль транслейт такое выдаёт? Ob здесь неуместен.
Вопросительное предложение звучит так:
Bist du Dolmetscher?
Ob нужен, когда нужно выразить неуверенность (не условие) в подчинённом предложении:
Ich weiß nicht, ob er Dolmetscher ist.
Du muss dich endlich entscheiden, ob du Dolmetscher oder Übersetzer werden willst.
666_N33D135 09.11.2018 06:50 # 0
https://ideone.com/52h3kj
Wrotberry 09.11.2018 07:59 # −102
guest8 09.11.2018 17:21 # −999
666_N33D135 10.11.2018 04:27 # +1
syoma 09.11.2018 09:50 # 0
syoma 09.11.2018 09:51 # 0
Wrotberry 09.11.2018 09:56 # −101
guest8 09.11.2018 13:54 # −999
guest8 09.11.2018 23:43 # −999
guest8 09.11.2018 23:49 # −999
guest8 14.11.2018 10:44 # −999
guest8 14.11.2018 12:50 # −999
guest8 14.11.2018 14:18 # −999
guest8 14.11.2018 14:20 # −999
roman-kashitsyn 14.11.2018 14:30 # 0
Кмк, дело не в этом. Дело в том, что groupby ленивый, ему не нужно иметь весь датасет в памяти, чтобы сделать группировку. Если ты заранее знаешь, что датасет правильно отсортирован (генератор, который ты суёшь в groupby это гарантирует, или ты читаешь данные из большого файла на диске, где записи отсортированы по твоему ключу), то вся группировка будет ленивой в константном объёме памяти. Если заставить groupby делать сортировку самостоятельно, он потеряет это свойство, и ему уже не место в itertools.
Авторы библиотеки разумно предположили, что пользователю не сильно сложно вызвать .sorted(), если его устраивает идея держать весь датасет в памяти.
guest8 14.11.2018 14:53 # −999
roman-kashitsyn 14.11.2018 15:54 # 0
Какая именно часть слова itertools тебе не понятна? Это набор утилит, которые делают не более одного прохода по данным.
У нас, к примеру, весь дата-процессинг построен на ленивых коллекциях. Да даже если всего пару гигабайт обработать надо, ленивость будет большим плюсом.
> В случае сортировки это еще можно обхъяснить, если нужны первые N элементов.
Эта не совсем та ленивость, такая сортировка всё равно должна материализовать весь входной набор.
guest8 14.11.2018 17:08 # −999
guest8 15.11.2018 06:12 # −999
666_N33D135 15.11.2018 09:07 # 0
1. генереция списка функцией range.
2. map генерирует из него другой списк.
третье питно: range и map возвращают негереторы, здеся 1 суслик:
list дергает в кикле хуй next y map, тот в свою очередь дёргает next y range.
Вот этим хуйцам не нужно загружать весь файл в паметь: они оброботоют построчно файл любого розмера и запишут в построчно в другой файл, лишь бы хватило памета на одну сроку.
З.Ы. Как-то хотел по-быстрому J'ем оброботать один большой файл, так этому хуесосу не хватило помёта, потому что он считывает весь файл в паметь, а питончик хоть и медленно, но скушал всё говно. т.к. в нём функции map и range возвращали списки, в этой строчке спрятано как минимум 2 цикла:
guest8 15.11.2018 13:41 # −999
roman-kashitsyn 15.11.2018 13:26 # 0
Ну вот у меня была задача: взять пятигигабайтный файл, представляющий из себя зожатый XML, содержащий информацию о компаниях, и сделать случайную выборку этих компаний по регионам. Во-первых, память сервера можно использовать более рационально, чем грузить в неё гигабайты xml-я, во-вторых, типичной одноразовой программе на питоне требуется пара десятков итераций, прежде чем в ней не останется ошибок типов. Я не хочу ждать полчаса, пока весь файл запарсится в память, чтобы увидеть KeyError, вызванный ошибкой типов.
Я бы порекомендовал посмотреть https://www.youtube.com/watch?v=kGa78HQv_LQ, но ты ведь всё равно не будешь.
> питон способен за адекватное время обработать что-то не влазящее в память?
Если он используется как клей для сишных библиотек, то да.
guest8 09.11.2018 13:53 # −999
guest8 09.11.2018 23:44 # −999
guest8 09.11.2018 23:50 # −999
inkanus_gray 09.11.2018 23:58 # 0
guest8 15.11.2018 13:36 # −999
guest8 15.11.2018 13:54 # −999
3oJIoTou_xyu 15.11.2018 14:50 # 0
guest8 15.11.2018 15:02 # −999
3oJIoTou_xyu 15.11.2018 15:18 # 0
3oJIoTou_xyu 15.11.2018 14:50 # 0