
ваван
14.06.2018
16:58:57
а то я вот так
a=input()
def capitalize(string):
b=[]
i=0
while i<(len(string)):
if i==0:
b.append(string[i].upper())
elif string[i] == " ":
b.append(string[i])
b.append(string[i+1].upper())
i+=2
continue
else:
b.append(string[i])
i+=1
return (''.join([str(i) for i in b]))
print(capitalize(a))

Димон
14.06.2018
16:59:10
Или там не str?

Google

Димон
14.06.2018
16:59:27
В смысле, дефолт первого аргумента

Tigran
14.06.2018
16:59:27
Специальный смысл дефолтного значения None.

Димон
14.06.2018
17:00:24
Ого. Новости)

Tigran
14.06.2018
17:01:18
Вопрос знатокам: может ли "".join, приняв на вход генератор, сгенерировать выходную строку эффективнее, чем sum, не беря list от входного генератора?

Denis
14.06.2018
17:02:11

Tigran
14.06.2018
17:02:37

Denis
14.06.2018
17:02:47
Смотря как + сделан

Tigran
14.06.2018
17:03:03
Как питоний строковый плюс.

Denis
14.06.2018
17:03:04
Для += в cpython оптимизации есть

Valentin
14.06.2018
17:03:21

Tigran
14.06.2018
17:03:26

Denis
14.06.2018
17:03:35
Он работает быстро

Google

Tigran
14.06.2018
17:03:43

Valentin
14.06.2018
17:04:27
>>> sum(('a', 'b', 'c'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
:P

Denis
14.06.2018
17:05:06

Tigran
14.06.2018
17:05:23

Димон
14.06.2018
17:05:33
Ну кстати да, нельзя вроде
»> sum(("a", "b", "c"), "")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sum() can't sum strings [use ''.join(seq) instead]

Denis
14.06.2018
17:05:36
Потому что питон это медленно

Tigran
14.06.2018
17:05:42
Только поэтому?

Димон
14.06.2018
17:05:45
Он даже посказывает)

?
14.06.2018
17:06:04
https://rushter.com/blog/python-gil-thread-scheduling/ ?

Denis
14.06.2018
17:06:19
Если делать тупым плюсом, там переаллокация на каждую строку будет. Джойн может догадаться в 2 раза увеличивать, например

Димон
14.06.2018
17:06:26

Denis
14.06.2018
17:06:43

Tigran
14.06.2018
17:07:01

Denis
14.06.2018
17:07:27
А если через +=, то без разницы, скорее всего

Димон
14.06.2018
17:07:33

Tigran
14.06.2018
17:07:36
Переаллокаций будет так много, что получится квадратичная сложность.

Димон
14.06.2018
17:07:36
Не верю)

Google

Denis
14.06.2018
17:07:47

Tigran
14.06.2018
17:08:04

Димон
14.06.2018
17:08:08

Denis
14.06.2018
17:08:50

Mark
14.06.2018
17:09:42
Кстати, какой самый быстрый вариант нахождения подстроки?

Denis
14.06.2018
17:09:51
in?

Проксимов
14.06.2018
17:10:00

Mark
14.06.2018
17:10:06
В петоне
Я где-то вычитал, что in хуйня

Проксимов
14.06.2018
17:10:19

Valentin
14.06.2018
17:10:42
in быстрее, чем find

Димон
14.06.2018
17:10:45
Чот не верится, что хуйня. Непонятно, с чего бы им в cpython пихать для такой базовой вещи что-то не оптимальное

VA
14.06.2018
17:11:01
Я где-то вычитал у Лутца, что in решает половину проблем

Valentin
14.06.2018
17:11:17
https://stackoverflow.com/q/18437798/3606603

Mark
14.06.2018
17:11:20
У in линейная сложность вроде

Проксимов
14.06.2018
17:11:25
В телеге можно редактировать сообщения

VA
14.06.2018
17:11:30
И в 3.х оптимизирована до ужаса

Проксимов
14.06.2018
17:11:38

Denis
14.06.2018
17:11:43

Google

Проксимов
14.06.2018
17:11:55

Denis
14.06.2018
17:12:24

Tigran
14.06.2018
17:12:56
С предподсчётом можно и за O(1), если хэши предпосчитаны)

Denis
14.06.2018
17:13:10

Mark
14.06.2018
17:13:25
Вообще, суть вопроса в скобочной последовательности. Без использования стека. Ща покажу. Постоянно думаю, как это можно оптимизировать

Admin
ERROR: S client not available

Tigran
14.06.2018
17:13:29

Проксимов
14.06.2018
17:13:30

Denis
14.06.2018
17:13:42

Tigran
14.06.2018
17:13:45
Для всех подстрок строки, в которой ищем, и для строки, которую ищем

Mark
14.06.2018
17:13:57
Вот

Denis
14.06.2018
17:14:01
И это таки не 1, а длина образца

Tigran
14.06.2018
17:14:12
жестоко

Jentry
14.06.2018
17:14:17

Проксимов
14.06.2018
17:14:21

Tigran
14.06.2018
17:14:26

Denis
14.06.2018
17:14:31
Суфавтомат дает то же самое, но без квадрата памяти и с линейным предпосчетом

Tigran
14.06.2018
17:14:48

Google

Mark
14.06.2018
17:14:51
Интересно, можно ли его ускорить

Denis
14.06.2018
17:15:06

Valentin
14.06.2018
17:15:15

Tigran
14.06.2018
17:15:33

Denis
14.06.2018
17:15:42

Tigran
14.06.2018
17:15:59

Valentin
14.06.2018
17:16:25

Denis
14.06.2018
17:16:39
Там суфдерево часто используется

Проксимов
14.06.2018
17:17:09
Я чувствую себя тупым, завязывайте
XD

Mark
14.06.2018
17:17:33
Давайте вернемся к этому алгоритму. Его ускорить можно?

Tigran
14.06.2018
17:17:34
Недавно постили же питонячью магию про строку, у которой увеличивается sys.getsizeof().

Mark
14.06.2018
17:18:37