долго <-> двоичное преобразование ул.

Я бы посоветовал вводить ваши данные командой, используя Map. Таким образом, вы можете построить свои данные с помощью цикла forEach с линейной сложностью времени:

const rounds = [{team: "Dropkick Murphies",score: 75,course: 17},{team: "Dropkick Murphies",score: 62,course: 24},{team: "Dropkick Murphies",score: 69,course: 26},{team: "Gigantic",score: 67,course: 26},{team: "Gigantic",score: 65,course: 17},{team: "Gigantic",score: 63,course: 24}];

// Create Map with one entry per team
const map = new Map(rounds.map(({team}) => [team, []]));
// Populate each team with their scores
rounds.forEach(({team,score,course}) => map.get(team).push({score,course}));
// Convert the Map to the desired data structure
const result = Array.from(map, ([team, rounds]) => ({team, rounds}));

console.log(result);

6
задан Gilles 'SO- stop being evil' 16 September 2012 в 21:03
поделиться

6 ответов

Вы хотите модуль структуры.

packed = struct.pack('l', 123456)
assert struct.unpack('l', packed)[0] == 123456
4
ответ дан 16 December 2019 в 21:47
поделиться

Как насчет

from binascii import hexlify, unhexlify

def xstr(x):
    hex = '%x' % x
    return unhexlify('0'*(len(hex)%2) + hex)[::-1]

def xlong(s):
    return int(hexlify(s[::-1]), 16)

Я не сделал времени это, но это должно быть быстрее и также работать над большим числом, так как это не использует рекурсию.

2
ответ дан 16 December 2019 в 21:47
поделиться

Я предполагаю, что Вы не заботитесь о формате строки, Вы просто хотите сериализацию? Если так, почему бы не использовать встроенный сериализатор Python, cPickle модуль? dumps функция преобразует любой объект Python включая длинное целое к строке, и loads функция является своей инверсией. Если Вы делаете это для сохранения в файл, проверяете dump и load функции, также.

>>> import cPickle
>>> print cPickle.loads(cPickle.dumps(13**666)) % 666
73
>>> print (13**666) % 666
73
0
ответ дан 16 December 2019 в 21:47
поделиться

На самом деле у меня есть отсутствие длинных (s, 256). Я скрываюсь больше и вижу, что существует 2 функции в Python файл CAPI "longobject.h":

PyObject * _PyLong_FromByteArray( const unsigned char* bytes, size_t n, int little_endian, int is_signed);
int _PyLong_AsByteArray(PyLongObject* v, unsigned char* bytes, size_t n, int little_endian, int is_signed);

Они делают задание. Я не знаю, почему там не включены в некоторый модуль Python или исправляют меня если I'am неправильно.

2
ответ дан 16 December 2019 в 21:47
поделиться

Если Вам нужен быстрый маршал использования сериализации модуль. Это вокруг 400x быстрее, чем Ваши методы.

1
ответ дан 16 December 2019 в 21:47
поделиться

Производительность cPickle по сравнению с. marshal (Python 2.5.2, Windows):

python -mtimeit -s"from cPickle import loads,dumps;d=13**666" "loads(dumps(d))"
1000 loops, best of 3: 600 usec per loop

python -mtimeit -s"from marshal import loads,dumps;d=13**666" "loads(dumps(d))"
100000 loops, best of 3: 7.79 usec per loop

python -mtimeit -s"from pickle import loads,dumps;d= 13**666" "loads(dumps(d))"
1000 loops, best of 3: 644 usec per loop

marshal намного быстрее.

-1
ответ дан 16 December 2019 в 21:47
поделиться
Другие вопросы по тегам:

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