┌──────────────────┐ | | │ _ ∩ | │ ( ゚∀゚)彡 おっぱい! | │ ( ⊂彡 おっぱい! .| │ | | | │ し ⌒J | │ | │ Now Oppaing. .... .| │ | │ そのままおっぱいでお待ちください。 | | | └──────────────────┘
3 :
デフォルトの名無しさん :2009/01/02(金) 00:06:47
ペニス
乙py
6 :
初心者 :2009/01/02(金) 08:55:53
パイパン初心者です。こんなスレがあるなんて今日初めて知りました。
7 :
初心者 :2009/01/02(金) 13:50:22
Rubyこそが史上最強の言語であると思ってますが、パイパンがんばります!
>>7 そうだね、ハルマゲドンはすぐそこまで来ているよね。
またruby厨の自演がはじまった
刑務所でも使えるRubyに感謝
だれか、pythonのスクリプトを難読化する ツールを僕に紹介してちょんまげ
誰もお前の糞なスクリプトなんて読まないから安心汁
つ perl
つ Grass
.pyc
18 :
デフォルトの名無しさん :2009/01/03(土) 02:09:00
python -m py_compile python -m compileall 何か面倒な事をしたいのなら、 def encode_src(src): print("""exec '''%s'''.decode('base64')""" % src.encode('base64')) encode/decodeは必要に応じてcompile,marshal他を組み合わせる。
>>18 の訂正
execも関数になるんだっけ。exec -> exec(...)
他に、codec使う方法もある。 # -*- coding: rot13 -*- cevag('Uryyb, jbeyq!')
>>> class a: ... hoge=2 ... def hage(self, x): ... self.hoge=x ... def fuga(self, y): ... return self.hoge ... >>> vars()['a'].__dict__ {'__module__': '__main__', 'fuga': <function fuga at 0x00930DF0>, 'hage': <funct ion hage at 0x00930CF0>, '__doc__': None, 'hoge': 2} >>> vars()['a'].hoge 2 >>> vars()['a'].__dict__['hoge'] 2 >>> i=vars()['a'] >>> i.fuga(0) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unbound method fuga() must be called with a instance as first argumen t (got int instance instead) >>> i=vars()['a']() >>> i.fuga(0) 2 >>> i=vars()['a'] >>> j=i() >>> j.hoge 2 >>> j.fuga(0) 2 >>> j.__dict__ {} 生成されたインスタンスからメンバやメソッド情報を得るにはどうすればよいですか
j.__class__.__dict__
dir inspect.getmembers
__class__.__dict__ にある関数はインスタンスと関連付けされてない点に注意。 a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある 恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)
dir だと余計なメンバも混ざってくる。 __class__.__dict__だと親クラスの情報が含まれない。 メソッドのみを調べる場合は、 [name for name,boundmethod in inspect.getmembers(instance, inspect.ismethod)] メンバを含める場合は第二引数を省略。 [name for name,boundmethod in inspect.getmembers(instance) if not name.startswith('__') and not name.endswith('__')]
>>> j.__class__.__dict__['hoge'] 2 >>> j.__class__.__dict__['fuga'](0) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: fuga() takes exactly 2 arguments (1 given) >>> j.__class__.__dict__['fuga'](j, 0) 2 >>> j.hoge=9 >>> j.__class__.__dict__['fuga'](j, 0) 9 できました ありがとうございました もっと勉強してみます
>>> class b(a): ... hige=3 ... def fuga(self, x): ... return self.hoge + x >>> class a: ... hoge=2 ... def hage(self, x): ... self.hoge=x >>> aa=a() >>> bb=b() >>> aa.__class__.__dict__ {'__module__': '__main__', '__doc__': None, 'hage': <function hage at 0x00930D70>, 'hoge': 2} >>> bb.__class__.__dict__ {'__module__': '__main__', 'fuga': <function fuga at 0x00930D30>, 'hige': 3, '__doc__': None} >>> dir(aa) ['__doc__', '__module__', 'hage', 'hoge'] >>> dir(bb) ['__doc__', '__module__', 'fuga', 'hage', 'hige', 'hoge'] >>> import inspect >>> inspect.getmembers(aa) [('__doc__', None), ('__module__', '__main__'), ('hage', <bound method a.hage of <__main__.a instance at 0x00934738>>), ('hoge', 2)] >>> inspect.getmembers(bb) [('__doc__', None), ('__module__', '__main__'), ('fuga', <bound method b.fuga of <__main__.b instance at 0x009347B0>>), ('hage', <bound method b.hage of <__main__.b instance at 0x009347B0>>), ('hige', 3), ('hoge', 2)] >>> [name for name,boundmethod in inspect.getmembers(aa, inspect.ismethod)] ['hage'] >>> [name for name,boundmethod in inspect.getmembers(bb, inspect.ismethod)] ['fuga', 'hage'] >>> [name for name,boundmethod in inspect.getmembers(aa) if not name.startswith('__') and not name.endswith('__')] ['hage', 'hoge'] >>> [name for name,boundmethod in inspect.getmembers(bb) if not name.startswith('__') and not name.endswith('__')] ['fuga', 'hage', 'hige', 'hoge']
もしかしてpythonのソースをYAMLだけで書いて exec使わずに実行とか出来るんですか
>>28 exec使わずに実行て?
普通、言語のインスペクトではメソッドの中身とか取れないのが普通。
JavaScriptはソースが見れたっけ?
Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。
rubyなら出来ますよ
そうだね、神の名はエホバだね。
はあ?
今、下記のようなリストがあり、 list1 = ['cat', 'dog', 'spam', 'egg'] 下のマップで上記リストを変換したいと思います。 maps = {'animal': ['cat', 'dog']} 結果は以下を期待しています。 ['animal', 'animal', 'spam', 'egg'](あるいは、set(['animal', 'spam', 'egg']) その際、安直に上記を実装した、下のようなコードが思いつきました。 下のコードをmap関数やセット、lambda関数などなんでもいいので標準関数等を駆使して、とにかく短く表現できないか考えています。下記のコードはスマートな方でしょうか? ans = [] for elem in list1: for key, vals in maps.items(): if elem in vals: ans.append(key) else: ans.append(elem) print ans さらに、マップの要素が増えた場合、 maps = {'animal': ['cat', 'dog'],'food':['egg']} 他に、list1 = ['animal', 'spam', 'egg'] をもとにmaps = {'animal': ['cat', 'dog']}を用いて、元が復元できないか考えています。 >> ['cat','dog','spam', 'egg'] どなたかわかりますでしょうか?
改行がくずれたので、、、 ans = [] for elem in list1: for key, vals in maps.items(): if elem in vals: ans.append(key) else: ans.append(elem) print ans
>>33 変換したい方向とmapsのデータの持ち方が逆なので意図がちょっと分かりにくかった
list1 = ['cat', 'dog', 'spam', 'egg']
maps = {'animal': ['cat', 'dog']}
reverse_maps = dict((x, key) for key, xs in maps.iteritems() for x in xs)
print [ reverse_maps.get(x) or x for x in list1 ]
こういうことでいいのかな?
>>35 やばい。目から鱗どころじゃないっす。。
マップをつくるなんて、、。
しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。
ありがとうございます!
しかし、実質1行とは。。予想以上でした。
これより最短はないですね。
ありがとうございます!
def foo(l, i, k): l[i] = k for k, v in maps.items(): for w in v: if list1.count(w): foo(list1, list1.index(w), k) print(list1) for k, v in maps.items(): for w in v: if list1.count(k): foo(list1, list1.index(k), w) print(list1) 初心者なので腕試しのつもりで書きました かなり行数使ってますが
>>35 コードもらいました
これで逆変換
list1 = ["cat", "dog", "spam", "egg"]
maps = {"animal": ["cat", "dog"]}
transpose = lambda mps: dict((x, key) for key, xs in maps.iteritems() for x in xs)
transform = lambda lst, mps: [item in mps.keys() and mps[item] or item for item in lst]
itransform = lambda lst, mps: sum([item in mps.keys() and mps[item] or [item] for item in lst], [])
#>>> import trans
#>>> m = trans.transpose(trans.maps)
##>>> trans.transform(trans.list1, m)
#['animal', 'animal', 'spam', 'egg']
#>>> s = set(trans.transform(trans.list1, m))
#>>> trans.itransform(trans.list1, trans.maps)
#['cat', 'dog', 'spam', 'egg']
39 :
37 :2009/01/03(土) 22:31:06
一行で書けるのか 代入せずに新しくリストを作ればいいのか 勉強になるなあ
ああー 最後はtrans.list1じゃなくてs
41 :
38 :2009/01/03(土) 22:38:56
transpose関数ももmapsではなくmpsですねサーセン
42 :
37 :2009/01/03(土) 22:41:40
カウントとか効率悪そうだし foo関数定義した意味がわからないな 駄コード書いて反省してます すみませんでした
43 :
37 :2009/01/03(土) 22:59:21
ちょっと増やすだけで破綻するし 駄目すぎるな
setでよかったのか 考えて損した 一から勉強し直そう
>>27 細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。
hige, hoge はクラス変数になっているので、
fuga をインスタンス作らずに呼び出したいなら、@classmethod
インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。
なんぞこれ
>>29 JavaScriptは実装依存じゃないかな。toSourceとかunevalがあったよーな気がする。
Pythonだとinspect.getsoruce
>構文木をソースとして実行
構文木もコンパイルしたコードオブジェクトも実行可能。ただ、実行には結局exec/evalを使うので
構文木を弄るのでなければわざわざ変換する利点はない。see also compiler.ast, ast.parse
少し敷居は高いけど、Pythonはこの辺の標準モジュールは充実してる。
>>28 "exec を使わずに"がどういう意図なのかわからないけど、
単に字面通りなら、じゃあevalで?って話しだし。
副作用を気にしていて実行環境を分離したいのなら
>>> d = {'a': 1}
>>> exec "a = 10" in d
>>> d['a']
10
より確実にするなら、別プロセス立ち上げてsocketやpipe等で -> Rpyc等のライブラリを使う。
ところで、YAML内にPythonのソース書くって
インデントがどっちの言語のものか混ざって解らなくなったりしない?
(書いたことないけど
>>38 item in maps.keys() は、item in maps の方が推奨されてる。
でも、この場面なら get メソッドの第2引数を使う方がいい。
item in maps.keys() and maps[item] or item -> maps.get(item, item)
49 :
38 :2009/01/04(日) 03:32:08
50 :
38 :2009/01/04(日) 03:33:58
効率無視 && mapsのkeysと各要素間に重複がない場合限定で。 mapsをtransposeせずに探索。見つかってもまだ探索・・・。 [reduce(lambda x,(y,z): y if x in z else x, maps.iteritems(), i) for i in list1]
52 :
デフォルトの名無しさん :2009/01/04(日) 05:41:17
くだらないコードばっかだな
161さんごぶさたです
55 :
デフォルトの名無しさん :2009/01/04(日) 13:01:07
a = ( {'a':'b'} ) for row in a: print row これだと、{'a','b'}でなく、'a'が表示されます。 a = ( {'a':'b'}, ) これだと、ちゃんと{'a':'b'}と表示されます。 これは何故でしょうか?
pythonでは1要素のタプルを記述するには (x,)のように末尾のカンマが要るんだよ >>> (1+2)*3 9 >>> (1+2,)*3 (3, 3, 3) 上の式のカッコがタプルだと思われても困るだろう?
なるほど ありがとうございました
a = ({'a':'b'})*3 print a a = ({'a':'b'},)*3 print a
>>5 for i in dict
は、for i in dict.keys()と同じだから。
┏━━━━━━━━━━━━━━━━━━━━━┓ ┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃ ┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃ ┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃ ┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃ ┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃ ┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃ ┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃ ┗━━━━━━━━━━━━━━━━━━━━━┛ ∩ 〈〈〈 ヽ 〈⊃ } (\___/) | | ( ̄l▼  ̄)! ! / ● ● | / / l ___\lミ/ /▲ ( 。--。 ) /■___ (( ̄)) 新年あけましておめでとうございますーーっ! (___)  ̄/ 2009年 元旦
61 :
デフォルトの名無しさん :2009/01/04(日) 17:06:59
>>59 嘘をかかないでください。for item in {'a':'b'}: は、'a':'b'を取り出した後自動的に'a'に加工してくれるんです
62 :
デフォルトの名無しさん :2009/01/04(日) 19:39:07
pythonのソースコードをsjisで書いても問題ないでしょうか? 日本語はu"ほげ"で書くので、 他言語で発生するような文字化け問題は発生しないのではと思うのですが そのあたりどうでしょうか
俺はいつもsjisで書いてるよ。
for item in dict と for item in dict.keys() が同じになるのは、正確には 3.0 から。
2.x では dict.keys()はキーのリストを作って返すので、同じになるのは dict.iterkeys()。
でも
>>61 は解らない。バイトコードで?それともC関数内で?
自動的に加工してくれるという根拠とかどこにあるのか、よければ教えてください。
サブクラスがオヤクラスの名前を知るにはどうすればいいのでしょうか? class Tuple3: def __init__(self, arg): if isinstance(arg, Tuple3): print 'ok' else: print 'ng' class Vector3(Tuple3): def __init__(self, arg): Tuple3.__init__(self, arg) と、あったとき、 vec = Vector3() --> 'ng' vec2 = Vector3(vec) とやった時、'ok'と表示させる事はできますか? 親クラスコンストラクタで、isinstance(arg, Vector3)と直接書けばいいのはわかるのですが、 このやり方はしたくありません。 そんな事は可能ですか?
66 :
デフォルトの名無しさん :2009/01/04(日) 20:01:21
必要なくね?
>>62 自分ひとりで同一環境で書いてる間は特に問題ない。
ブラウザからsvnレポジトリ内のソースを読む時、等
他のいろんな所とのやりとりを想定すると
ソース内には極力日本語を書かないようにするかutf-8に統一が無難。
>>65 どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると
issubclass
Vector3.__bases__
class Tuple3: def __init__(self, arg): if isinstance(arg, Tuple3): print 'ok' else: print 'ng' これは class Tuple3: def __init__(self, arg): if self.__class is Tuple3: print 'ok' else: print 'ng' がいいんだろう
main.py /hoge/ - __init__.py - test.py をmain.py内で、 import hoge した場合、test.pyはimportされないのですか?
何に使うのかまだ解ってないけど、 やりたい事ってもしかして、コレ? class Tuple3: def __init__(self, arg=None): if isinstance(arg, self.__class__): print "ok" else: print "ng"
>>70 パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。
import hoge.test
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
75 :
デフォルトの名無しさん :2009/01/04(日) 23:59:00
馬鹿ばっかり、ってことが証明されたなあ、このスレ。
真面目にやれ
77 :
デフォルトの名無しさん :2009/01/05(月) 00:59:54
姑息なことすんな
くだすれの方が盛り上がってるな
sageないし草いし死ねば良いのに
2chで死ねは挨拶みたいなもんだ罠
[ANN] PyYAML Python 3 対応 ---- yaml_make.py ---- import os, sys, yaml def make(target): makefile = os.path.join(os.getcwd(),'Makefile.yaml') exec (yaml.load(open(makefile))) in vars() if __name__ == '__main__': make(sys.argv[1]) ---- Makefile.yaml ---- hello: | print "Hello" test: | print "Test" PythonソースをYAML内に書くときのサンプル。 | がないと、関数・クラス定義する時に : が YAMLでの辞書のキー定義と解釈される。
そういうのは公式言ってみるからどうでもいいよ
83 :
デフォルトの名無しさん :2009/01/06(火) 04:37:22
numpyはsageに吸収されてしまうのだろうか
年明け首吊り失敗して顔酷いことなってるよ俺。首にアザできて外でれねえw
このご時世たくさん人をやとっちゃった会社は大変だね。 この状況で独立するバカは中央線を止めないようにね。
ま、会社が潰れるのは虚業だったことの証明なんだろうけどね。 年末が一つの山だったみたいだな。 次は年度末の3月が山だと思うよ。
コネない人間には虚業自体できないから 景気も関係ないんじゃないの
有名なpythonistaって誰?
guido
Eric Steven Raymond Peter Norvig
Matz
Ruby
>>93 ,94
もしかして: David Mertz と Sam Ruby
Tim Barners Lee
Matz
Notz
日本人では
俺
Jim Huguninは、pythonistaだと思う。
西尾さん以外ありえないだろ。
以下、Python系本の著者の話題が続くとさ
Esoteric Language みたいな本を opython で出す必要は ないよね
西尾さん以外ありえないだろ。
西尾さん以外ありえないだろ。
西尾さんって誰?
西尾さん以外アッーー!!
彼のためを思ってやってるのかも知れないけど 一般的にこういうのは迷惑なものなんだよ>javajaの人
知らね。 Matzと梶山民人(ninixの作者)なら知ってる。
いや、まて思い出した。 どう書く.orgなら知ってるのでそれ作った人か。
どう書く.org って Python で作られてたの?
117 :
デフォルトの名無しさん :2009/01/11(日) 00:21:57
Pythonとかやってるやつが売国奴だ
どうせWindowsやLinux上で動かすしぃ
たまには思い出してやって下さい
超漢字使え
sageなんてもんがあるのか 検索しにくい Pythonはじまったな
クラスのimport方法が分からん・・・ 今同じディレクトリに以下のPythonファイルがあるんですが、 いざ「driver.py」を実行しようとすると Traceback (most recent call last): File "hoge.py", line 5, in <module> obj = Hoge() TypeError: 'module' object is not callable ってエラーが出る。 import自体はうまく出来てるみたいなんだけど、インスタンスを作るところでエラーになってるのか・・・? 誰かPythonで自作クラスを作成&importするヒントをくださいorz 【Hoge.py】 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 class Hoge: 5 def __init__( self ): 6 print("HOGE") 7 【driver.py】 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import Hoge 4 5 obj = Hoge()
>>122 【driver.py】
5 obj =Hoge.Hoge()
>>122 3 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない
125 :
122 :2009/01/11(日) 20:12:48
>>123 >>124 動いたあああああああああああああああああああああ
ありがとう!!
でも・・・これはどういうことなの・・・?
HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに
同じディレクトリに二つのファイルを置いているだけなんだけど・・・
このあたりの動きってJavaとかPHPとはまったく別物?
>>125 Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。
>>126 何その糞言語・・・やっぱrubyに変えようかな
>>126 丁寧にありがとう!
なるほどそういうことか・・・
Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!
パッケージでも ./Hoge/__init__.py に class Fuga 書くと from Hoge import Fuga になるし ./Hoge/Hage.py に class Fuga 書くと from Hoge.Hage import Fuga になる
結局「どちらがより優れているか」よりも「どちらがより糞でないか」で消極的に選択される 良くない選択肢のもう一方はもっと良くない選択肢かもしれない
MLの流れで引いたな。なんだよあれ。
またruby厨の釣り質問でも来たのかい?
Pythonのモジュールシステムは、見通しがよくて好きだけどな。
俺もPythonのモジュールシステムは好きだな
Webアプリ開発に疲れました。 クライアント側でバリデーションをしたいので、JavaScriptで書きました。 でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。 もうばかばかしい。 サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。 もう両方をメンテナンスするのに疲れた。
>>136 誤爆?
発想は逆だけど、JavaScriptをサーバ側で動かすAptana JaxerっていうAPサーバ?があるよ
まぁ、そういった面倒なものはフレームワークとかにそれ相応の機能があるんだけどね。
PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?
よく知らんけど ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを 自動生成してくれるんでなかったか
>>138 そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢
>>137 いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。
Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。
pydocすげぇ!! HTMLに出力したらさらにすげぇ! ・・・見安すぎて逆になんだかなぁ
javadocすげぇ!! HTMLに出力したらさらにすげぇ! ・・・見安すぎて逆になんだかなぁ
rubydocすげぇ!! HTMLに出力したらさらにすげぇ! ・・・見安すぎて逆になんだかなぁ
phpdocすげぇ!! HTMLに出力したらさらにすげぇ! ・・・見安すぎて逆になんだかなぁ
どうにも.orgってイカメンファッカーがダンジョーで作ってるんですね。
今、PYTHONクイックリファレンス買っても意味あるかな?
LinuxでPythonするのに、IDLEみたいな開発環境ないかな?
eclipseか、
>>150 だな。
他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ
emacs
156 :
デフォルトの名無しさん :2009/01/13(火) 15:09:47
出来ました。 ありがとうございました。
158 :
149 :2009/01/13(火) 18:35:31
皆さんありがとうございます。 NetBeansは扱いやすいですねw
159 :
149 :2009/01/13(火) 18:37:02
皆さんありがとうございます。 NetBeansは扱いやすいですねw
あいかわらずここは粘着がわいてるのかよ。
greenletとかいうのを今日はじめて知ったけど、なかなか楽しいね
StacklessPython風のコルーチンをCPythonに取り込むライブラリなんだが
Windows + VC9 + Python2.6で試してみたらあっさりクラッシュしたけど
ttps://codespeak.net/issue/py-dev/issue65 にあるように、Stacklessのヘッダ(switch_x86_msvc.h)をコピってきて
ビルドしたら動いた
併せてeventletもどうぞ。 winで動くかは分からんが。
>>162 実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね
a = ['aho<>baka', 'chinco<>manco'] b = ['boku', 'kimi'] c = [] X = 0 for i in a: c += [{}] Y = 0 for f in i.split('<>'): c[X][b[Y]] = f Y += 1 X += 1 これだとX,Yがなんだか汚らしいのですが、なんとか綺麗にできませんか?
a = ['aho<>baka', 'chinco<>manco'] b = ['boku', 'kimi'] aa = [s.split("<>") for s in a] c = [dict(zip(b, ai)) for ai in aa] こんなのはどうだろう
for X, i in enumerate(a): c += [{}] for Y, f in enumerate(i.split('<>')): c[X][b[Y]] = f とか
c = [dict(zip(b, i.split("<>"))) for i in a]
('<>') かえるさんこんにちは。
>>164 for i, X in zip(a, range(len(a))):
c += [{}]
for f, Y in zip(i.split('<>'), range(len(i.split('<>'))):
c[X][b[Y]] = f
ていうかIDLEはLinuxでも使えるだろ。 ほとんどのディストリでは標準インストールされてないけど。
python入ってれば、 $ python -m idlelib.idle & でidleが立ち上がると思う
>>164 CSV -> Database みたいな用途?
だったら多分、辞書よりnamedtupleの方が扱いやすい。(2.6以降)
a = ['AAA<>BBB','CCC<>DDD']
b = ['A', 'B']
from collections import namedtuple
record = namedtuple('record', b)
delimiter = '<>'
maxsplit = len(b) - 1
c = [record(*x.split(delimiter, maxsplit)) for x in a]
d = [x._asdict() for x in c] # 辞書に変換 if you needed a dict
len(i.split('<>')) -> i.count('<>') zip/splitの組み合わせは、splitにmaxsplitを指定しないと、 想定しないデータ('<>'の数が異なる)を受け取った場合、 末尾のデータを失う可能性がある。 namedtupleの場合、 maxsplitを指定しなければ要素数が異なる場合TypeErrorが投げれる。 2.5以前なら、namedtupleをbackportするか レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。
適当な class に hoge ってインスタンス変数があるかどうかって どうやって調べるんでしたっけ? try: x = myclass.hoge() except: pass なんてやってるけど,if myclass.exists("hoge") みたいな感じの 何かがあるんでしたっけ?
hasattr(myclass, "hoge")
myclass はクラス?それともインスタンス? new style classの場合は、そのクラス,親クラスの__slots__を辿る。 old style classの場合は、無理。myclass.hogeがあるとしたら、それはクラス変数。 instanceなら hasattr(obj,'hoge') and not isinstance(getattr(obj,'hoge'),types.MethodType)
あ インスタンスのつもりでした なので hasattr が探していたものでした thx です
178 :
デフォルトの名無しさん :2009/01/15(木) 23:29:17
WAVE DASH - FULLWIDTH TILDE問題 に対応するライブラリとかない?
179 :
デフォルトの名無しさん :2009/01/15(木) 23:42:29
なにそれおいしいの?
180 :
デフォルトの名無しさん :2009/01/16(金) 00:12:44
独断と偏見で選ぶ血液型別おすすめスクリプト言語 A型 Python B型 Perl O型 Ruby AB型 NASM
独断と偏見で選ぶ血液型別おすすめスクリプト言語 A型 PHP B型 ひまわり O型 C# AB型 SmallTalk
>>180 B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!
PHPが好きなO型です。 最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!
185 :
161 :2009/01/16(金) 03:03:39
188 :
デフォルトの名無しさん :2009/01/16(金) 10:39:51
>>182 同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。
Haskellはスクリプト言語じゃねえだろ
>>185 このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ
A型はJavaじゃね?型宣言とかしたそう。 B型はマンプス。 AB型がPython。宣言はしないけど、型にうっさいという O型はC。
>191 一応インタプリタもあるでよ
日本限定でいえば 人口比的にAB型がPythonだな 俺もAB型だし A型はJavaScriptでいいよ
その年の、ある月の日数を取得するにはどうすればいいんでしょうか たとえば、2019年の2月の日数は○○日みたいな感じのです
>>> from datetime import * >>> (date(2008, 3, 1) - date(2008, 2, 1)).days 29 >>> (date(2009, 3, 1) - date(2009, 2, 1)).days 28
calendar.monthrange
199,200 >>>> 越えられない壁 >>>> 198
>>149-156 結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな
204 :
デフォルトの名無しさん :2009/01/16(金) 21:07:10
その年の、ある月の末日を取得するにはどうすればいいんでしょうか たとえば、2000年の2月の末日は28日みたいな感じのです
206 :
デフォルトの名無しさん :2009/01/16(金) 22:36:49
vimじゃん
vimだろ
俺AB型だからPythonに惹かれたのか。
どう見ても vim だな。
gvimだな
俺O型だけど
>>214 このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない
これビットマップフォントだぞ
はあ?かっこいいといってるだろ。 なにこれ?
はあ?
うんこレンダリングフォント ulf
>>206 1-6行目不明
7行目以降
try: host,frm,to=sys.argv[1:4]
except ValueError:
print 'Usage: %s <host> <from> <to>' % (sys.argv[0])
sys.exit(1)
print 'Connecting to %:25 ...' % (host)
sock = socket.socket()
try: idx = host.index(':')
except ValueError: addr = (host, 25)
else: addr = [host[:idx], int(host[idx+1:])]
sock.connect(addr)
print 'Connected'
1-6行目わかる?
import socket import sys あとコメントが数行入って終了じゃないか
本物のハッカーならGPLが書いてあるはず
223 :
デフォルトの名無しさん :2009/01/17(土) 07:23:49
>>222 本物のハッカーの多くは、GPLみたいな自由度の低い
ライセンスは採用しないよ。
彼等は単に何も書かないか(こっちの方が多い)、
MITやBSDライセンスにしてることだろう。
224 :
デフォルトの名無しさん :2009/01/17(土) 07:26:49
25って決め打ちなんか
print 25のとこおかしいね。
これで女子高生にvim使いが増える!
>>226 元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね
1行目は #!/usr/bin/env python だと予想。
1. #!/usr/bin/env python 2. '''hogehoge 3. fugafuga 4. ''' 5. import socket 6. import sys でFA?
1. #!/usr/bin/env python 2. # -*- coding: hoge -*- 3. 4. import socket 5. import sys 6.
PEP8守ってないから訓練されたPythonistaじゃないな
パイソニスタじゃなくてパイソニアンがいい
Pythonista, Pythonian, Pythonese, Pythonist, Pythoner どれでも好きなのを選ぶといい
236 :
デフォルトの名無しさん :2009/01/17(土) 19:06:40
日本語なら「Py使い」でいいでしょ。
お、py使い
訓練されてないのは、盲py
PEP8守って書き直すとどうなりますか
240 :
38 :2009/01/18(日) 16:23:33
へんじがない、ただのぱいそにすたのようだ
242 :
241 :2009/01/18(日) 22:59:26
PEP3じゃなくてPEP8でした
geditかこれ
ただものじゃないEmEditorです
どうすればいいですか?
一見して
>>241 のどこがヘンなのかわからなかったw
Lispならカッコは右下に連打するだろうな、とは思ったが……
一行79文字縛りがキツい、という話?
はい…
>>241 正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?
入れ子のre.subの呼び出しを、複数の文に分ければいいと思うよ x = re.sub(a, re.sub(b, c, d), x) みたいなのを y = re.sub(b, c, d) x = re.sub(a, y, x) と書く どうせ一行に収まらないのなら、入れ子で書いても読みにくくなってるだけでしょ 「流れるインタフェース」でもないのだし
まともな回答はありません‥
)に違和感
>>241 うわっ、汚い。。。
普通は re_subs みたいな関数書いて、順にre.subが適用されるようにする。
あと、そのエディター酷いね。。色付けすらちゃんとされてないじゃん。
254 :
241 :2009/01/19(月) 04:50:38
>>254 そのぐらい自分で書けないと。
初心者レベルの難易度だよ。
>>255 あのー、かんすーお願いします‥
なぜPythonスレの人たちはレベル低いのだろう
お前のレベルが低いだけ
お前のレベルが低いだけ
>>256 知能低いのかね。小学生でも書けそうな関数だとおもうが。
あの、カンスゥーまだですか・・・?
261 :
デフォルトの名無しさん :2009/01/19(月) 18:07:26
262 :
デフォルトの名無しさん :2009/01/19(月) 18:07:44
263 :
デフォルトの名無しさん :2009/01/19(月) 18:08:51
264 :
デフォルトの名無しさん :2009/01/19(月) 18:23:11
>>1 の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
>>1 の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
>>1 の和訳チュートリヤルに嘘ばっかり書いてあるな
print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
267 :
デフォルトの名無しさん :2009/01/19(月) 18:35:47
初心者っていきなり 3 触るの?
最新版にβとつければ初心者はさわらないかもね
Python初めて1週間 3.0→2.3.4jp→2.6.1→2.5.1
2.5.1→2.6.1→3.0→2.5.1→2.6.1 printが強制的にカンスゥーになってたり rangeがオブジェクト返すようになっててちょっと困惑するんだよね
printは自発的に関数になったと風の便りに聞いたよ…
#2.6 x = range(100) #3.0 x = [i for i in range(100)]
list(range(100))
結構変わったんだな。3は。
>>273 3はなんだかちょっと面倒だなって気がしてきた
志村!
278 :
デフォルトの名無しさん :2009/01/20(火) 07:10:13
あのー、回答待ってるですがまだですか? パイソンのスレッドって馬鹿しかいないなー
rangeでリストを作るなんて滅多にしないだろうに。
[i for i in range(100)] に必死で突っ込むひとまだですか?
ところで、2.6って2.5に対して完全に上位互換? 2.5用のライブラリで2.6で動かなくなったのってある?
>>281 基本的には 2.5 -> 2.6 では減っているものはない。
The *** module has been deprecated for removal in Python 3.0.
という形で 3.0 でなくなる予定のライブラリは -3 オブションで警告がでるのみ。
実際に標準ライブラリから外されるのは 3.0 から。
但し、細部では各ライブラリのバージョン・アップによる変更があるので、
ライブラリ自体が動かなくなったものは知らないが、# >>> import test.autotest を参考に。
それを使ったコードの方で修正が必要なものはあるかもしれない。
>>206 #!/usr/bin/env python
# -*- coding: ascii -*-
import socket
import sys
try:
host, frm, to = sys.argv[1: 4]
except ValueError:
print "Usage: %s <host> <from> <to>" % (sys.argv[0])
sys.exit(1)
print "Connecting to %s:25 ..." % (host)
sock = socket.socket()
try:
idx = host.index(':')
except ValueError:
addr = (host, 25)
else:
addr = (host[:idx], int(host[idx + 1:]))
sock.connect(addr)
print "Connected"
284 :
◆TINKO/J0J6 :2009/01/20(火) 16:54:58
import tinko
285 :
◆UNKOVIP9RM :2009/01/20(火) 16:56:15
import unko
unkoはexportするものだろ
from anal export unko
自然数k,p,qについて k=mp+nq(m,nは「0以上の整数」)を満たす(m,n)の組の数をv(k)とするとき p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです どのように書いたらいいですか?
289 :
◆UNKOVIP9RM :2009/01/20(火) 17:58:02
p=3 q=7 t=0 u=0 for k in range(1, 101): v=0 for m in range(k/p+1): if (k-m*p)%q == 0: v+=1 print 'v(%d)=%d\n' % (k, v) u+=v if v: t+=1 print 'total %d, %d\n' % (t, u)
v = lambda k, p, q: \ [(m, n) for m in range(k/p + 1) for n in range(k/q + 1) if k == m * p + n * q ] for k in range(1, 101): print k, '->', ', '.join(map(str, v(k, 3, 7)))
292 :
291 :2009/01/20(火) 18:13:44
あー計算量的に無駄なのか まあいいや
>>> p,q=3,7 ; Max=101 >>> for k in range(Max): print k, len(filter(lambda x:(k-x)>=0and(k-x)%q==0, range(0,Max,p))) ... 0 1 1 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1
すまん、こうだった >>> p,q=3,7 ; Max=101 >>> for k in range(Max): print k, len(filter(lambda x:(k-x)%q==0, range(0,k+1,p))) ... 0 1 1 0 2 0 3 1 4 0 5 0 6 1 7 1 8 0 9 1 最後の len(... 以降が v みたいなもん、
k=0は蛇足です
>>289 -
Thank you so match.
p,q,d=3,7,100 for k in range(1,d+1): print k,'->',','.join(map(str,[(m/p,(k-m)/q) for m in filter(lambda x:(k-x)%q==0, range(0,k+1,p))])) こうですか わかりません
>>283 ありがとうございました
なるほどw
python的に解くとどうなりますか? 3^(3^3)の一の位の数字は? 7^(7^7)の一の位の数字は? 13^(13^13)の一の位の数字は? 17^(17^17)の一の位の数字は? n^(n^n)の一の位の数字は?
304 :
デフォルトの名無しさん :2009/01/20(火) 20:30:34
pythonを学習しようかと考えていますが、巷で出回っているフリーの(GUI)ツール類 などはCなどで書かれていると思いますが、ptyhonでも同様のことができますか? そこまで大規模なツールではなく簡単シンプルなツールです。 本屋でちょっと読んだ参考書にはwindows用のフォームやボタンの配置などが 書かれていなかったので、CUIのプログラミングだけかと…
Tkinter, wxPython, pywin32などでぐぐれ
そんなことないですよ
628 名前:デフォルトの名無しさん :2009/01/20(火) 20:10:12 VB6の代わりにならないかな VB6ユーザーには、Delphiは難し過ぎるみたいだし PythonにVB並のRADツールを備えた統合開発環境があればいいんだけど 629 名前:デフォルトの名無しさん :2009/01/20(火) 20:20:45 そこでIronPythonですよ。 630 名前:デフォルトの名無しさん :2009/01/20(火) 20:30:35 UbuntuではNativeで動き WindowsではVMで動くPythonキボンヌ!
>>288 BASICでクソプログラム見せられたらやっぱPythonできれいに書きたくなるよね。
311 :
310 :2009/01/20(火) 21:01:43
俺はIIの最後で2点と統計で2点落としちまったぜ
from collections import defaultdict p = 3 q = 7 d = 100 answer = defaultdict(int) for m in xrange(d / p): for n in xrange(d / q): k = p*m + q*n if k > d: break answer[k] += 1 for k in range(d+1): print k, answer[k]
>>303 from itertools import repeat
def _f(n):
def _mul(n, m):
return ((n % 10) * (m % 10)) % 10
def _pow(n, m):
return reduce(_mul, repeat(n, m-1), n)
return _pow(n, _pow(n, n))
315 :
314 :2009/01/20(火) 22:39:22
間違えた。_powの第二引数は一の位だけじゃ駄目だ。
うむ
pow(n, pow(n, n), 10)
>>> pow(3,pow(3,3),10) 7 >>> pow(7,pow(7,7),10) 3 >>> pow(13,pow(13,13),10) 3L >>> pow(17,pow(17,17),10) 7L あってる?
あってるけど、 アルゴリズム的には n が大きいときの pow(n, n) が課題。
遅いって言っても、1000ぐらいまでなら一瞬で出るぞ >>> i=1 >>> while 1:print i,pow(i,i**i,10);i+=1 ... 1 1 2 6 3 7 4 6 5 5 6 6 7 3 8 6 9 9 10 0 11 1 12 6 13 3 14 6 ... ... ... 1197 7 1198 6 1199 9 1200 0 1201 1
321 :
317 :2009/01/21(水) 01:57:21
nのべき乗の1の位が、ある周期で循環することを利用して指数を小さくしてみた。 # coding: utf8 def cycle(n): i = n*n % 10 lst = [i] while n != i: i = i*n % 10 lst.append(i) return lst def main(): cycles = [cycle(i) for i in xrange(10)] clen = [len(item) for item in cycles] for i in range(10): print i, cycles[i] print "" for n in xrange(1, 1000): cl = clen[n%10] nn = pow(n, cycles[n%10][n%cl]) nnn1 = pow(n, nn, 10) print n, nnn1 if __name__ == '__main__': main()
ほぼ同じことだけど、自分もやってみた、これだと、googol(=10**100)ぐらいまでは一瞬 def f(n): c = cycle(n,10) return pow(n, pow(n, n, c) or c, 10) def cycle(n, modulo): s=set() ; x = n % modulo while x not in s: s.add(x) ; x = x * n % modulo return len(s) for i in range(7): print i, f(10**10**i+i) $ python 303.py 0 0 1 1 2 6 3 7 4 6 5 5 6 6
>>321 そこまでたどり着けば実はpow使わなくても答え出てるんだけどね
13=10+3だから、13^nの1の位は3^nの1の位と同じで4個周期。 13=12+1だから13^13を4で割った余りは1。 13^(13^13)の1の位は3^1の1の位と同じなので3。 17=10+7だから、17^nの1の位は7^nの1の位と同じで4個周期。 17=16+1だから17^17を4で割った余りは1。 17^(17^17)の1の位は7^1の1の位と同じなので7。
クソ本が改訂してクソでなくなるのかな?
まあ評価は見てからですかねー
恥の上塗りというわけですね。
330 :
デフォルトの名無しさん :2009/01/21(水) 11:20:55
俺もウェブの無料チュートリヤル翻訳して金稼ぎたい
ライブラリレファレンスの和訳更新・改良を ガンガンやってくれるならお布施くらいはするでよ?
332 :
◆UNKOVIP9RM :2009/01/21(水) 11:53:01
>>312 惚れた
惚れた
惚れた
できれば結婚してくれ
333 :
◆UNKOVIP9RM :2009/01/21(水) 11:54:09
周期が4の公約数になるのを利用するとこれでもok? pow(n % 10, (n & 3) or 4, 10)
335 :
◆UNKOVIP9RM :2009/01/21(水) 11:59:03
>>> import
>>329 >>> print (329.star())
"星3つ"
>>328 はじぱいの癖に5040円って翻訳書のはじ
337 :
◆UNKOVIP9RM :2009/01/21(水) 12:18:59
338 :
デフォルトの名無しさん :2009/01/21(水) 12:55:26
>>334 >>> [pow(n % 10, (n & 3) or 4, 10) for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]
n=2と18が血がウっぽい
0 1 2 3 4 5 6 7 8 9 LSD
1 1 4 4 2 1 1 4 4 2 cycle
>>334 >>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][n%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 4, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 4, 9]
これで行けるかと思ったがだめだった
>>325 の余りを出してるのは 3, 7 の時だけうまくいくのかな
少なくとも 2 のときはだめみたい(なんか勘違いしている?)
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,),
... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)]
>>> [c[n%10][(n**n)%len(c[n%10])-1] for n in xrange(20)]
[0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]
n**n をもっと計算量減らせるはず
n=2 (n**n)%4=0 n%4=2 ←これが違う n=8 (n**n)%4=0 n%4=0 n=18 (n**n)%4=0 n%4=2 ←これが違う nが偶数のときは常に(n**n)%4=0 だからこれでよさげ >>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,), ... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)] >>> [c[n%10][(n%len(c[n%10]) if n%2 else 0)-1] for n in xrange(20)] [0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]
341 :
デフォルトの名無しさん :2009/01/21(水) 13:31:21
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,), ... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)] >>> [c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(20)] [0, 1, 6, 7, 6, 5, 6, 3, 6, 9, 0, 1, 6, 3, 6, 5, 6, 7, 6, 9]
>>> c=[(0,), (1,), (2,4,8,6,), (3,9,7,1,), (4,6,), ... (5,), (6,), (7,9,3,1,), (8,4,2,6,), (9,1,)] >>> lista=[c[n%10][(n%2)*n%len(c[n%10])-1] for n in xrange(2000)] >>> listb=[pow(n, pow(n, n), 10) for n in xrange(2000)] >>> m=0 >>> for k in xrange(len(lista)): ... if lista[k] == listb[k]: ... m+=1 ... >>> m 2000
0, 1, 6, 7, 6, 5, 6, 3, 6, 9 と 0, 1, 6, 3, 6, 5, 6, 7, 6, 9 を交互に繰り返してるだけだね 2, 4, 6, 8 が全部 6 になってる しかも 3, 7 以外はずっと固定なんだ もっと簡単な式になりそうw
正規表現で日本語にマッチする方法はありますか? a = 'あいうえお、亜意卯得汚' re.sub('\\x', '', a) だと3.0はunicodeエラー、2.xはエスケープシーケンスに\xなんてないと言われます
2.xなら a = u'あいうえお、亜意卯得汚' でうまく行くと思うけど
re.sub(r'\\x', '', a)
a = u'あいうえお、亜意卯得汚' re.sub(u'[\u1000-\u9999]', '', a)
re.sub(ur'\\x', '', a)
>>> a=u'あいうえお、亜依鵜絵緒' >>> print repr(re.sub(ur'[\u1000-\u9999]', u'', a)).decode('unicode_escape') u'鵜' >>> a='あいうえお、亜依鵜絵緒' >>> print repr(re.sub(r'\x81', '\x92', a).decode('cp932')).decode('unicode_escape') u'あいうえお但亜依鵜絵緒'
>>345 ユニコードブロックである程度分けることができるが
記号とかもあるし
漢字系はCJKごった煮ブロックとかに入っているし
結局「日本語とは何か」という話になる
が、単に「非ASCII文字」という意味なら
[\u0100-\uffff]とかでマッチさせればいいよ
>>> a = u'abcあいうえおdef亜意卯得汚ghi' >>> print re.sub(ur'[\u1000-\u9999]', '', a) abcdefghi
353 :
351 :2009/01/21(水) 14:42:32
ああごめん、[\u0080-\uffff]だな まあ目的から言ってLatin1が入ろうが入るまいがあまり関係ないとは思うが
>日本語とは何か うまくできたら日本語ページだけぐぐって欲しいのに 中国語まで検索するグーグルに売ってやれ。
>>345 力技だけど、日本語の文字をずらーっと列挙して日本語の1文字にマッチする正規表現を作ったらどうかな。
ためしに日本語の仮名漢字から成る正規表現を自動生成してみた(Python 3.0 使用)。
[一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠ぁ-ん゛-ゞァ-ヶ・-ヾ]
みたいな長大な正規表現になったけど自動生成もマッチングも十分速いっぽい。
# -*- coding: cp932 -*-
import re
def get_japanese_charset_ranges(enc="cp932"):
unicode_ranges = [
range(0x4e00, 0xa000), # U+4E00 - U+9FFF CJK Unified Ideographs
range(0x3040, 0x3100), # U+3040 - U+30FF Hiragana and Katakana
]
chars = []
for r in unicode_ranges:
for i in r:
try:
chr(i).encode(enc)
except UnicodeError:
continue
chars.append(i)
buf = []
i, end = 0, len(chars)
while i < end: start = i while i + 1 < end and chars[i] + 1 == chars[i + 1]: i += 1 if start == i: buf.append(chr(chars[start])) else: buf.append(chr(chars[start]) + "-" + chr(chars[i])) i += 1 return "[" + "".join(buf) + "]" japanese_charset_ranges = get_japanese_charset_ranges() #print(japanese_charset_ranges) #print(len(japanese_charset_ranges)) re_japanese = re.compile(japanese_charset_ranges + "+") text = "foo漢字barテストtest" print(re_japanese.findall(text)) print(re.findall("[\u4e00-\u9fff\u3040-\u30ff]+", text)) # 別解 実行時に自動生成するのは無駄だから、適当なモジュール名(例えば unicode_ranges) に ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠" ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ" みたいな文字列を定義しておいて import unicode_ranges re_japanese = re.compile("[" + unicode_ranges.ja_kanji + unicode_ranges.ja_kana + "]+") みたいに使うといいかも。この手のモジュール、既に誰か作ってるんじゃないかなー。
別解があるのに巨大正規表現を作る意味はあるんでしょうか?
>ja_kanji = "一-丁七万-下不-与 (・・・中略・・・)齶-齷龍龕龜-龝龠" >ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ" >みたいな文字列を定義しておいて japanese_charset_ranges = get_japanese_charset_ranges() のところで モジュールがあればそっちをimport 無ければget_japanese_charset_ranges()を実行 するように作っておけばよさそうですね
モジュールがあればそっちをimport 無ければget_japanese_charset_ranges()を実行(と同時にモジュール作成) するように作っておけばよさそうですね
python でファイルの行数を知りたいときに特に正解なやり方ってありますか?
362 :
デフォルトの名無しさん :2009/01/22(木) 10:53:24
>>> a=[['']*3]*3 >>> a [['', '', ''], ['', '', ''], ['', '', '']] >>> a[2][1]='a' >>> a [['', 'a', ''], ['', 'a', ''], ['', 'a', '']] deepcopyじゃないからこうなるのは分かるのですが、 deepcopyしたいときにはどう書けば良いのでしょうか? a=[['']*3, ['']*3, ['']*3] しかないですか?
>>361 >>> a='ag cee\nat eatunasdg\nasd\ npoig ausd laert\na;sgu asti'
>>> len(a.split('\n'))
4
a = [[''] * 3 for i in range(3)]
a.count('\n')+1
読み込み中なら。
for idx,line in enumerate(open("foo.txt")):
lineno = idx+1
総行数
print len(list(open("foo.txt"))) # ファイルの内容全てをリストに取り込むため効率悪
print sum(1 for _ in open("foo.txt"))
print reduce(lambda counter,line: counter+1, open("foo.txt"), 0)
下2つは、行辺りの長さが大きい時の読み込みの効率に改善の余地あり。
対象のファイルによっては、wc -l 呼んだ方が早いことも。
>>362 a = [['']*3 for _ in range(3)]
↓行長やファイルサイズがデカくてもいいように書いてみたが 面倒くせ def linecount(file): with closing(open(file, 'rb')) as fp: line = [ None ] def iterread(): for x in iter(functools.partial(fp.read, 8192), ""): line[0] = x yield x nl = sum(s.count('\n') for s in iterread()) if line[0][-1] != '\n': nl += 1 return nl
370 :
369 :2009/01/22(木) 13:03:42
あー空ファイルだとバグるか まあいいや
371 :
369 :2009/01/22(木) 13:09:49
よく考えたらわざわざgenertor使う意味もねーし……アホか俺は def linecount(file): with closing(open(file, 'rb')) as fp: nl, line = 0, None for x in iter(functools.partial(fp.read, 8192), ""): line = x nl += x.count('\n') if line and line[-1] != '\n': nl += 1 return nl
>>371 どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらCで書いた方がよくないか?
373 :
◆UNKOVIP9RM :2009/01/22(木) 14:30:43
>>371 どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらアッセンブッラで書いた方がよくないか?
375 :
◆UNKOVIP9RM :2009/01/22(木) 16:24:45
>368
URLのは、書き方は違うけど
>>367 の一番下のに相当。
普通はこれで十分だけど、バイナリファイルを間違って読み込んでしまった場合や、
プログラムが生成したファイルなんかだと行の長さがとても長い場合があるので、
そういった例外的なケースへの対応が
>>371 実装方法は幾通りかあるけど、大筋はこんな感じ。
- read(size), readline(size)等でのバッファ長を指定しての読込。
- 改行文字 CRLF,CR,LF をカウント。
>371
fileオブジェクトは、__enter__,__exit__属性持ってるのでclosing不要なはず。
>> 376 メモリマップトファイル使えば? import mmap, sys with open(filename, 'rb') as f: print sum(1 for c in mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) if c == '\n')
mmap()は速いが、byte単位の比較をCのコードではなくPythonがやることになるから そんなに速くない上にサイズ制限ができるだけに見える
379 :
378 :2009/01/22(木) 17:45:05
count() <= Cの実装が数える if c == '\n' <= Pythonインタプリタレベルが比較を各バイトで行う という意味ね
>> 378 64bit環境になってからアドレス空間については無頓着になってたよ。 Cの実装うんぬん、ということなら、 m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) count = 0 while m.readline(): count += 1 みたいにやれば良いと思う。
readline()使うぐらいなら
>>367 でよくね?
>> 381 そういわれれば。うーん。 m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) count = 0 index = m.find('\n') while index >= 0: count += 1 index = m.find('\n', index + 1) m.close() だんだん辛くなってきた。
timeit.Timer('len(open("changelog").readlines())').timeit(1000)/1000
で測ってみた。ファイルはperlのchangelogで、85000行ぐらい
0.0115 os.popenでwc
0.0141
>>371 のchunk
0.0383
>>368 の一番下(enumrateいらないよね)
0.0393 一行目
0.0430
>>367 のsum
0.0541
>>367 のreduce
0.0557
>>380 のmmap
0.9
>>377 のmmap
pythonは2.5
なんという悲しい結末w
他のプロセスを起動するオーバヘッドを考慮に入れても Cには勝てなかったかw
まあ小さいサイズならpopen()のオーバヘッドのほうが相対的に効いて来るかな
>>387 頭にpsyco.full()つけた編
0.0117 wc
0.0140 chunk
0.0219 forでcount
0.0296 mmapでreadline
0.0327 readlines
0.0601 sum
0.1082 reduce
0.9691 mmapで\nを探す
あとlen([l fo l in open(file)])ってのも試してたんだが、
0.05から0.0307に高速化
reduce, map, lambda 系は psyco すると遅くなるらしい
len([_ for _ in open(file)]) にするとさらに速くなるんかな
テキストファイルに関していえば、順当な結果だと思うけど lenやバッファサイズ指定のないreadline(含む for _ in open(...))を利用するものの速度は、 環境(メモリ)や読み込む対象のファイルに依存するので、 巨大なバイナリファイルでも試してみてメモリの使用量も併せて較べてみよう。 メモリ使用量が一定で、計算量が ファイルサイズ/バッファサイズ に比例になっていれば及第点。 mmapのコードは、>377は単純にpythonでのループ回数が多くなるのが問題だけど、 大域変数の参照(LOAD_GLOBAL)等、繰り返し処理する上での不利な点が多いので、 ベンチマーク対策としては、m.findをローカル変数に代入や、partialを使う等、もう少し工夫の余地在。
グローバル変数を使うとスパゲッティーコードになると聞いたんですが import os hensu = os.environ['Path'] def main(): print hensu sp() def sp(): print hensu.split(';') と import os def main(): print os.environ['Path'] sp() def sp(): print os.environ['Path'].split(';') だと前者の方が変更がかなり楽になると思うんですが…
def main(): hensu = os.environ['Path'] print hensu sp(hensu) def sp(hensu): print hensu.split(';') で何か不満でも? グローバル変数を使うと ・ 処理の汎用性が低下し、融通が利かなくなる ・ 変数を変更できる範囲が大きく、デバッグ範囲が広範になる などの問題がある。
>>393 他のスクリプトでも使おうと思い main() と sp() をコピペ
→ hensu がないぞと怒られる
死ぬほど不便じゃないか
そういえばurllibとかグローバル変数使ってたね
>>394 は撤回します
>他のスクリプトでも使おうと思い main() と sp() をコピペ グローバル変数使ってる方がコピペ面倒だろ
mainとsp()コピペすればいけるんじゃないの?
>>392 うん、global変数は
[ globals().__setitem__('global_%d' % n) for n in range(100) ]
とかで書き換えられるが
locals()はリードオンリーだし
global以外の自由変数にはPython2.xでは代入できないし
osとかmainとかspってglobal変数だよな
どんどん使うといいと思うぞ
>>392 至ってまともな反応だと思うよ
でも、グローバル変数は基本的に使っちゃ駄目って言われてる。
理由は
>>393 の言うとおりで、それぐらいのソース量だとパッと見ればどこに
定義されてて、どこでどんな風に使われてるか分かるけど、ある程度のソース量
になってくると分からなくなってくるのね。
で、
>>393 のような考え方が主流になって、さらにオブジェクト指向っていう考え方
が出てきた。
利便性で言えば確かにグローバル変数は使いやすいけど、バグを生む原因になり
安いから使わないほうが良いよってこと。
その為のオブジェクト指向。クラスにする事で、 変数の範囲を絞った上で、異なる関数から同じ変数を参照出来る。 class App(object): def __init__(self): self.hensu = os.environ['Path'] def main(self): print self.hensu self.sp() def sp(self): print self.hensu.split(';') App().main() 基本的に、グローバルに置いても許容されるのは、 importしたモジュールや、設定などの定数のみ。 どうしても必要な場合は、 グローバル変数の変数名は大文字にする、もしくはprefixをつけて他の変数と区別。 利用する関数内で global hensu の様に宣言しよう。(推奨)
402 :
デフォルトの名無しさん :2009/01/22(木) 23:48:38
1画面に収まるようなプログラムであればグローバル変数を使う
ほうがプログラムが簡潔になる事はよくある。グローバル変数が
推奨されない理由は、大きな規模のプログラムでは全ての変数の
状態管理をするのは難しい事、それと変数名が衝突してしまうな
どの不都合があるため。
>>392 はC言語でそれなりの規模のプログラムを全てグローバル変
数で管理して書いてみるといいよ
いやというほど理解できると思うよ
403 :
3q1 :2009/01/23(金) 00:01:52
>>393 ひきすうが多くてややこしくなったんですが…
>>394 返り血がある関数等はもちろん引数を使ってますが
普通の関数ではグローバル変数の方が楽だと思うんですが…
>>401 クラスだと、
hoge = clas()
hoge.hoge()
print hoge.hoge_value
みたいになって気持ち悪いんですが仕方ないのですかね
後、globalは関数内でのみ適応されるのでしょうか?
うん、global変数はショートコーディングの友だからどんどん使うといいぞ
>グローバル変数 一番の問題は、多用したときにすぐ人間の理解の限界を超えてしまうこと。 他人に読ませる気のないホビープログラミングなら好きなだけ使えばいいと思うよ。
頼むからSingletonだとかいって同じクラスのインスタンス3つも グローバル変数で定義するのやめてくれ。 Singletonはグローバル変数の免罪符じゃないからっ!
Singletonはグローバル変数だよな。ぶっちゃけ。 ただ、関数を通じてアクセスする分、比較的管理はしやすい。
>>392 ってグローバル変数というより、定数をプログラム全体で使いたいんじゃないの?
409 :
401 :2009/01/23(金) 00:48:11
>>403 変数やクラスの名前に適切な名前を付けることで、わかり易くなるよ。
グローバル変数のスコープは、Pythonの場合はモジュール(=ファイル)内
global宣言が有効なのは関数内のみ。一応、突っ込んで書いておくと、
global宣言はグローバル変数を書き換える場合のみ必要で、参照だけなら不要なんだけど、
(global変数の初期化を関数内で行う時等に利用)
と、ここまで書いて気づいた。
global宣言は、変数名衝突時に関数内からグローバル変数を変更するリスクを引き込むので不用意に宣言しちゃ駄目だ。
関数内でどれがグローバル変数か宣言してると読みやすいと思ったんだけどなぁ。
(
>>401 の最後の行は取消 m(_ _)
逆に言うと、(Pythonの場合)global宣言なしに不用意な名前衝突によるグローバル変数の書換は起こらないので、
数値・文字列・タプル等の参照だけなら、問題ないかなって気がしてきた。(実質、定数としての利用)
410 :
392 :2009/01/23(金) 00:48:41
>>408 CGI等で、ファイル名のぢctをプログラム全体で使ったり
クエリをぢctにしてプログラム全体使うのは
グローバル変数って言わないのですか?
411 :
401 :2009/01/23(金) 01:12:48
>>410 Pythonでは定数が無いので変数を定数として使う慣習がある。
コード上はどちらも変数なんだけど、役割によって分類すると
プログラム内で初期化以降変更されないと約束されているなら定数。
頻繁に変更される・変更される可能性があるなら変数。
>>394 コードの再利用は、コピぺせずにimportして利用しよう。
>>411 globalは、コピぺせずにimport globals.pyして利用しよう。
>> 390 普通の変数と _ ってメモリの使い方が違うの?
>>403 グローバル変数を使わない方が分かりやすいと感じない人は
結局どんな条件でも分かりやすく書けないよ。
問題を小さな複数の問題に分割できないってことだから。
416 :
デフォルトの名無しさん :2009/01/23(金) 08:55:27
細かく分割し続けた先には何がある。馬鹿らしいと思わないかね!
全部自分でメンテをするという気概がありかつ ソース書いた時の約束事をずっと覚えていられるくらい 記憶力に自信があるのだったら問題ない
418 :
デフォルトの名無しさん :2009/01/23(金) 12:28:24
未だにlxmlを進めずBeautifulSoup進めるやつが理解できない。 どうしてもPurePythonじゃないとダメなら仕方ないが
pythonの場合、globalで修飾しないとグローバル変数は書き換えられないから定数として使う分にはアリなんじゃない? もちろん変数名は大文字で書いてさ
別に定数じゃなくても全然アリだろ Pythonのグローバル変数は結局のところモジュールのtoplevelの定義であって モジュール外部からの参照には名前修飾がいるし モジュールのtoplevelで定義されたclassだのdefだのは全部グローバル変数だし sys.argvだのsys.stdinだのsys.pathだのはグローバル変数だし グローバル変数使わずにPythonのコード書いてみろってんだよ
>>418 だって普通のxmlパーサは口うるさいんだもの
腐ってるhtml喰えるBeautifulSoupはどうしても重宝する
>>421 >>418 ではないが、lxmlは腐ってるHTMLも喰えるし
BeautifulSoupよりずっと高速だしElementTree互換のAPIに加えて
XPATHとかも使えてずっと高機能だよ
>>421 lxml.html.soupparser
424 :
421 :2009/01/23(金) 13:53:15
そうなんだ。少なくとも俺は単純に知らなかっただけ 次はlxml使ってみようと思う。あんまりxmlいじる機会ないけど
>>419 標準ライブラリを参考に、どういう所で使われているか適当にピックアップしてみた。
- モジュール外から参照されたくない場合 _ 接頭子をつける。(モジュール内プライベート)
- 定数。(数値、文字列、バージョン等のタプル、) 変数名は大文字で。
- キャッシュ等の用途に使う場合は、利用する関数の直前で宣言/初期化。(re.compileや辞書等)
- Singletonのインスタンス。生成するメソッドの前で宣言。変数名は _ prefix付き。
※ クラス変数にする、若しくは2.6以降ならクロージャ内に隠せる。
名前の衝突については、宣言なしに意図しない書き換えは起きないけど、
コードを読む時には混乱の元になるので、可読性の面で問題あり。変数名の運用ルールは必須。
>>420 Pythonの"グローバル変数"についてはその通り、通常、モジュール内toplevelの変数を指す事になるのだけど、
用途を無視して極論になってるよ。誰もクラス(class)やtoplevelでの関数(def)を使うなとは言ってない。
戒めるべきグローバル変数の利用は、一般に C言語等で言われているグローバル変数の乱用で、
グローバル変数を利用した関数間の値渡し等の、主にモジュール結合度の高いとされる利用法がそれに当たる。
Pythonに当てはめると、組み込み関数(__builtin__モジュール)が
どのモジュールからも名前修飾なしに使える、本当のグローバルと言う事になるけど、
通常の利用では__builtin__内を変更する事は、まずないので。そういった意味では、
モジュール内にスコープが限定される為、C言語程ナーバスになる必要はないかもしれない。
でも、比較的影響範囲が低いというだけで、用途を無視して積極的に使っていいかどうかはまた別の議論。
>>416 綺麗に構造化されたプログラムは、高い拡張性と変更に強い柔軟性を備える事になる。ソフトウェア品質の指標の一部。
>>419 PEP8には書いてなかったと思うんですが
定数名は大文字で書いていいのですか?
Pythonに定数なんて無いんだからどうでもいいよ
string.lowercaseなんかは大文字ではないね
>>426 PEP8に書いてるよ。
Constants
Constants are usually declared on a module level and written in all
capital letters with underscores separating words. Examples include
MAX_OVERFLOW and TOTAL.
もしかして、和訳に載ってない?>変数の命名規則、定数について
中の人はここの住人だったんだな
>>414 違わない。
リスト内包の細かな最適化では、mapにすると早くなるケースはある。
おまいらグローバル変数の恐ろしさを知らないんだ・・・ 名前修飾されてればいいとかそんなのどうでもいいんだよぅ 頭にg_でも付けてろっての。
そんな「構造化プログラミング」とか覚えたたてのボウヤみたいな 話はしてないから安心しろ
恥ぱい3立ち読みしてきた 恥ぱいは売ってなかった (売り切れたのかあるいは新刊を売るための書店の配慮なのか・・・) 恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし 恥ぱい3はpythonというかプログラミング自体の初心者向けなんだろうが 買いたいとは思わなかったしこれから始める人にも薦めたいとまでには至らなかった
2と3の比較・注意点とかを さっくりまとめてあるというわけでもないんかな?
恥ぱいは、言ってみればオナニー本だな。 Jython本に似てる。
Rubyとかに比べても日本語の本は少ないんだから無いよりはましかな もしかしたら俺の方がもっと良いのが書けるとか売れるのが書けるとか 思って後から日本語の本が色々出版されるようになるかもしれんし
>>439 恥ぱい3は python 知ってる人には不要だろうね
Jython 本は役に立たないw
恥ぱい3は初心者に少しは役に立つから Jython 本よりはお奨め
じゃあ俺らでpython本出版しようぜ。 俺から行くぜ。 もくじ
著者からのメッセージ
釈明
ドラッグすると動くアラビア文字 عکساولپیامآپدیتدانلودمنجررانشانمیدهد عکسدومزمانیستکهدکمهآپدیتلآپدیتاست عکسسومپیاممیدهدکهسروربهتران
google翻訳はアラビア語サポートしてるので、そこに入れてみたら、 ペルシア語は対応してませんと言われた。
>>441 >恥ぱい3は python 知ってる人には不要だろうね
ではどんな人に必要だというのだ。
知らない人じゃないのか?
3 から Python 自体始める人向け
なんでみんな未来の話してるの?
うわあああ吊ってくるううう
ここが事故現場ですか?
>>456 死因は事故ではなく自殺と断定されました。
OS再インストールしてeasy_installしたんですが みなさん普通何インストールしていますか? とりあえずPsycoとMakoとSQLAlchemyとsimplejsonを インストールしましたが何かお勧めありますか?
突然ですが
ttp://d.hatena.ne.jp/inopie/20080712/1215847602 にインスパイアされたのでPythonでもやってみた
import win32com.client
import re
s = win32com.client.Dispatch('SAPI.SpVoice')
vs = s.GetVoices()
voicename = ['DTalker_Taro', 'MSSam', 'LHKENJI', 'LHNAOKO']
voice = {}
for i in xrange(vs.Count):
v = vs.Item(i)
id = v.Id
print id
for n in voicename:
if re.match(r'^(.*)(%s)' % n, id):
voice[n] = v
print voice
s.Voice = voice['LHNAOKO']
s.Rate = 5
s.Speak(
u'これはPythonでSpeech APIを制御してしゃべらせています。どうでしょうか。', 1)
s.WaitUntilDone(30000)
s.Speak(u'二つ目の文です。', 2)
s.Voice = voice['MSSam']
s.Speak(u'This is sam.', 2)
s.Voice = voice['LHKENJI']
s.Speak(u'四つ目の文です。', 2)
わかる
>>459 easy_installで入れるのはlxmlくらいかな。
pygments,epydoc等は必要になったら入れる。source highlightとAPIdoc生成。
後は、定番 PIL,Numpy,wxPython,Twisted,ipython,
使わないけど pygame は毎回入れてしまう。
>>460 実行してみようと思って気づいたんだけど、
インデントが崩れたソースってどう修正すればいいのか
わからないね・・・
464 :
デフォルトの名無しさん :2009/01/24(土) 23:45:08
スレのhtmlソースにはスペース入ってる
>>463 ごめん
インデント崩れたとこだけ貼り直し
for i in xrange(vs.Count):
v = vs.Item(i)
id = v.Id
print id
for n in voicename:
if re.match(r'^(.*)(%s)' % n, id):
voice[n] = v
print voice
[space] ->
.
>>459 simplejsonって2.6以降標準なんじゃないっけ?
でインデントすると コピペしたときに 残らない?
残らねーよw
>>469 Yes. 名前は json で標準に入ったよ。
474 :
デフォルトの名無しさん :2009/01/25(日) 12:04:19
>>460 うちだと'LHNAOKO'と'LHKENJI'でKeyErrorが出たので、
全部'MSSam'にしたら声が出て来ました。ところが
日本語の部分が無視されて英語部分しか発声されません。
'LHNAOKO'と'LHKENJI'は、どこで入手されました?
477 :
デフォルトの名無しさん :2009/01/25(日) 12:59:37
>>475-476 ありがとうございます。!!!
Officeのセットアップ追加で「入力システムの拡張」
「音声」を選ぶとうまく行きました。
MSSamだと「Python」の発音は「パイソン」で正しかったのですが、
LHNAOKOだと「ぴちょん」になっててかわいいというかまぬけというか・・・
483 :
デフォルトの名無しさん :2009/01/26(月) 00:41:06
pythonの無料の統合開発環境でオススメありますか?(日本語化できるもの) OSはXPです PyScripterはバグが多くて使い物になりませんでした Eclipse+PyDevは重過ぎて使えません…
>>484 適当なPython対応を謳ったエディタを使った方がいいと思う。
SciTEが結構いい。メニュー英語だけど。 Editra にもう少しがんばってほしい。
統合環境厨が定期的に湧いてくるな…
最初っからIDE使うのはやめとけ
>>484 komodoEditorってのがあるよ
ただ、Eclipse程ではないけどこれも重い
Eric ...は、日本語化あったっけな? 普段日本語とか気にしないからわからん。 メニューが日本語であることがそんなに大事?
emacs、最強
最強はメモ帳だろメモ帳。何たってXPに組み込まれてるだけあってどこでも使える。
俺は普段linux&vimだけど。
ところでチラ裏だけれども、vimだとコマンドモードでpythonとかrubyを実行できるんだね。
:python import urllib; print urllib.urlopen("
http://www.google.co.jp ").read()
みたいな感じで
emacsだとリージョンを実行できたりしたよーな
Pythonやら無い奴が一番勝ち組
やらないか
>499 0:23
501 :
デフォルトの名無しさん :2009/01/27(火) 15:46:06
↑ruby使ってろクズ
503 :
デフォルトの名無しさん :2009/01/27(火) 16:05:16
foo = '0123456789A' >>> foo[3::6] '39' >>> foo[3::4] '37' >>> foo[3::3] '369' >>> foo[3::2] '3579' >>> foo[3::1] '3456789A'
504 :
デフォルトの名無しさん :2009/01/27(火) 16:07:27
foo[n::m] の意味は?
nはスライス開始のインデックス、 mはステップ。-だと逆方向からカウントしてく。 スライス終了のインデクスが指定されていないので、 文字列の一番最後までが範囲していされてる
508 :
デフォルトの名無しさん :2009/01/27(火) 17:12:16
本当のこと教えてください
あなたがすきです
>>505 のいうことはまったくちがう。
そもそも文字列でインデックスなんてありえない。
Cやってる奴ならわかるだろうけど。
>>510 Cやってる奴にとっては文字列=バイト列なんだから
インデックス最高とか思ってそうだが違うのか?
インデックスには乳が足りん
インデックスはおっパイ損
515 :
デフォルトの名無しさん :2009/01/27(火) 19:02:12
じゃあ本当のことを教えてください。
愛しているのはあなただけです
だめだぞおまいら。本当のこと教えちゃだめだぞ。絶対だぞ。
518 :
デフォルトの名無しさん :2009/01/27(火) 19:18:55
______ ___________ V _____ /::::::::::::::::::::::::::\ _ /::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \ |:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?黙ってろデブw |;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 | |::( 6 ー─◎─◎ ) q -´ 二 ヽ | |ノ (∵∴ ( o o)∴) ノ_ ー | | /| < ∵ 3 ∵> \. ̄` | / ::::::\ ヽ ノ\ O===== | :::::::::::::\_____ノ:::::::::::\ / |
519 :
504 :2009/01/27(火) 19:46:48
本当のこと教えてください
おまえにはまだ早い!
521 :
デフォルトの名無しさん :2009/01/27(火) 20:21:50
>>> foo = '0123456789' >>> foo[0:2:4] '0' >>> foo[0:4] '0123' >>> foo[0::4] '048' >>> foo[0::3] '0369' >>> foo = '0123456789ABCDEFGHIJKLMN' >>> foo[0::5] '05AFK' >>> foo[0::2] '02468ACEGIKM' >>> foo[0::6] '06CI' >>> foo[0::1] '0123456789ABCDEFGHIJKLMN' >>> foo[0::2] '02468ACEGIKM' >>> 結果は明らかだが、マニュアルに載ってる?
522 :
デフォルトの名無しさん :2009/01/27(火) 20:23:23
>>> foo[-1::-1] 'NMLKJIHGFEDCBA9876543210' >>> foo[-1:-1] '' >>> おもしれー
a = '0123456789' a[0:10:5] つまり 初め:終わり:倍数
e.gashira[2:50]
(^ω^;)
BASICのfor文 FOR i = 0 TO 10 STEP 5 〜 NEXT i
最近打ち合わせでは分かり切ったことは飛ばして話を進めているのに 知識として持っててあたりまえのことを質問する馬鹿が増えた
>>foo[3..-1] >>'32104294967295'
530 :
デフォルトの名無しさん :2009/01/27(火) 23:53:18
>>528 みんな気をつけろ!こいつRuby厨だ!
知識として持ってて当たり前のことってたとえば何だろう
上司の名前やら、役職や、部署の名前とか ほんとーに基本的なことじゃない?
535 :
デフォルトの名無しさん :2009/01/28(水) 01:47:48
>>> class E: gashira = '!!gappe mukatsuku!!' ... >>> e=E() >>> e.gashira[2:50] 'gappe mukatsuku!!'
>>538 そこはlist(map(ord, "abc"))みたいにlistとmap(filter)を使うなら
内包表記で[ord(i) for i in "abc"]としましょうってことじゃないの?
list ・ map = map
>>537 3.1早く出そうよって言ってるだけじゃないの?
3.1を早く出すのはいいと思う。 こうしとけば良かった!と思うところは普及しないうちに直した方がいい。
>541 3.0 は避けとくけど 3.1 になったら使ってみるかと これまたリリースノートも何も読まない人が大挙して来るかも (それが狙いとも言えるが) ところで ML がネタの欧州というか釣り堀に…
MLの流れに絡んでいる奴らはクソだよね。
にしおとかいうひとは、ネタっぽいどうでもいい話題には真っ先に食いつくな。 自分の評価を落としているとも知らず、おめでたいことだ。
>>544 twistedあたりでも使われてるzope.interfaceなんてのもあるし
欲しい奴は欲しいんでないの
俺は要らないけどな
つーかducktypingな時点で、isaを表現するのに継承使う必要もねーから
mixin的な実装継承しか使わん
はやくMLやHaskellのような代数データ型とパターンマッチをサポートして欲しい。 もうtupleでエミュレートするのに飽き飽きした。
あと標準のパーサジェネレータも。
元ネタはリアルDQNなのか本職の釣師なのか… > 美しくありません。@4620 っていうのならもっと美しく質問してほしいのだ
>>544 今時、抽象クラス機能のありがたみすら分からないのはどうかと…
NotImpementedを返させるだけでも特に困らなかったような気もする
>>552 >>544 ではないが、Javaとかならともかく、動的型でダックタイピングな言語での
抽象クラスってそんなにひつようか?
標準ライブラリ書くような偉い人が書くものだから、 下々には必要ないんじゃないの?
機能に踊らされてる人間は、その機能で大量にバグを発生させる。
1円を笑うものは1円に泣くのです。
データファイル更新日時から、各レコード記録の日付を推定して補うコードを書こうとしています。 日付と文字列との橋渡しを Python でどのようにすればいいのか教えてください。 ・ データは記録時刻 HH:MM で始まる形式の文字列 (取得済み; 仮に r とする) です。 ・ データファイル更新日時は yyyy/mm/dd HH:MM という形式の文字列 (取得済み; 仮に u とする) です。 ・ データ記録は、その時刻がデータファイル更新時刻より - 大きければ、更新前日に行われたもの - 小さいか等しければ、更新当日に行われたもの と判断したいです。 ・ r, u を入力してデータ記録の日付を yyyy/mm/dd 形式の文字列で返す関数がほしいです。 処理の流れは ・ r, u からその時刻部分を取得し、時刻に変換して比較 ・ 結果によって u の日付部分を1日減じたり減じなかったりして、文字列に戻して返す でしょうか? ライブラリリファレンスの strftime, strptime あたりを眺めているのですがどうも物分りが悪くて…
こんなもんでいいんじゃねえの def f(r, u): d, hm = u.split(' ') if r <= hm: return d else: nd = datetime.date(*map(int, d.split('/'))) - datetime.timedelta(1) return nd.strftime('%Y/%m/%d')
>>558 そういうネタっぽいことはMLでやれよ。
仕事のない暇人どもがわらわらとやってきて、サンプルコード書いてくれるからよ。
561 :
558 :2009/01/29(木) 10:58:32
>>559 そのコードで動作しました、ありがとうございます。split 便利ですね。
r <= hm の部分ですが、両辺は文字列として辞書順比較されているという認識でよろしいでしょうか?
>>561 うん。HH:MMならそれで問題ないよね?
563 :
558 :2009/01/29(木) 11:08:03
>>562 もちろんOKです、ありがとうございました〜。
>560 妙な応用編しか教えてくれないけどな
>>564 そんなだから仕事ないんだろ。
空気が読めないというのは致命的だよな。
566 :
◆UNKOVIP9RM :2009/01/29(木) 15:48:26
痛い 痛い 痛い
>>553 エラーの発生するタイミングが関数コール時とインスタンス生成時だとかなり変わると思うけど。
そういうことが気になるんなら静的型言語を使ったほうがよくないか
ハンゲームしねえええ
>>567 そんな時のためのメタクラス。
だけど、大半は実行時でも問題ない。その分テストを書こう。
>>570 多分
$ PYTHONPATH=. call multiply multiply 3 2
572 :
デフォルトの名無しさん :2009/01/30(金) 09:04:17
Python3はライブラリに関してはまったく同じなのね
>>572 基本的には互換性を保ってるけど、細かな変更点が多数あるので要確認。
2.6に移植してから2to3使えば、ライブラリのapi変更にもある程度追従してくれる。
後方互換性は無いけど変換ツールでどこまで対応できるのかね
特定のプログラムの特定の箇所で、変数をバイト列として扱いたいのか (あるいはそれが正しいのか)、文字列として扱いたいのかなんて 自動で判断できるわけねーし、結局手動でプログラマが手を入れないといかんよな。 例えばMacをのぞくUnix系のOSだと、システム界面ではbytesベースで扱うのが 正しいことが多いだろうし、逆にWindowsではファイルI/Oを除いては大概 strベースが正しいだろうしな。
なんなんだ突然。
藪から棒だが言いたい事は分からんでもないこともない
579 :
デフォルトの名無しさん :2009/01/31(土) 09:44:38
>>> x = b'this' >>> x[0] = b'T' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'bytes' object does not support item assignment
a = ''.join([chr(x) for x in xrange(256)]) こういうデータの作り方しても大丈夫ですか?
>>> a = 'this' >>> a[0] = 'T' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'str' object does not support item assignment >>> x = b'this' >>> x[0] = b'T' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'bytes' object does not support item assignment >Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。 どちらも「変更不可能(immutable)」で違いが無いですね
何を心配してるのか分からんが、別にいいんじゃないの 強いて言えばその[]は要らないかな a = ''.join(chr(x) for x in xrange(256)) a = ''.join(map(chr, xrange(256))) でいいでしょ
585 :
デフォルトの名無しさん :2009/01/31(土) 10:39:01
Webアプリフレームワークなんかは3.x対応ってどうなってんの?
Webアプリフレームワークとはなにですか?
puronとかterbogiarsとかですねわかります
テーブルサイズが巨大になる時の効率を気にしてるんじゃない?
用途・規模により対策は異なるけど、使えそうなのを適当に挙げると。
array, mmap, ctypes, バッファ関連C/API, numpy, 3.0からは bytearray, io.*
標準モジュールのみでの簡単な方法を紹介すると、
事前にデータをファイルにダンプしておいて、
import array
x = array.array('c')
x.fromfile(open('char_table.dat'), 256)
one-linerでサイズが256程のを所望なら、
>>584 のmap使うのが多分最速。
danjoってなんでうsか?
592 :
デフォルトの名無しさん :2009/01/31(土) 14:01:45
dojoは仲間外れですか?
>>584 >>589 分かりにくくてすみません
あきらかにbinaryなのに''でjoinしてることに違和感があったのです
タヒチ
>>593 2.xならstrは要するにimmutableなバイト列だから、何の問題ない
Cとは違ってヌルバイトも特別扱いはしないし、普通に含めることができる
C API で定義した型に定数メンバーを持たせるにはどうすれば良いのでしょうか? 具体的には下記の A 〜 C のようなクラス変数を実装したいのですが… class Noddy: A = (0 << 1) B = (0 << 2) C = (0 << 3)
>>597 つまりクロージャーをうまく使えという訳ですね。
その方向で試してみます。ありがとうございました。
>598 定数だったら辞書かモジュールオブジェクト作ったほうがよくない?
600 :
596 :2009/01/31(土) 21:05:21
>>599 NoddyPackage の Noddy1, Noddy2, Noddy3 それぞれに個別の定数を持た
せたいのです。
実は既にモジュールオブジェクトとして実装しているのですが、その場合
from NoddyPackage import *
と書かなければならないのが1つ。
(import NoddyPackage で全部使える状態にしたい)
インスタンス生成時に
noddy = Noddy1.new()
の様に、モジュールメソッドを呼ばなければならないのが1つ。
(noddy = Noddy1() でインスタンス化したい)
最後に、些細ですが、NoddyPackage.Noddy1.A でも、インスタンスから
noddy1.A でも、どちらも同じ領域を参照したいというのが理由です。
PyTypeObject に対して PyModule_AddIntConstant みたいな関数があれば
悩まないのですが無いようでして。
集合sの各要素を (順序は問わず) 1個ずつもつリストlはどうやって作ればよいですか?
集合sをコピーすればいいんじゃね
>>601 l = list(s)
で済む話ではなくて?
済みません
自己解決しました
>>603 そんなのがあったのか!
ありがとうございました。
>>606 もうお前プログラミングやめたほうがいいよ、向いてないよ
今Googleおかしくなってる? 検索したら全ページに このサイトはコンピュータに損害を与える可能性があります。 って一文が付け加えられてるんだけど・・・俺だけ?
俺も。 どうなってんだろ。 Google のバグか、それともクラックされたのか。
よかった俺だけじゃないのか・・・
うちは出てない 良かった良かった
どうやら出るサイトと出ないサイトがあるようだが9割がた出る…おれの場合
ν速行ってみろ、今祭りだぞ
,.-─ ─-、─-、 , イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , -─ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | > ---- r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ gugurecus ] (西暦一世紀前半〜2009.1.31)
2chでGoogle検索してしまったw
>>600 PyModule_AddIntConstant も結局は辞書とgeneric getattrでやってることなので、
手短にするならgetattrに定数を返す関数を登録するのがいいんじゃない?
SWIGではどうやってたんだろうと思い、気になって調べてみると、SWIGのdocumentでも
Static class members present a special problem for Python. Prior to Python-2.2,
Python classes had no support for static methods and
no version of Python supports static member variables in a manner that SWIG can utilize.
Therefore, SWIG generates wrappers that try to work around some of these issues
Googleがぶっ壊れた
618 :
デフォルトの名無しさん :2009/02/01(日) 17:00:49
ビルトインのjsonモジュール日本語さっぱり扱えないね
Python CGI でファイルの作成および削除を行っているのですが、削除 (os.remove( path )) に失敗しています。どのようにすればよいでしょうか。 考えられる問題点の1つは、作成されたファイルのパーミッションが644になっていることです。
622 :
621 :2009/02/01(日) 17:45:40
自己解決しました。削除ではなくその前に読むべきファイルを置き忘れていました…。
>>618 参考になるだろうけど、内容が少ないから
本一冊ぐらい買った方がいいかもね。
そこの広告にも出てるけどみんなのpython って言うのが
一番普通っぽい感じだと思う。
公式ドキュメント読めるならそれでもいいけど、
普通は読みにくいと言われてる気がする。
625 :
デフォルトの名無しさん :2009/02/01(日) 18:00:02
>>623 ありがろうございます。
確かに公式ドキュメントはわかりにくいですね
618のHPだと内容は少ないのですね…
それでもすごくわかりやすくて重宝しておりました。
みんなのPython探してみます。
626 :
596 :2009/02/01(日) 20:06:20
>>616 の情報をヒントにソースを追っていったら解決しました。ありがとうございます。
一応、解決策を datetime モジュールから転載しておきます。
// Python-2.6.1/Modules/datetimemodule.c L4751-4757
// in initdatetime function
/* timedelta values */
d = PyDateTime_DeltaType.tp_dict;
x = new_delta(0, 0, 1, 0);
if (x == NULL || PyDict_SetItemString(d, "resolution", x) < 0)
return;
Py_DECREF(x);
627 :
621 :2009/02/02(月) 08:18:01
>>624 どっちサイドの問題か迷ったので勢いのあるこちらに投稿させていただきました。
ぜんぜん違うところの問題でほんとすみません><
死んで詫びろ。
string の split って引数なしだと (複数の)whitespace が対象ですが、 sep としてデフォルトを指定する方法って どうすればいいのでしょう? 具体的には whitespace のままで maxsplit を 指定したいんですが ' ' とかでは space 1個あたり 一分割されてしまうんで…
ありがとうございます ちょうど /usr/local/lib/python2.5/string.py をみて None を試していたところでした。 これで良さそうです (ただ document に None だと云々って書いてないから undocumented feature ってことになるのかしら?)
634 :
632 :2009/02/02(月) 12:19:22
635 :
632 :2009/02/02(月) 12:21:52
おぉぅ… 書いてあるのね…orz
'ab23'.split(ここに何を入れれば) ['a', 'b', '2', '3'] と分割出来ますか?
639 :
◆UNKOVIP9RM :2009/02/02(月) 15:39:31
↑Python ではそれしかないっぽいね。Ruby や Perl と違って。まあ、不便とも思わないけど
boost.pythonのメモリー漏れてる問題って修正されてないのか ちょっと激しい使い方したら落ちないか?
>>640 Pythonの文字列はもともとシークエンスであって、いちいちlist化せんでも
forループでまわしたりmap()などに渡したりできるんで
実際には
>>638 すら必要になることはそう多くは無いはず
sの一文字目が欲しいなら、単にs[0]でいい 部分文字列が欲しいならs[2:4]とかだ いちいちsubstr()だのsplit()だのでバラす必要は無い
バカほど無用な遠回りをする。
そうやって成長していくのさ
成長が早い奴は無用な遠回りをしない。 バカが遠回りをして時間を無駄に費やしている間にも成長してゆく。
遠回りは無駄じゃないよ
>>637 [x for x in 'ab23']
649 :
◆UNKOVIP9RM :2009/02/02(月) 17:10:05
遠回りしまくって、叩かれまくって、それでも諦めないという それでいいじゃん
だがもう覚えた^^
ちい覚えた
バカほど車輪の再発明をする。
ちょっと組み込み関数全部読み直してくる
print() って stdout.write() じゃだめなん?
try: f = open(file,'rb') sys.stdout.write(f.read()) except IOError, (errno, strerror): print 'I/O error(%s): %s' % (errno, strerror) except: print 'Unexpected error: %s' % (sys.exc_info()[0]) else: f.close() これで例外が発生したときfはcloseされますか?
finally:
ライブラリリファレンス28pに <> および != は同じ演算子を別の書き方にしたものです。!= のほうが望ましい書き方です; <> は廃止すべき書き方です。 とあるんですが、後半には何か理由があるんでしょうか?
2つの物を1つにする時は 少数派が負けるのは普通 じゃないかな
<> って使えるのか
3.0になって消えた。
from __future__ import with_statement class MyClass(): def __init__(self): self.file = None def __enter__(self): self.file = None print "MyClass: enter" return self def __exit__(self, exc_type, exc_value, exc_tb): print "MyClass: exit" if not exc_type: print "Secucess to open a file." else: print "Failed to open a file." if self.file: print "close file" self.file.close() return True def open(self, file_name): self.file = open(file_name) print "open file" def process(): with MyClass() as my_class: my_class.open("with.txt") if __name__ == '__main__': process()
ファイルオブジェクトに似たオブジェクト以外に使ったらすぐ スパゲッティ化しそうな気がする < with 文対応クラス
どうみてもwithの方が面倒です 本当にありがとうございました
おつかれうぃっず
俺ならこうするけどなあ。 try: with open("tmp.txt") as f: print "Success to open a file." except IOError: print "Failed to open a file." finally: print "End of Exception handling."
RAIIっぽいのはwithで書いたほうが綺麗だな ロックの獲得→解放とか ContextManagerを明示的にクラスとして実装する必要性はほとんど無い気がする ファイルオブジェクトはもともとContextManagerインタフェースを備えている そうでなくとも、オブジェクト作成→最後にclose()の流れなら contextlib.closingが使える もっと汎用的なものが欲しい場合はcontextlib.contextmanagerを使う with open〜のようなもの(Schemeのcall-with-input-file相当)を 自分で書くのは難しくない from contextlib import contextmanager @contextmanager def my_open(*args, **kw): fp = open(*args, **kw) yield fp fp.close() これだけでいい with my_open('foo.txt') as fp: do_something_with(fp) のように使う
やはりRubyは優秀だなあ
やっぱりJavaは優秀だなぁ
やっぱDは優秀だな
今日からパイ村の村民になります、よろしく
ロックなどのように明示的な開放が必要な場合は使うけど。 どうせデストラクタで閉じられるからと、ファイルではあまり使わないなぁ そもそも例外でclose以外の後始末をしないといけないって事が(自分の場合は)少ないので。 do_something_with(open('foo.txt'))で済ませる。行読み込みなら for line in open('foo.txt') # gc任せ、なので良くないスタイルなのかもしれない。 # 一応、注記しておくとサーバなどのlifespanが長いものではきちんとしてる。
>>675 今のCPython実装だと参照カウント方式のGCだから、不要になったらすぐ開放してくれるから、
それで上手くいっちゃうんだよね。
IronPythonとか、参照カウント以外のGCだと、不要になってから開放してくれるまでのタイムラグが
予測できないからRAIIが必要になるけど。
TurboGearについて教えてください。 コマンドプロンプトで,python start-booklist.pyと打つと、 AttributeError: 'module' object has no attribute 'Template' とエラーが出ます。どうしたらいいでしょうか?
Firefoxで escape('あいうえお') したら %uXXXX でエスケープしやがるんですが、 urllib.unquote() は %uXXXX に非対応です。 標準ライブラリ一発ではなんともならんかったっけ? 自前でunescapeしないとダメ?
680 :
678 :2009/02/04(水) 18:30:50
'%u3042%u3044%u3046%u3048%u304A' => u'\u3042\u3044\u3046\u3048\u304A' するナイスな(標準的な)方法が知りたいのです。 eval('u"%s"' % '%u3042%u3044%u3046%u3048%u304A'.replace('%u', r'\u')) でも目的は達成できるけれど正しいとは言えないような。
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])
s = '%u3042%u3044%u3046%u3048%u304A' re.sub(ur"%u([0-9A-F]{4})", lambda m: unichr(int(m.group(1), 16)), s)
思いつくままかいてみた。期待通り動くかどうか解らないけど、 map + unichr な感じの方法でもっと簡単に書けるんじゃないかな。 re.subn(r'%u([0-9a-fA-F]{,4})', lambda g:unichr(int(g.group(1),16)), string)[0]
684 :
678 :2009/02/04(水) 19:02:02
>>681 s = '%u3042a%u3044i%u3046u%u3048e%u304Ao' # あaいiうuえeおo
"".join(unichr(int(i, 16)) for i in s.split("%u")[1:])
↓
ValueError: unichr() arg not in range(0x10000) (narrow Python build)
>>682-683 ありがとうございます。目的は達成できるんですが、結局自前unescapeですよね。
不満はないんですけど、標準的な方法としてライブラリに関数があってもいいのに…
そう思うならpatch投げてcommitしてもらえばいいのでは
686 :
cap005-096.kcn.ne.jp cap005-096.kcn.ne.jp :2009/02/04(水) 20:56:23
でも、これってブラウザの実装依存じゃなかったっけ? あっても良いとは思うけど。先に仕様の標準化と実装の統一がされてないと、 標準ライブラリに入るのは難しいと思うなぁ。 ところで、evalの方で 安全にevalするなら s.encode('string-escape')で文字列内でクォートを閉じられないように。 2.6以降なら、併せて eval -> ast.literal_eval
PILのGIFアニ書出しってgifmaker.pyしかない? 一応GIF89aの書出し対応させたけどファイルが 圧縮でけんみたいだわ。
ブクマ数気にしてる著者が書いてるかどうかの違いじゃないかな?
そうだな. 見る人が少ないページは価値が低いなんてことはまったくないし ブックマーク数が低いページの方が見る人が少ないなんてまるで都市伝説だ.
ソーシャルブックマーク(笑)
みんなのパイパイと恥ずかしいパイパイ?
良いパイパイと悪いパイパイがあるんですね。
恥pyの中の人は必死すぎて引く。
>>696 悪いほうは桃白白ですが、良いほうは誰ですか?
699 :
687 :2009/02/06(金) 17:59:09
>>689 多分sequenceアクセスでやれる、と言いたかったと思う、が…
PIL1.1.6ではGIF89aにするためのGCEやAEブロックを作らんみたいなのよ。
ヘッダに至ってはGIF87しか出さんし。PILのGifPlugin
使ってヘッダ作ってるgifmaker.pyのGIFアニでも
再生でけるのにはワロタ。
gifmaker.pyではgetbboxでフレーム間差分取ってるけど
全然ファイルサイズが小さくならん。
やっぱ特許がらみで圧縮サポートせんかったんかいのぅ。
なるほど ありがとうございました
pythonではゼロ割り算などがおきても計算は止まらないことになってるのでしょうか? ほとんど,どんな数値計何上のエラーでも止まらないのでしょうか?
例外ZeroDivisionError:を拾って処理すればいいよ 止めたければ止めればいい 他の数値計何上のエラーでもおなじ
最近Pythonスレの濃度がやたらと濃くなってるな。 いいことなんだけど。他のLLスレと違って低レベルなことに触れる事がおおいな。 どこで勉強してんだ?
トイレできばりながら
python.orgでのやり取り、ML。 困ったときも過去にどういうやり取りがあって APIの定義が決まって行ったかが追える。 ドキュメントを書く事がPython使いの文化になってるせいで 野良モジュールでもドキュメントが豊富。
PILのsequenceはflameの逆戻りができないんじゃなかった?
なるほど ありがとうございました
ありがとうございませんでした
>>690 上のやつって『初めてのPython』第三版向けなんだってね
日本語版はPython3k対応とか言ったらGJじゃないか
ただでさえ分厚い原著がさらに厚くなるなんてうれしいなあ!!
早くも茶々入ってワロタ
ホーリーアップしますか?
むしろ目糞はn
>>709 日本語版だけ3000に対応するわけねーだろwww
>>713 単純な計算も出来ないのですか?
15倍ですよ
単純な計算も出来ないのですか? 13.6倍ですよ
複雑だと思うならつかわなきゃいいんじゃねーの? なんでアホはあるもの全部使わなきゃ気がすまねーの?
おめーこんなやり方あるのもしらねーのと馬鹿にされるから。
馬鹿にされると(恥ずかしい?)のは馬鹿だからだろ 馬鹿じゃないんだったら馬鹿にされてもいいじゃん ひとちがいなんだから
やっぱRubyはすばらしいなあ
それはない
723 :
722 :2009/02/08(日) 23:20:52
試しに小一時間ほどRuby 1.9.1をビルドし、 irbで適当にRubyいじってみたけど最高だ! なんでいままでPythonなんて触っていたのだろう! すばらしい!
724 :
デフォルトの名無しさん :2009/02/08(日) 23:29:18
Pythonって.NETに対応してるの? してるなら圧倒的にPython指示する
してないよ
import win32com.client fso = win32com.client.Dispatch('Scripting.FileSystemObject') folder = fso.GetFolder('C:\\') for file in folder.Files: print file.Name
Craftwareのソフトはソースコードを開示してて、ライセンスのtxtファイルにGPLと書いてるのですが Python自体のライセンスがGPLなのでしょうか? Pythonを使ったソフトはソースコードを開示しなければならないのでしょうか?
import win32com.client w = win32com.client.Dispatch('WScript.Shell') w.Popup('Ready',3,'1,2,3') w.LogEvent(1, 'DaahhhHHH!')
730 :
デフォルトの名無しさん :2009/02/08(日) 23:38:31
Yes, we can.
またruby厨の自演ですか
>>727 Python自体はGPLじゃない
というかプログラミング言語の処理系がたとえGPLであったとしても、ソースの公開義務は生じない
そのソフトがGPLなだけだろ
733 :
724 :2009/02/08(日) 23:56:59
>>729 ___
/⌒ ⌒\ ━━┓┃┃
/(  ̄) (_)\ ┃ ━━━━━━━━
/::::::⌒(__人__)⌒:::: \ ┃ ┃┃┃
| ゝ'゚ ≦ 三 ゚。 ゚ ┛
\ 。≧ 三 ==-
-ァ, ≧=- 。
イレ,、 >三 。゚ ・ ゚
≦`Vヾ ヾ ≧
。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
IronPythonは一見ギャグのようで、意外と.NETに馴染んでて馬鹿にできないw
IronPythonってまともなページャ有効にするにはどういう設定すればいいんだろう せっかくdir()やhelp()で.NETのクラスやオブジェクトのイントロスペクションが 効くのに、速攻で流れてしまうのでは意味がない
cygwinのbashで
738 :
722 :2009/02/09(月) 02:56:08
まさか俺のにせものが出るとはw ほんとにruby厨って面白いなw
pythonはモンティパイソン rubyはドリフw
そう言えばいかりやは死んでるんだよな〜・・・ 未だに実感がないよ・・・長さん・・・
だめだこりゃ
Ruby使ってる人って他の言語使ってる人につっかかってくるんだろうか。 Pythonの場合はC++と併用してたり他の言語も普通につかってて別に布教活動しねーよな
>>743 「つっかかってくる」だけの人はどの言語にもいるが、RubyやPythonは
そういう手合でも判った気になれる言語だという事だと思う。
>>742 従来通りint型を得たい場合には「//」という演算子を使います。
コメントに使えなくなるのは痛い
俺、.NETとJavaScriptぐらいしかわからないんですけど PHPとpyてょnのどちらを始めるべきですかね?
どっちもやればいいよ
Ruby信者の永遠のライバル、HSP!
さくらインターネットでwebプログラミングするなら PHP >>>> Ruby >>>>>>>>>>>>>>>>>>Python さくらさんお願いですから、Pythonのバージョンあげてください。 せめて2.5に。
さくらだったら自分でコンパイルすればいいじゃん
お前にさくらはもったいない。 xreaへ逝くがよい。
754 :
デフォルトの名無しさん :2009/02/09(月) 21:29:34
ちょっと他のスレッドで発見したのですが ↓ ラーメンタイマーでも作ってみれ。 カップヌードル用(3分)とどんべい用(5分)に分ける。 できればタスクバーに駐在する奴。 こういうのってPythonでもサクっと作れますか? できればexe化したもの
Tkinter でさくっと作れるよ。
シェルでsleepしてビープならせ
そのスレッドに sleep 180 & echo ^G^G^G と書いた覚えがある
import win32com.client w=win32com.client.Dispatch('WScript.Shell') w.Popup('カップヌードル/どんべえ', 180, 'おまちください') w.Popup('どんべえ', 120, 'おまちください')
>>760 Quit したあとにアプリケーションエラーが出た
別の PC でやったら出なかったので
うちの PC がおかしいのかも知れないが
xset b でビープ音いじれるんだな 通常のビープ音がうるさいとあれだから、xset bで再設定すれば、戻るし Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ? 簡易タイマー 機能 時間指定タイマー・秒数・分数指定タイマー・ビープ音バリエーション数種類 みたいなの、作れるかな シェルスクリプトでやったほうが素直かな
pythonでネットワークパケットいじれるモジュールないの?
コマンド実行後に残り秒数表示のコマンドを打つと出力してくれる機能も欲しいか
>>762 > Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
exec文/関数はPythonコードを実行するためのもので
超おおざっぱに言えば文用のeval()
外部プロセスを起動したいときはsubprocessモジュールを使う
>>765 ウヲオオォ。おもしれー。
pcapyとのコンビも楽しめるじゃない。
お兄さん、パケット自作しちゃうぞー。
>>479 の Python Network Programing 本読んでみようと思うんだけど
Python 3 でも使える?
>>768 その本は4,5年前に出た奴だから、内容がかなり古いぞ。
あと扱うプロトコルが多岐に亘る分、広く浅い。
突っ込んだ説明を求めてるのなら肩透かしを食うかも。
Apressのサイトのサンプルコードを眺めてから買うことを勧める。
>>766 さんくす
はじPyには、載っていないっぽいね
とりあえず、ライブラリみてるお
シェルスクリプトで実装しちゃうけど
Beep音のバリエーションだけは、欲しいなあ
X以外のときは、みんな、どうしているんだろ
mp3です
簡単だったんで、subprocessを使って、超簡単なものができた 0.1秒単位でビープ音を変えられるみたいだから いろいろとできそうだね
os.system()じゃないのかなあ。
>>768 767だが、その本は止めとけ。
内容のレベルが低すぎるし、中でどうなってるのかも説明してない。
778 :
デフォルトの名無しさん :2009/02/10(火) 17:48:01
そういやstreamに垂れ流すだけで色んな音が出てくるドライバあったような
間違えた chunk -> chuck
時給1500円でPython教えます 需要ありますか?
テキスト読んで理解できない人って教えて貰うと理解できるのか?
783 :
デフォルトの名無しさん :2009/02/10(火) 20:49:37
>>760 わざわざ作っていただいてありがとうございます。
サクっと作ったみたいなのでビックリです。
しかし、実行できないのですが・・・自分の環境・やり方が間違っているのですが(汗
python ******.py
ではだめなんですよね?
エラー見てわからない時点で プログラムには向いてない
>>783 丁寧に質問しているようで全然なってないという最悪のケースだな。
「実行できない」 ってのは具体的に何?
エラーが出たのならそのまんまコピペ汁
女の子なら無料でPython教えます
だめだ、卑隈なレスしか思い付かない
手取り足取り腰取り
初めてのPython3版でるのか・・・ 勉強し直すかな
2.5対応の部分ってどのぐらいあるんだろうね。 邦訳出してくれるのはありがたいな。
尻撮り
794 :
デフォルトの名無しさん :2009/02/11(水) 09:30:01
PythonのGUIライブラリはwxPythonで決まりっぽいね。 924 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/11(水) 01:14:35 C++でGTKで書いたアプリを wxPythonで書き直したら 後者の方が超速くて泣いた
あー、すごく突っ込みたい。ってもうこれが突っ込みになってるか。はぁ
俺、下朝鮮が大嫌いだからソニーのブラビア買ったよ!
Pythonが廃れてRubyがメジャーになるらしい。 どうやら利用人口が逆転したとか
>>797 またお前か。
Ruby厨はいい加減にしろよ。
だからRubyは嫌われるんだよ。
自演乙
さすがRubyだ
まあ俺に関して言えば、別に流行っているからとか、Googleが使っているからいってPythonを使っているわけではないのだ。 だからRuby人口がPythonを抜いても無問題。
男の子なら無料でPython教えます
2to3がreload()をimp.reload()に直してくれないんだけど これを追加してもらうにはどうすりゃいいのかな
アッー!
py3kいいなぁ、 インスコしただけだけど、xmlとかhtmlとかがモジュール名になってるんだな。 これはスッキリしてていい。 はやく外部モジュールも3kに移行してくれー。
Rubyのほうがはるかに良い。
ruby厨まじでうざい。ほんと消えてくれ。
808 :
デフォルトの名無しさん :2009/02/11(水) 14:46:03
Python に一致する日本語のページ 約 1,560,000 件中 1 - 10 件目 (0.09 秒)
809 :
デフォルトの名無しさん :2009/02/11(水) 14:46:36
Ruby に一致する日本語のページ 約 2,480,000 件中 1 - 10 件目 (0.06 秒)
810 :
デフォルトの名無しさん :2009/02/11(水) 14:50:32
結果に2倍ぐらい差があります。 完全に python の勝利です。 Results 1 - 100 of about 202,000 for "python programming language". (0.45 seconds) Results 1 - 100 of about 119,000 for "ruby programming language". (0.16 seconds) 設定は全ての言語で。
rubyは会社の奴は誰でも聞いたことあるみたいで誰も文句言わないのに python使おうとすると技術系キモヲタ扱いされて嘲笑されるんだ
Rubyの今の良いイメージは日本人が作ったってのがでかいんじゃないのかな? まぁ腕時計のGショックみたいにRailsの逆輸入で火がついたってのは皮肉な話だけど。 Rubyいろんな雑誌に記事出したり普及活動してたからな〜 いつだったかJavaのオブジェクト指向をマスターしよう!っていう内容の 本なのにRubyで説明してるのがあって笑った Ruby厨は当時から気持ち悪かった
>808 しゃべれなくてもいいから、読めるようになろうな>英語
>>815 お前マジで首吊って死ねよ。
Pythonの方が人気あるからって嫉妬すんな。
Ruby厨はRubyが一番素晴らしいと思い込んでいるなら、 なんでわざわざ他のスレまで来て必死に布教しているんだろうなぁ。
>>808 日本語のページを検索ワロチ
python の検索結果 約 66,900,000 件中 1 - 10 件目 (0.10 秒)
ruby の検索結果 約 894,366,900,000 件中 1 - 10 件目 (0.10 秒)
スルー力が足りないぜ!
822 :
デフォルトの名無しさん :2009/02/11(水) 16:58:58
ルビーっていう宝石を知らんのか?
パイソンっていう蛇を知らんのか?
グロ注意
パイパン - Wikipedia 語源は麻雀牌の「白板」(=パイパン、baiban。三元牌の1つ。 上に何も描かれていない白一色の牌)によると言われている。 元々はこの牌を意味する隠語に「土器」(「かわらけ」と読む。 表面に何も装飾のない「素土器」の意)という言葉があり、最初は陰毛 ...
826 :
デフォルトの名無しさん :2009/02/11(水) 17:31:01
RUby厨うぜ
Ruby使おうぜ に見えたorz
みんなインデントの幅って深さ1つあたりスペースいくつぶんにしてる? 深くなってきたらインデント1つの幅を変えたりとかする?
俺はPythonもRubyも両方使ってたけど、 このスレのRuby荒らしを見て、なんかもうRubyを使いたくなくなった。 ああいう程度の低い人がRubyを使ってるのかと想像すると悲しくなるから。
>>829 Pythonの中の人は基本4つ分で、グーグルの仕事の時だけ2つ分にしてるらしい
一週間前から勉強し始めた俺は4つ分
>>829 4幅。
PEPに書いてなかったっけ?
コードは基本、ネストレベルが深くなりすぎないように気をつけてる。
気になるほど横に広がらざるを得ないって状況は少ない。
>>829 公式では4が推奨されているし、pythonライブラリはほぼ全部indent=4。
スルー力お勉強スレ
Rubyもやってたときに2にしてしっくりきてるから Pythonでも2で書いてる 特に苦情ないよ
あいだとって3にすれば文句あるまい
俺はエイトマン
インデント=2に慣れると4は広すぎると感じる。 4に慣れると2が窮屈に感じる。
1spaceでいいだろ 馬鹿かお前ら
pass
こういう話題ができるのも、パイソンだけだね^^
2にした上で、インデントの深さに応じてインデントの色変えてる 自分で素だと見づらい事を認めちゃってる気がしないでもないが
インデントの色?
タプルとシーケンスのどちらを使っても変わらないような気がするときはどう決めればよいですか?
タブルとシーケンス
要素が同じ型→シーケンス、別の型→タプル インデックスアクセスする→シーケンス、しない→タプル
可変長ならシーケンス
>>845 インデントの深さに応じて背景色を変えてる
ってことじゃないか?
>>848-849 同じ型で変更予定がないから迷っていたのですが、インデックスアクセスするのでシーケンスにします。ありがとうございました。
あ、シーケンスじゃなくてリストか
おどかすなよ 必死で Python シーケンス で調べた俺に謝れ
ごめんなさい><
ごめんね
ごめんよ
シーケンス=タプル、リスト、その他ですね^^
みんなでRuby使おうよ。たのしいよ
ごめんね、それだけはムリ
860 :
722 :2009/02/12(木) 00:01:29
ぶっちゃけrubyやるぐらいならlispとsqueak勉強した方がいいな
Rubyを覚えると、RPGツクール内蔵Rubyが使えるよ!
Cで言うと リスト=配列 タプル=構造体 みたいな感じで使い分けてる俺
配列=リスト 構造体=クラス(インスタンス変数とかいうやつ) タプルは使いどころがわかんないね
C配列->リスト C構造体->タプル(わざわざオブジェクト指向を徹底するほどの規模でもないとき) Cクラス->クラス(ちゃんと後のこと考えて設計するとき) かな
どちらかというと 構造体->ハッシュ の方が良く使うけどね
1
2
>>865 構造体にハッシュを使いたくなったら、代わりに named tuple を使おう。(Python 2.6以降)
すぐそこSunkus
ttp://inforno.net/articles/2008/10/03/python26-features >>> var_type = collections.namedtuple('variable',
... 'id name type size')
# Names are separated by spaces or commas.
# 'id, name, type, size' would also work.
>>> var_type._fields
('id', 'name', 'type', 'size')
>>> var = var_type(1, 'frequency', 'int', 4)
>>> print var[0], var.id # Equivalent
1 1
>>> print var[2], var.type # Equivalent
int int
>>> var._asdict()
{'size': 4, 'type': 'int', 'id': 1, 'name': 'frequency'}
>>> v2 = var._replace(name='amplitude')
>>> v2
variable(id=1, name='amplitude', type='int', size=4)
>>893 指針のひとつとして、提案すると
tuple or class(instance object) の選択は、属性への代入操作をするかしないか。(immutable or mutable)
手軽に構造体代わりというなら自分もnamedtupleに1票だけど、_replace使うくらいならクラスにしたほうがいい。
クラス / tuple の使い分けで、tupleの場合は同じ変数に別データの上書き禁止とかローカルルールも併用すると、
変数の型だけ追って見て、オブジェクトが状態を持ってるかどうか解るよーになる。(機械的なチェックはないけど)
構造体 -> ハッシュ(辞書?)は、属性名固定なのにハッシュ値計算されるのが無駄なように思う。
…とは言え、通常のオブジェクトの属性アクセスも殆どは辞書アクセスなんだよね。(CPython)
構造体代わりとしてクラス使うなら、new style class で __slots__ 宣言するのがいいのかな。
未来安価了
rubyはバージョン間の互換性ないのがなあ
pythonの話しようぜ
875 :
デフォルトの名無しさん :2009/02/12(木) 20:21:50
874
3要素からなるリストのリスト S = [[1,4,3], [3,7,4], ...] があり、 S[i] のうちで ・ S[i][2] が最小のもの ・ S[i][1] が L 以下のもののうち、S[i][2] が最小のもの ・ S[i][0] が L 以下で、S[i][1] が L 以上のもののうち、S[i][2] が最小のもの を取得したいのですが、関数定義して filter や min に渡してやればよいのでしょうか
好きなようにやればいいじゃない! ただ性能的にfilterよりジェネレータ式使ったほうがいいかもね def third(x): return x[2] min(S, key=third) min((x for x in S if x[1]<=L), key=third) min((x for x in S if x[0]<=L and x[1]>=L), key=third)
878 :
874 :2009/02/12(木) 21:21:27
>>875 何も考えずに書いた。
俺は天才かもしれん。
879 :
876 :2009/02/12(木) 21:33:34
>>877 こんな簡単に書けるんですね。やっぱ Python 選んでよかったです。
880 :
デフォルトの名無しさん :2009/02/12(木) 21:38:34
日本語の検索結果に釣られすぎだろお前らw
lambda式でおkだよ^^
>>880 たしかにPythonとRubyはサポートしているデータ構造も想定される
用途もかなりオーバーラップしてるから全く違う言語を学習する方
がいいな。HSPとかね。あれは勉強になった。書いてるだけで発狂
しそうになったのはあの言語だけだ
880->860
HSP本って最近めっきり見なくなったな 何だったんだ
勝ち負けは基本的にどうでもいいんだけどPythonの人はこのスレに来て何をしたいの? 新規ユーザーをrubyに取られるのが怖いの?ネガティブキャンペーンてやつ?
はぁ
ふぅ
888
wxPythonは欠陥品だな
>>882 VB2005 (2008以降への移行はそのうちやる) 使いなんだが
Python の他には何を学習したらいいと思う?
蛇足だけど、共通部分をまとめると、 import operator import functools min_3rd = functools.partial(min, key=operator.itemgetter(2)) min_3rd(S) min_3rd(x for x in S if x[1] <= L) min_3rd(x for x in S if x[0] <= L <= x[1])
>>890 教養的には用途が被ってなければなにやっても為になると思うけど
実用的には沢山言語を触ったことがあるかよりアルゴリズム
をどれだけ知っているかとかsql使えるとかSubversion使えるほうが大事で
VBとPythonが使えるなら言語を学習する時間を他の事を学習する時
間に当ててみては。というと、結論としては英語。
>>803 2to3の変換は基本 2.6 -> 3.0 なので、
返還前に2.6の警告オプション付で警告なしで通るようにしてから 2to3を使う。
この場合は、返還前のコードをimp.reloadに修正するのが推奨されてる方法だと思う。
2.5とも互換を保ちたければ、
try:
from imp import reload
except ImportError:
pass
895 :
デフォルトの名無しさん :2009/02/13(金) 20:53:01
>>884 無料開発環境配って解説本で設けるビジネスモデル。
その取り巻きがすごく多かった。
おそらくHSPの主な支持者は、団塊世代から団塊Jrまでの中間層の、アセンブラで育った世代じゃないかと推測。
基本であるBasicやC言語などは構造化プログラミングを導入したので、
jmpで自由なコーディングをしてきた人々にはむしろ理解しがたかった可能性がある。
そういう流れに取り残された、趣味プログラマから受け入れられたんじゃないかな。
僕もオブジェクト指向はいろいろ呼んでみたけど理解できなかったし。
オブジェクト指向を呼んでみたり コードを返還してみたり Python使う人はすごいですね!
それがPythonistaなのさ
市場価値の高い言語はどれだ?
求人数はJava、年収はC#がトップ――ワークポートが調査 - @IT
http://www.atmarkit.co.jp/news/200902/13/wp.html 求人数で見ると、やはりJava・Cの2強は揺ぎ無いな。
そこからはC++、PHPと続いて・・C#、VB、Perl、JavaScript、"COBOL"、VB.NET
C#よりVBの方が少なくてあれ?と思ったら、VB.NET分は別集計で合わせればVBの方が多い・・なるほど
しっかし、未だにCOBOLが10位内に入ってるなんて・・まだまだ絶滅しそうにないな。
明日はチョコレートの日だお
今妹の作った余り物を食ってるお
>>899 Pythonはやっぱり日本ではマイナーだw
でも、lispとかもないんだなw
903 :
◆UNKOVIP9RM :2009/02/14(土) 01:57:32
import チョコレート
904 :
デフォルトの名無しさん :2009/02/14(土) 02:15:07
insert my python 俺はもう駄目だ
# namedtuple for 2.5 def namedtuple(name, fields): from operator import itemgetter fields = fields.split() if hasattr(fields,'split') else fields attrs = dict((k,property(itemgetter(i))) for i,k in enumerate(fields)) attrs.update({ '__new__': (lambda cls,*xs: tuple.__new__(cls, xs)), '_make': classmethod(lambda cls,xs: cls(*xs)), '_fields': tupple(fields), }) return type(name, (tuple,), attrs) 便利なので簡易版書いてみた。backportされないかなぁ。
>>905 そんなバグありで使い道もいまいちパッとしない関数 (ry
908 :
デフォルトの名無しさん :2009/02/14(土) 19:26:53
>>905 マイナーバージョンアップで追加された機能がbackportされるわけねーだろwww
3.0.1
Python使う人間って南国の陽気な人間て感じがするんだよな
どちらかというとRuby使う人のが明るい
何と戦ってるんだ?w
Python使いはツンデレ Ruby使いはヤンデレ そんな妄想
min 関数で最小値を取り出すとき、key に関数を指定しますが、リスト内にいくつかの異なった要素があってこれらの key が等しくなるような場合はどれが返されるのでしょうか? 少し実験してみたら最初に見つかったものが返されているようですが、これは決まっていることですか? それとも偶然かもしれませんか?
みんなごめん。 いよいよ会社の貯金も先が見えてきたよ。 不況の世の中転職も大変だと思うが、がんばってくれよ。
>>915 保証はしていないみたいだけど
シーケンスにmin関数を適用したときに
仮に最初に見つかったもの以外が返されるなら
いったい中でどんなことやってるのか知りたい。
918 :
デフォルトの名無しさん :2009/02/15(日) 00:25:25
>>915 Python3のソース見る限りだとこんな感じのコードになってたので決まってることなんだろう。
m = next( iterable )
if not keyfunc is None:
m = keyfunc( m )
while not iterable.empty()
val = next( iteratable )
if not keyfunc is None:
val = keyfunc( val )
if m < val:
m = val
return m
minとmaxって同じ関数を引数変えて呼び出してるだけなんだな
static PyObject *
builtin_min(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_LT);
}
static PyObject *
builtin_max(PyObject *self, PyObject *args, PyObject *kwds)
{
return min_max(args, kwds, Py_GT);
}
>>918 > Python3のソース見る限りだとこんな感じのコードになってたので
> 決まってることなんだろう。
そういうもんじゃないと思うが。
そもそも「最初に見つかった」って一体何なんだ?
みんなのパイパイっていつ発売になるの? もうすぐでるならPHPやめてPythonやりたい
>>919 keyで指定した関数で得られる値が同じ要素のうち、イテレータブルを走査したときに
より先に現れる方、という意味だと思うけど
自分も
>>918 みたいに思ったのでhelp(min)してみたけど書いてないのでソースで!
って思ったんだけどたしかにそういうもんじゃないね
918 -> 917 いつも間違えるorz
どちらにしろ、実装で決まっててもそれをあてにしたコードは書けまい。
どうせ実装なんて1つしかないと開き直る手もあるぞ
pythonの実装をC++&boostにしてboostとシームレスに行き来できるようにしてくんねーかなー
2回言っても通じないってのは、余程人の話を聞かないか、分かってて煽ってるのか、複数人が連携して存在しない人格を作っているのかw
Rubyしかまともな言語がない状況では
pass
RubyやるくらいならPerlの方がまだマシだなぁ
いやPerlの後にPythonとRubyを実際に触ってみての感想なんだが
まあ無人島に二人きりになるとしたらLarryだよな。
1
日本語通じるMatzだろ
断然Larryだな
何故か候補にすら上がらないGuido
キャラが薄すぎるんだよな・・・
pass
>>919 要するに安定したソートか否かってことジャマイカ
RMSだと人生が変わってしまうかもしれん。
たまにはGuidoのことも思い出してあげてください><
ウメぼし食べて
ume星
ウメ太郎
うめ
おっぱいに顔をうめたい
ruby厨を地面にうめたい
うめぼしたべてすっぱまん!
ウメェェェェェ
isと==の違いってなに?
isと==の違いってなに?
文字列って関数の引数とかに渡したり返り値で返すときって、参照ですよね?
質問すれと間違えたごめんよ
958 :
デフォルトの名無しさん :2009/02/16(月) 18:41:15
俺もそれは思ったw
やってみたい言語は haskell と lisp かなあ
やってみたい言語は Ruby と Ruby かなあ
earlangかなぁ
RubyとJava以外
htmlは外せないな
C++
HSP
A アセンブリ言語 B BASIC C C言語 …(略… Z まで制覇しるm9(・∀・)ビシッ!!
968 :
デフォルトの名無しさん :2009/02/17(火) 05:44:35
le Fran¸le;ais
le Franc¸ais
le Français
OCaml
ここは言語オタクのスクツですね
Whitespace
a = b = 'isと==の違いってなに?' a == b True a is b True
PythonはRubyに叶わない。ずっと、ずっと。
むしろ逆だろ、日本はともかく世界的に見てもRubyはPythonにかなわない RubyはPerlと仲良くどんぐりの背比べをしてくれ
つうかまじでruby厨うざい。 ruby厨は全員首吊って死ねよ。 python人口の方が多い。 pythonの方がいろいろできる。 言語的仕様は好みの問題。 議論の余地無し。 以上。
ほぼすべて るびぃ をNGワード指定すれば防げるね
>>976 ガベージコレクションなんかで勝手に開放されて、
意図した結果と変わっちゃうことがあるということ?
そのとおり
結局のところ
>>979 が穏便かつ正論だと言わざるを得ないな
python3で...が特別扱いでなくなったんだな ついでにrange(0, ...)でitertools.count()にすればいいのに
Python3.0 ぱい3
pass
>>982 参照がある以上、解放はされないが、移動される可能性がある。
1. 左辺をフェッチ
2. 右辺をフェッチ
3. 比較
1と2の間にGCが起きると同じオブジェクトでもアドレスが違うかも知れない。
isはNone専用演算子
結局 is は何のためにつくられたの?
GCが起きないような評価で済む 左辺と右辺の同一性比較。 あらかじめ変数に代入しとけばOK! a = むにゃ b = ほにゃ a is b
TrueやFalseの比較にはis使ってもいいんだっけ?
次スレどこ?
998
999
100000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。