Часть меня удивляется, если вы могли бы предоставить свою собственную функцию санитарии так же просто, как это:
$value = preg_replace('/[^a-zA-Z_]*/', '', $value);
Я действительно не продумал это, но кажется, что удаление чего-либо, кроме символов и подчеркиваний может работать.
Нет, нет более краткого синтаксиса, потому что то, о чем вы просите, - это очень нишевый случай, а не тот, для которого Python решает оказать особую поддержку.
Я не полностью слежу за комментариями, но itertools.tee
может дать мне несколько итераций:
In [518]: g1,g2,g3 = itertools.tee((i for i in range(10)), 3)
In [519]: min(g1), max(g2)
Out[519]: (0, 9)
In [520]: a = 0
In [521]: while a<10:
...: a += next(g3) # simulate an infinite sequence
...:
In [522]: a
Out[522]: 10
In [523]: list(g3)
Out[523]: [5, 6, 7, 8, 9]
Или без распаковки:
def foo(g):
a=0
while a<12:
a += next(g)
return (a, list(g))
In [525]: alist = itertools.tee((i for i in range(10)),3)
...: flist = [min, max, foo]
...: for f,a in zip(flist, alist):
...: print(f(a))
0
9
(15, [6, 7, 8, 9])
(используется Py3)