
Viktor
01.02.2016
11:27:37
то есть есть скажем ['foo', 'bar', 'baz']
И мне больше не нужен 'bar' — я его удаляю
но при этом arr[2] все еще 'baz'
есть способ лучше чем arr[1] = None + filter

Kolyann
01.02.2016
11:27:40

Viktor
01.02.2016
11:27:44
ну да

Pavel
01.02.2016
11:27:53
а зачем так?

Google

Ilya
01.02.2016
11:28:00
у словаря только максимальный индекс запаришься доставать

Henaro
01.02.2016
11:28:12
если обращение не по индексу, а по ключу - то точно словарик

Viktor
01.02.2016
11:28:18
только мне нужно append который будет автоматически иметь номер

Pavel
01.02.2016
11:28:20
len(items())

Kolyann
01.02.2016
11:28:36
почему не прокатывает простое присваивание None?

Ilya
01.02.2016
11:28:37
дак убрал элемент
и индексы сбились
но про Нон забыл

Viktor
01.02.2016
11:29:51
len(items())
то есть делать items = dict() ••• items[len(items)] = new_item?
тогда у меня клиенту отправляется 3500 null'ов

Ilya
01.02.2016
11:30:25
ощущается, что ты чего то не того придумал
тебе точно надо индекс сохранять?

Google

Kolyann
01.02.2016
11:30:54
опиши полность, как именно ты этот массив юзаешь?

Viktor
01.02.2016
11:30:58
А вообще былоо бы еще лучше если бы можно было заменять индексы
ой

Pavel
01.02.2016
11:31:08

Kolyann
01.02.2016
11:31:28
у тебя был [a, b, c, d], тебе не нужен c, но ты помнишь, что arr[3] d

Pavel
01.02.2016
11:32:12

Viktor
01.02.2016
11:32:44

Pavel
01.02.2016
11:33:20
о! ещё можно sqlite держать с полем autoincrement.

Ilya
01.02.2016
11:34:28
монгу :)
о кстати, есть же файловая херня

Viktor
01.02.2016
11:35:05
ну смотрите, подключается клиент и получает id — какое-то число
О подключении узнают все клиенты и получают id этого нового пользователя, а так же его имя
Затем все сообщения от этого клиента приходят как msg: text, author: id
Получатель находит соответствующее этому id имя и отображает

Pavel
01.02.2016
11:36:00

Viktor
01.02.2016
11:36:02
так же клиенты могут менять имя и отключаться
uuid()
это перебор
И вообще мне нужно нечто более быстрое для поиска нежели строка
просто я уже вроде сделал
но попробйте зайти на s4sradio.tk и консольку открыть
отправка клиенту трех тысяч null это слишком

Google

Pavel
01.02.2016
11:37:38
словарь с обёрткой добавления и проверкой на race condition.

Viktor
01.02.2016
11:37:43
и хранение трех тысяч None это тоже не хорошо
вообще важнее возможность использовать уже освобождённые id

Pavel
01.02.2016
11:38:34
ёлки.
задача меняется вообще на ходу.

Viktor
01.02.2016
11:38:47
:)
я придумал только так — создать очередь и при освобождении элемента писать в нее его индекс

Pavel
01.02.2016
11:39:49
массив-пул свободных id и простой словарь. подключился - взяли из пула id, отключился - отдай обратно.

Viktor
01.02.2016
11:39:49
а при добавлении — брать индекс из этой очереди, а если пуста — делать .append()
вот это питон вэй?
я придумал только так — создать очередь и при освобождении элемента писать в нее его индекс
а при добавлении — брать индекс из этой очереди, а если пуста — делать .append()

Ilya
01.02.2016
11:40:41
http://unqlite.org/
во
альтермонга

Viktor
01.02.2016
11:41:17
А свои типы можно в *sql* хранить разые?
короче, я сейчас напишу код, а вы скажете: хорошо это или так не стоит делать никогда
Хорошо?

Pavel
01.02.2016
11:42:01
снизу вверх читать сообщения так непривычно...

Google

Viktor
01.02.2016
11:43:51
ага)

Pavel
01.02.2016
11:44:20
больше одной строки не влезает.

Viktor
01.02.2016
11:44:20
ну фронтенд не я делаю, и вообще пока я сделал его просто чтобы работал

Pavel
01.02.2016
11:44:57
я сейчас ему пару мегабайт текста скормил, а он мне отдал только первую строку.

Viktor
01.02.2016
11:45:20
я знаю
только первые 200 символов
зато в имени ограничения нет )
попробуй

Admin
ERROR: S client not available

Pavel
01.02.2016
11:50:15
ябраузер не хочет больше 10к в инпут принимать

Владимир
01.02.2016
11:51:07
При обновлении страницы присваивается новый ид

Pavel
01.02.2016
11:54:25
в ник можно жаваскрипт засунуть.

Владимир
01.02.2016
11:55:00
relf cedfnm&
куда сувать Оо

Pavel
01.02.2016
11:55:15
тыкни рядом с ополем ввода
на свой ник

Владимир
01.02.2016
11:56:11
не тыкается xD

Pavel
01.02.2016
11:56:30
на noname:3532?

Владимир
01.02.2016
11:57:02
неа

Google

Владимир
01.02.2016
11:57:11
обновил страницу и теперь 3533

Viktor
01.02.2016
12:08:52

Pavel
01.02.2016
12:09:02
теперь в нике

Viktor
01.02.2016
12:09:09
мда
я написаль
from collections import deque
class QList(list):
def __init__(self, seq=()):
super().__init__(seq)
self._queue = deque()
def free(self, index):
self[index] = None
self._queue.append(index)
def append(self, p_object):
if self._queue:
index = self._queue.popleft()
self[index] = p_object
else:
super().append(p_object)
index = len(self) - 1
return index
для удаления использовать free, для добавления — append

Pavel
01.02.2016
12:10:22
и это, сделай new_nick = ' '.join(new_nick.split()) а то с пробелами внике можно долго забавляться.

Viktor
01.02.2016
12:10:50
там надо и escape, и обрезание

Владимир
01.02.2016
12:12:00
https://habrastorage.org/files/a98/e04/74c/a98e0474c2534e138a265d3b9577caab.png

Viktor
01.02.2016
12:12:06
а почему ' '? не '' или str()

Pavel
01.02.2016
12:12:31
/убрать

Viktor
01.02.2016
12:12:44
Ага
test = QList(('foo', 'bar', 'baz'))
print(test)
print(test.append('fox'))
print(test)
test.free(1)
print(test)
print(test.append('boz'))
print(test)
test.free(3)
test.free(2)
print(test)
print(test.append('dsa'), test.append('dso'), test.append('dazzz'))
print(test)
Вот еще и тесты набросал
то чувство когда тест ужаснее и длиннее чем сам код

Pavel
01.02.2016
12:14:42
import unittest же.

Viktor
01.02.2016
12:15:39