>print zip(*[t[i::3] for i in xrange(3)]) これって、いったん[t[i::3] for i in xrange(3)]ができる時点で、 必要なデータを丸ごとメモリ上に展開するので、あまり コンピュータにやさしくない書き方だと思う。 多少添え字確認するのがめんどくさくても、>>4みたいに書いた方がいいと思う。
226 :デフォルトの名無しさん:2008/08/06(水) 20:36:26
>データを丸ごとメモリ上に展開 listは参照の配列だからメモリ的には大したことないと思う
227 :デフォルトの名無しさん:2008/08/06(水) 20:40:07
短いとはいえないが。
import itertools
s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
def f(): it = iter(s) while 1: a = "".join(itertools.islice(it, 3)) if not a: break yield a
print list(f())
228 :デフォルトの名無しさん:2008/08/06(水) 20:42:29
sに改行とか混じると動かない可能性大。
import re s = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" print re.findall('..?.?', s)
>>> [slice(x) for x in [0,1,4]] [slice(None, 0, None), slice(None, 1, None), slice(None, 4, None)] >>> [slice(x,x+1) for x in [0,1,4]] [slice(0, 1, None), slice(1, 2, None), slice(4, 5, None)]
>>> glist = [] >>> for e in [slice(x,x+1) for x in [0,1,4]]: ... partial = list('abcdefg')[e] ... glist.extend(partial)
初歩的なところですみませんが質問させてください。 Apache上でPython動かそうとしてるんですが、ファイルにアクセスするとテキストファイルとしてしか認識されないです。 環境は以下の通り Windows Vista SP1 apache2.0.59 python2.5.2 mod_python3.3.1
httpd.confには下記の記述を追加してある。 LoadModule python_module modules/mod_python.so <Directory "/example"> Options FollowSymLinks AddHandler mod_python py PythonHandler test PythonDebug On </Directory>
http://mail.python.org/pipermail/python-dev/2004-July/046171.html > One reason is that if an exception happens in such a tail-recursive > call, the stack trace will be confusing. > > Another reason is that I don't think it's a good idea to try to > encourage a Scheme-ish "solve everything with recursion" programming > style in Python.
http://mail.python.org/pipermail/python-dev/2004-July/046353.html > I don't like reading code that was written by someone trying to use > tail recursion. It's the ultimate code obfuscation. > > I also haven't seen the use case that requires this and couldn't > easily be fixed by changing the data structure or code slightly.
http://mail.python.org/pipermail/python-dev/2004-July/046249.html > And how should we decide whether something is better done without > recursion? I currently have an easy answer: if it exceeds the > stack limit, you're probably spending too much time on function > calls...
>>726 末尾再帰を最適化する事と参照透過は別の問題だお。 Scheme処理系はは末尾再帰の最適化をするけど参照透過じゃない。 (define x 10) (define (f a) (set! x "Ref Trans") a) x ; => 10 (f "dummy") x ; => "Ref Trans"
prime = [2] num = 1 root = 1 while 1: num += 2 root += 1 while num > root * root: root += 1 root -= 1 for p in prime: if num % p == 0: break elif p > root: prime.append(num) print num break
return a if a < b else b if b < c else c if c < d else d ... ゲシュタルト崩壊しそうだ。
896 :デフォルトの名無しさん:2008/10/03(金) 23:17:16
return a if a < b else b if b < c else c これってどっちに解釈されるの? ↓ return (a if a < b else b) if b < c else c return a if a < b else (b if b < c else c)
897 :デフォルトの名無しさん:2008/10/03(金) 23:24:25
>>889 aとbが==ではあっても同一オブジェクトじゃない場合に困るんじゃね? 例えば、 def either(a, b): return a if a == b else b x = dict() y = dict() either(x, y)['x'] = true y['y'] = true とした場合、 return b の場合と return a if a == b else b では最終的なxとyの値が変わってくる。
898 :デフォルトの名無しさん:2008/10/03(金) 23:27:03
>>896 a = 1 b = 2 c = 0 print a if a < b else b if b < c else c print (a if a < b else b) if b < c else c print a if a < b else (b if b < c else c) とすると 1 0 1 だから後者みたいだね。
899 :デフォルトの名無しさん:2008/10/04(土) 00:47:52
return a if a < b else b if b < c else c if c < d else d なら return a if a < b else (b if b < c else (c if c < d else d)) ということですかね