Pythonのお勉強 Part31
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/01/01(木) 23:44:57http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1226830195/
0002デフォルトの名無しさん
2009/01/01(木) 23:46:20┌──────────────────┐
| |
│ _ ∩ |
│ ( ゚∀゚)彡 おっぱい! |
│ ( ⊂彡 おっぱい! .|
│ | | |
│ し ⌒J |
│ |
│ Now Oppaing. .... .|
│ |
│ そのままおっぱいでお待ちください。 |
| |
└──────────────────┘
0003デフォルトの名無しさん
2009/01/02(金) 00:06:470004デフォルトの名無しさん
2009/01/02(金) 00:14:20おつぱいそん
0005!omikuji !dama
2009/01/02(金) 05:14:010006初心者
2009/01/02(金) 08:55:530007初心者
2009/01/02(金) 13:50:220008デフォルトの名無しさん
2009/01/02(金) 17:00:37そうだね、ハルマゲドンはすぐそこまで来ているよね。
0009デフォルトの名無しさん
2009/01/02(金) 17:37:390010デフォルトの名無しさん
2009/01/02(金) 18:29:45おっぱいそん!
0011デフォルトの名無しさん
2009/01/02(金) 21:24:05π乙
0012デフォルトの名無しさん
2009/01/02(金) 21:41:130013デフォルトの名無しさん
2009/01/02(金) 22:52:59ツールを僕に紹介してちょんまげ
0014デフォルトの名無しさん
2009/01/02(金) 23:12:040015デフォルトの名無しさん
2009/01/02(金) 23:46:310016デフォルトの名無しさん
2009/01/03(土) 00:25:010017デフォルトの名無しさん
2009/01/03(土) 01:17:470018デフォルトの名無しさん
2009/01/03(土) 02:09:00python -m compileall
何か面倒な事をしたいのなら、
def encode_src(src):
print("""exec '''%s'''.decode('base64')""" % src.encode('base64'))
encode/decodeは必要に応じてcompile,marshal他を組み合わせる。
0019デフォルトの名無しさん
2009/01/03(土) 02:12:42execも関数になるんだっけ。exec -> exec(...)
0020デフォルトの名無しさん
2009/01/03(土) 02:24:15# -*- coding: rot13 -*-
cevag('Uryyb, jbeyq!')
0021デフォルトの名無しさん
2009/01/03(土) 04:05:31... 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__
{}
生成されたインスタンスからメンバやメソッド情報を得るにはどうすればよいですか
0022デフォルトの名無しさん
2009/01/03(土) 05:18:430023デフォルトの名無しさん
2009/01/03(土) 07:51:16inspect.getmembers
0024デフォルトの名無しさん
2009/01/03(土) 08:03:27a.__dict__['fuga'](j, 0) # 引数 self にあたる部分を自分で渡す必要がある
恐らくやりたいことは、dir(instance) で調べて、getattr(j, 'fuga')(0)
0025デフォルトの名無しさん
2009/01/03(土) 08:42:00__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('__')]
0026デフォルトの名無しさん
2009/01/03(土) 09:13:182
>>> 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
できました
ありがとうございました
もっと勉強してみます
0027デフォルトの名無しさん
2009/01/03(土) 09:31:48... 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']
0028デフォルトの名無しさん
2009/01/03(土) 12:20:06exec使わずに実行とか出来るんですか
0029デフォルトの名無しさん
2009/01/03(土) 18:02:59exec使わずに実行て?
普通、言語のインスペクトではメソッドの中身とか取れないのが普通。
JavaScriptはソースが見れたっけ?
Pythonでの話に戻すけど、ソースコードをparserモジュールで構文木にして、
その構文木をソースとして実行とかできるのかな。やってみたことないけど。
0030デフォルトの名無しさん
2009/01/03(土) 18:10:040031デフォルトの名無しさん
2009/01/03(土) 18:12:400032デフォルトの名無しさん
2009/01/03(土) 19:02:450033デフォルトの名無しさん
2009/01/03(土) 21:37:30list1 = ['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']
どなたかわかりますでしょうか?
0034デフォルトの名無しさん
2009/01/03(土) 21:39:01ans = []
for elem in list1:
for key, vals in maps.items():
if elem in vals:
ans.append(key)
else:
ans.append(elem)
print ans
0035デフォルトの名無しさん
2009/01/03(土) 21:50:26変換したい方向と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 ]
こういうことでいいのかな?
0036デフォルトの名無しさん
2009/01/03(土) 22:08:25やばい。目から鱗どころじゃないっす。。
マップをつくるなんて、、。
しかも、以前valuesだったものをkeyにして、、なんて思いも浮かばなかった。
ありがとうございます!
しかし、実質1行とは。。予想以上でした。
これより最短はないですね。
ありがとうございます!
0037デフォルトの名無しさん
2009/01/03(土) 22:29:30l[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)
初心者なので腕試しのつもりで書きました
かなり行数使ってますが
0038デフォルトの名無しさん
2009/01/03(土) 22:30:11コードもらいました
これで逆変換
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']
003937
2009/01/03(土) 22:31:06代入せずに新しくリストを作ればいいのか
勉強になるなあ
0040デフォルトの名無しさん
2009/01/03(土) 22:34:06004138
2009/01/03(土) 22:38:56004237
2009/01/03(土) 22:41:40foo関数定義した意味がわからないな
駄コード書いて反省してます
すみませんでした
004337
2009/01/03(土) 22:59:21駄目すぎるな
0044デフォルトの名無しさん
2009/01/03(土) 23:28:11考えて損した
一から勉強し直そう
0045デフォルトの名無しさん
2009/01/04(日) 01:04:26細かいとこだけど。それだと class b(a) の後に class a を定義しているので
偶然前に定義した class a が残っていただけで、意図したテストになっていないはず。
後、クラス名はなるべく頭に大文字を使おう。
hige, hoge はクラス変数になっているので、
fuga をインスタンス作らずに呼び出したいなら、@classmethod
インスタンス変数にしたい場合コンストラクタ(__init__メソッド)内でhige,hogeを作る。
0046デフォルトの名無しさん
2009/01/04(日) 01:49:360047デフォルトの名無しさん
2009/01/04(日) 02:56:38JavaScriptは実装依存じゃないかな。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のソース書くって
インデントがどっちの言語のものか混ざって解らなくなったりしない?
(書いたことないけど
0048デフォルトの名無しさん
2009/01/04(日) 03:22:53item in maps.keys() は、item in maps の方が推奨されてる。
でも、この場面なら get メソッドの第2引数を使う方がいい。
item in maps.keys() and maps[item] or item -> maps.get(item, item)
0051デフォルトの名無しさん
2009/01/04(日) 03:51:01mapsをtransposeせずに探索。見つかってもまだ探索・・・。
[reduce(lambda x,(y,z): y if x in z else x, maps.iteritems(), i) for i in list1]
0052デフォルトの名無しさん
2009/01/04(日) 05:41:170053デフォルトの名無しさん
2009/01/04(日) 10:28:37なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
http://rail.s4.pf-x.net/bbs/
0054デフォルトの名無しさん
2009/01/04(日) 11:54:390055デフォルトの名無しさん
2009/01/04(日) 13:01:07{'a':'b'}
)
for row in a:
print row
これだと、{'a','b'}でなく、'a'が表示されます。
a = (
{'a':'b'},
)
これだと、ちゃんと{'a':'b'}と表示されます。
これは何故でしょうか?
0056デフォルトの名無しさん
2009/01/04(日) 13:09:38(x,)のように末尾のカンマが要るんだよ
>>> (1+2)*3
9
>>> (1+2,)*3
(3, 3, 3)
上の式のカッコがタプルだと思われても困るだろう?
0057デフォルトの名無しさん
2009/01/04(日) 13:18:48ありがとうございました
0058デフォルトの名無しさん
2009/01/04(日) 14:21:36print a
a = ({'a':'b'},)*3
print a
0059デフォルトの名無しさん
2009/01/04(日) 15:38:05for i in dict
は、for i in dict.keys()と同じだから。
0060デフォルトの名無しさん
2009/01/04(日) 16:43:35┃ ━ ╋━╋ ╋┓┏┓ ┳┻┳┏━ ┣━┳━ ┃
┃ ━ ┏┳┓ ┃┃┗┛ ┻━┻┃ ┃ ┃ ┃
┃ ━ ┗╋┛ ┏━┓ ┃ ┣┳ ┏━╋━ ┃
┃ ━ ━╋━ ┣━┫ ━╋━┃┃ ┃ ┃ ┃
┃┏┓━╋━ ┣━┫ ┏╋┓┃┃ ━┻━╋━ ┃
┃┃┃ ┃ ┗━┛ ┃┃┃┃┃ ┃ ┃
┃┗┛━┻━ ━┛┗━ ┃┃┃┃┃ ┃ ┃
┗━━━━━━━━━━━━━━━━━━━━━┛
∩
〈〈〈 ヽ
〈⊃ }
(\___/) | |
( ̄l▼  ̄)! !
/ ● ● | /
/ l ___\lミ/
/▲ ( 。--。 )
/■___ (( ̄)) 新年あけましておめでとうございますーーっ!
(___)  ̄/
2009年 元旦
0061デフォルトの名無しさん
2009/01/04(日) 17:06:590062デフォルトの名無しさん
2009/01/04(日) 19:39:07日本語はu"ほげ"で書くので、
他言語で発生するような文字化け問題は発生しないのではと思うのですが
そのあたりどうでしょうか
0063デフォルトの名無しさん
2009/01/04(日) 19:43:580064デフォルトの名無しさん
2009/01/04(日) 19:54:222.x では dict.keys()はキーのリストを作って返すので、同じになるのは dict.iterkeys()。
でも >>61 は解らない。バイトコードで?それともC関数内で?
自動的に加工してくれるという根拠とかどこにあるのか、よければ教えてください。
0065デフォルトの名無しさん
2009/01/04(日) 19:57:14class 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)と直接書けばいいのはわかるのですが、
このやり方はしたくありません。
そんな事は可能ですか?
0066デフォルトの名無しさん
2009/01/04(日) 20:01:210067デフォルトの名無しさん
2009/01/04(日) 20:10:57自分ひとりで同一環境で書いてる間は特に問題ない。
ブラウザからsvnレポジトリ内のソースを読む時、等
他のいろんな所とのやりとりを想定すると
ソース内には極力日本語を書かないようにするかutf-8に統一が無難。
0068デフォルトの名無しさん
2009/01/04(日) 20:31:54どういう用途なのかわからないけど、使えそうなものをとりあえず列挙すると
issubclass
Vector3.__bases__
0069デフォルトの名無しさん
2009/01/04(日) 20:35:36def __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'
がいいんだろう
0070デフォルトの名無しさん
2009/01/04(日) 20:58:24/hoge/
- __init__.py
- test.py
をmain.py内で、
import hoge
した場合、test.pyはimportされないのですか?
0071デフォルトの名無しさん
2009/01/04(日) 21:05:05やりたい事ってもしかして、コレ?
class Tuple3:
def __init__(self, arg=None):
if isinstance(arg, self.__class__):
print "ok"
else:
print "ng"
0072デフォルトの名無しさん
2009/01/04(日) 21:06:47パッケージは、__init__.py内で明示的にimportしない限り、
import hogeでimportされるのは hoge/__init__.pyのみ。
0073デフォルトの名無しさん
2009/01/04(日) 23:21:000074デフォルトの名無しさん
2009/01/04(日) 23:44:040075デフォルトの名無しさん
2009/01/04(日) 23:59:000076デフォルトの名無しさん
2009/01/05(月) 00:58:390077デフォルトの名無しさん
2009/01/05(月) 00:59:540078デフォルトの名無しさん
2009/01/05(月) 01:02:070079デフォルトの名無しさん
2009/01/05(月) 01:24:520080デフォルトの名無しさん
2009/01/05(月) 01:48:120081デフォルトの名無しさん
2009/01/05(月) 02:32:13----
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での辞書のキー定義と解釈される。
0082デフォルトの名無しさん
2009/01/05(月) 09:40:310083デフォルトの名無しさん
2009/01/06(火) 04:37:22http://bugs.python.org/issue4753
0084デフォルトの名無しさん
2009/01/07(水) 10:39:490085デフォルトの名無しさん
2009/01/07(水) 23:22:470086デフォルトの名無しさん
2009/01/07(水) 23:44:14この状況で独立するバカは中央線を止めないようにね。
0087デフォルトの名無しさん
2009/01/08(木) 12:30:28年末が一つの山だったみたいだな。
次は年度末の3月が山だと思うよ。
0088デフォルトの名無しさん
2009/01/08(木) 12:39:13景気も関係ないんじゃないの
0089デフォルトの名無しさん
2009/01/08(木) 14:29:340090デフォルトの名無しさん
2009/01/08(木) 15:16:190091デフォルトの名無しさん
2009/01/08(木) 15:37:57それ神様
0092デフォルトの名無しさん
2009/01/08(木) 15:49:59Peter Norvig
0093デフォルトの名無しさん
2009/01/08(木) 15:58:460094デフォルトの名無しさん
2009/01/08(木) 16:00:200095デフォルトの名無しさん
2009/01/08(木) 19:36:53もしかして: David Mertz と Sam Ruby
0096デフォルトの名無しさん
2009/01/08(木) 19:57:010097デフォルトの名無しさん
2009/01/08(木) 22:19:200098デフォルトの名無しさん
2009/01/08(木) 22:32:140099デフォルトの名無しさん
2009/01/09(金) 13:05:180100デフォルトの名無しさん
2009/01/09(金) 13:47:210101デフォルトの名無しさん
2009/01/10(土) 00:03:140102デフォルトの名無しさん
2009/01/10(土) 00:42:45Matz
0103デフォルトの名無しさん
2009/01/10(土) 03:15:280104デフォルトの名無しさん
2009/01/10(土) 04:22:410105デフォルトの名無しさん
2009/01/10(土) 07:10:06ないよね
0106デフォルトの名無しさん
2009/01/10(土) 10:10:010107デフォルトの名無しさん
2009/01/10(土) 10:15:060108デフォルトの名無しさん
2009/01/10(土) 10:52:580109デフォルトの名無しさん
2009/01/10(土) 13:09:390110デフォルトの名無しさん
2009/01/10(土) 14:21:090111デフォルトの名無しさん
2009/01/10(土) 14:28:34一般的にこういうのは迷惑なものなんだよ>javajaの人
0112デフォルトの名無しさん
2009/01/10(土) 16:25:56吹いた
0113デフォルトの名無しさん
2009/01/10(土) 17:28:00http://d.hatena.ne.jp/nishiohirokazu/20090109
0114デフォルトの名無しさん
2009/01/10(土) 19:11:31Matzと梶山民人(ninixの作者)なら知ってる。
0115デフォルトの名無しさん
2009/01/10(土) 20:32:09どう書く.orgなら知ってるのでそれ作った人か。
0116デフォルトの名無しさん
2009/01/11(日) 00:02:160117デフォルトの名無しさん
2009/01/11(日) 00:21:570118デフォルトの名無しさん
2009/01/11(日) 00:26:070119FreeBSD
2009/01/11(日) 00:27:560120デフォルトの名無しさん
2009/01/11(日) 00:32:380121デフォルトの名無しさん
2009/01/11(日) 12:47:00検索しにくい
Pythonはじまったな
0122デフォルトの名無しさん
2009/01/11(日) 20:01:50今同じディレクトリに以下の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()
0123デフォルトの名無しさん
2009/01/11(日) 20:04:06【driver.py】
5 obj =Hoge.Hoge()
0124デフォルトの名無しさん
2009/01/11(日) 20:07:413 from Hoge import Hoge
または
3 from Hoge import *
後者はおすすめしない
0125122
2009/01/11(日) 20:12:48動いたあああああああああああああああああああああ
ありがとう!!
でも・・・これはどういうことなの・・・?
HogeというパッケージにHogeクラスが属しているなら分かるんだけど、パッケージは作成せずに
同じディレクトリに二つのファイルを置いているだけなんだけど・・・
このあたりの動きってJavaとかPHPとはまったく別物?
0126デフォルトの名無しさん
2009/01/11(日) 20:37:21Pythonにとって、パッケージ=ディレクトリ、モジュール=ファイルなの。
Hoge.py という名前のファイルなら、 Hoge というモジュールの中に、 Hoge という
クラスができてた。
0127デフォルトの名無しさん
2009/01/11(日) 20:45:17何その糞言語・・・やっぱrubyに変えようかな
0128デフォルトの名無しさん
2009/01/11(日) 20:47:16丁寧にありがとう!
なるほどそういうことか・・・
Python慣れるまで大変そうだけど、慣れればかなり便利に使えそうな気がするぜ!
0129デフォルトの名無しさん
2009/01/11(日) 20:56:37./Hoge/__init__.py に
class Fuga 書くと
from Hoge import Fuga
になるし
./Hoge/Hage.py に
class Fuga 書くと
from Hoge.Hage import Fuga
になる
0130デフォルトの名無しさん
2009/01/11(日) 20:58:54正直Rubyよりはマシだと思う
0131デフォルトの名無しさん
2009/01/11(日) 21:19:25良くない選択肢のもう一方はもっと良くない選択肢かもしれない
0132デフォルトの名無しさん
2009/01/11(日) 21:46:450133デフォルトの名無しさん
2009/01/11(日) 22:00:020134デフォルトの名無しさん
2009/01/11(日) 22:40:450135デフォルトの名無しさん
2009/01/11(日) 22:49:240136デフォルトの名無しさん
2009/01/11(日) 22:50:42クライアント側でバリデーションをしたいので、JavaScriptで書きました。
でもサーバ側でも同じチェックをしなきゃいけないので、JavaScriptで書いたのと同じ内容のをJavaとかPHPとかで書かなきゃいけない。
もうばかばかしい。
サーバ側のバリデーション用プログラムからJavaScriptのプログラムが自動的に生成されたりできませんかね。
もう両方をメンテナンスするのに疲れた。
0137デフォルトの名無しさん
2009/01/11(日) 22:55:43誤爆?
発想は逆だけど、JavaScriptをサーバ側で動かすAptana JaxerっていうAPサーバ?があるよ
まぁ、そういった面倒なものはフレームワークとかにそれ相応の機能があるんだけどね。
PHPのZendFrameworkならフレームワークの一部分のみ使えたりするから試してみたら?
0138デフォルトの名無しさん
2009/01/11(日) 22:56:15ASP.NETとかその辺の高級な奴ならクライアントサイドバリデーションのコードを
自動生成してくれるんでなかったか
0139デフォルトの名無しさん
2009/01/12(月) 00:35:52そうだよ
だけど結局手作業は残る
Don't repeat yourself! なんて夢のまた夢
0140デフォルトの名無しさん
2009/01/12(月) 00:45:40いえ、誤爆じゃないです。
Python使いならわかってもらえると思って&&Pythonスレなら会社のやつに見つからないだろうと思って。
Djangoとかでクライアント側のバリデーションをしたい場合はどうするんでしょうか。
Djangoとしては特に支援機能はない?詳しくないので教えてちょーだい。
0141デフォルトの名無しさん
2009/01/12(月) 00:51:30http://pc11.2ch.net/test/read.cgi/php/1156612854/
0142デフォルトの名無しさん
2009/01/12(月) 01:31:51HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
0143デフォルトの名無しさん
2009/01/12(月) 01:39:46HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
0144デフォルトの名無しさん
2009/01/12(月) 01:54:25HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
0145デフォルトの名無しさん
2009/01/12(月) 02:01:01HTMLに出力したらさらにすげぇ!
・・・見安すぎて逆になんだかなぁ
0146デフォルトの名無しさん
2009/01/12(月) 02:59:28http://pc11.2ch.net/test/read.cgi/php/1156612854/
0147デフォルトの名無しさん
2009/01/12(月) 11:15:440148デフォルトの名無しさん
2009/01/12(月) 17:29:350149デフォルトの名無しさん
2009/01/12(月) 20:01:120150デフォルトの名無しさん
2009/01/12(月) 20:21:02NetBeans
0151デフォルトの名無しさん
2009/01/12(月) 21:28:16他のだと日本語を入力してもうまく出ないし、
そもそもlatin-1でコードが書かれてるのを前提としてるのばかりだからなぁ
0152デフォルトの名無しさん
2009/01/13(火) 10:09:23python.el
0153デフォルトの名無しさん
2009/01/13(火) 10:36:07Kdevelop
0154デフォルトの名無しさん
2009/01/13(火) 10:50:13komodoEditor
0155デフォルトの名無しさん
2009/01/13(火) 11:21:580156デフォルトの名無しさん
2009/01/13(火) 15:09:47IDLE
0157デフォルトの名無しさん
2009/01/13(火) 18:29:30ありがとうございました。
0158149
2009/01/13(火) 18:35:31NetBeansは扱いやすいですねw
0159149
2009/01/13(火) 18:37:02NetBeansは扱いやすいですねw
0160デフォルトの名無しさん
2009/01/13(火) 18:49:260161デフォルトの名無しさん
2009/01/13(火) 23:00:27StacklessPython風のコルーチンをCPythonに取り込むライブラリなんだが
Windows + VC9 + Python2.6で試してみたらあっさりクラッシュしたけど
ttps://codespeak.net/issue/py-dev/issue65
にあるように、Stacklessのヘッダ(switch_x86_msvc.h)をコピってきて
ビルドしたら動いた
0162デフォルトの名無しさん
2009/01/13(火) 23:37:28winで動くかは分からんが。
0163デフォルトの名無しさん
2009/01/13(火) 23:50:26実はeventletも試したんだけど、posix専用のsystemcallを結構使っているんで、
結構弄らないと使えないっぽいですね
0164デフォルトの名無しさん
2009/01/14(水) 14:43:35b = ['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がなんだか汚らしいのですが、なんとか綺麗にできませんか?
0165デフォルトの名無しさん
2009/01/14(水) 15:09:15b = ['boku', 'kimi']
aa = [s.split("<>") for s in a]
c = [dict(zip(b, ai)) for ai in aa]
こんなのはどうだろう
0166デフォルトの名無しさん
2009/01/14(水) 15:11:29c += [{}]
for Y, f in enumerate(i.split('<>')):
c[X][b[Y]] = f
とか
0167デフォルトの名無しさん
2009/01/14(水) 15:11:500168デフォルトの名無しさん
2009/01/14(水) 15:37:44かえるさんこんにちは。
0169デフォルトの名無しさん
2009/01/14(水) 18:34:17for 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
0170デフォルトの名無しさん
2009/01/14(水) 22:02:23ほとんどのディストリでは標準インストールされてないけど。
0171デフォルトの名無しさん
2009/01/14(水) 22:23:00$ python -m idlelib.idle &
でidleが立ち上がると思う
0172デフォルトの名無しさん
2009/01/15(木) 06:36:35CSV -> 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
0173デフォルトの名無しさん
2009/01/15(木) 06:54:46zip/splitの組み合わせは、splitにmaxsplitを指定しないと、
想定しないデータ('<>'の数が異なる)を受け取った場合、
末尾のデータを失う可能性がある。
namedtupleの場合、
maxsplitを指定しなければ要素数が異なる場合TypeErrorが投げれる。
2.5以前なら、namedtupleをbackportするか
レコード型のクラスを定義して、コンストラクタの引数で要素数をチェック。
0174デフォルトの名無しさん
2009/01/15(木) 11:48:21どうやって調べるんでしたっけ?
try:
x = myclass.hoge()
except:
pass
なんてやってるけど,if myclass.exists("hoge") みたいな感じの
何かがあるんでしたっけ?
0175デフォルトの名無しさん
2009/01/15(木) 11:55:410176デフォルトの名無しさん
2009/01/15(木) 12:40:44new style classの場合は、そのクラス,親クラスの__slots__を辿る。
old style classの場合は、無理。myclass.hogeがあるとしたら、それはクラス変数。
instanceなら hasattr(obj,'hoge') and not isinstance(getattr(obj,'hoge'),types.MethodType)
0177デフォルトの名無しさん
2009/01/15(木) 13:26:41なので hasattr が探していたものでした
thx です
0178デフォルトの名無しさん
2009/01/15(木) 23:29:17に対応するライブラリとかない?
0179デフォルトの名無しさん
2009/01/15(木) 23:42:290180デフォルトの名無しさん
2009/01/16(金) 00:12:44A型
Python
B型
Perl
O型
Ruby
AB型
NASM
0181デフォルトの名無しさん
2009/01/16(金) 00:46:26A型
PHP
B型
ひまわり
O型
C#
AB型
SmallTalk
0182デフォルトの名無しさん
2009/01/16(金) 01:03:32B型ですがPerlは構文的に脳が受け付けないです
Rubyは生理的にMatzを受け付けない
やっぱりおっPython!
0183デフォルトの名無しさん
2009/01/16(金) 01:07:44最近のイスラエル情勢に不満を覚え、PHPの利用をやめます!
0184デフォルトの名無しさん
2009/01/16(金) 01:27:35普通に unicode オブジェクトの translate() メソッドでいいのでは?
http://pc11.2ch.net/test/read.cgi/tech/1218155094/491
0186デフォルトの名無しさん
2009/01/16(金) 07:31:42ありますよ
0187デフォルトの名無しさん
2009/01/16(金) 10:23:17まさか知らないの?
0189デフォルトの名無しさん
2009/01/16(金) 10:46:50同じく (Rhマイナスだけど) B型ですがPerlは構文的に脳が受け付けないです。
ちなみにスクリプト言語どれやってみようか最後まで Python と迷ったのは Haskell というやつです。
0190デフォルトの名無しさん
2009/01/16(金) 10:47:57>B型
>Perl
だが断る!
0191デフォルトの名無しさん
2009/01/16(金) 10:48:460192デフォルトの名無しさん
2009/01/16(金) 11:03:46このスレの161を踏んだ者だが……
紛らわしいのでやめてくれ
0193デフォルトの名無しさん
2009/01/16(金) 13:55:500194デフォルトの名無しさん
2009/01/16(金) 13:58:57B型はマンプス。
AB型がPython。宣言はしないけど、型にうっさいという
O型はC。
0195デフォルトの名無しさん
2009/01/16(金) 14:05:09一応インタプリタもあるでよ
0196デフォルトの名無しさん
2009/01/16(金) 14:56:19人口比的にAB型がPythonだな
俺もAB型だし
A型はJavaScriptでいいよ
0197デフォルトの名無しさん
2009/01/16(金) 17:14:47たとえば、2019年の2月の日数は○○日みたいな感じのです
0198デフォルトの名無しさん
2009/01/16(金) 17:23:31>>> (date(2008, 3, 1) - date(2008, 2, 1)).days
29
>>> (date(2009, 3, 1) - date(2009, 2, 1)).days
28
0199デフォルトの名無しさん
2009/01/16(金) 17:24:330200デフォルトの名無しさん
2009/01/16(金) 17:27:51>>> import calendar
>>> calendar.monthrange(2019, 2)
(4, 28) # 曜日,日数
0201デフォルトの名無しさん
2009/01/16(金) 18:32:450202デフォルトの名無しさん
2009/01/16(金) 19:29:36結局どれが一番お勧めなの?
ステップライン実行デバックができるのがいいな
0203デフォルトの名無しさん
2009/01/16(金) 19:33:11Wing IDE
0204デフォルトの名無しさん
2009/01/16(金) 21:07:10たとえば、2000年の2月の末日は28日みたいな感じのです
0205デフォルトの名無しさん
2009/01/16(金) 21:31:27なお2000年は閏年ですので2月の末日は29日です
0206デフォルトの名無しさん
2009/01/16(金) 22:36:49彼が使っていたエディタはなにかわかるひといる?
ttp://imagepot.net/view/123211290262.jpg
0207デフォルトの名無しさん
2009/01/16(金) 22:51:130208デフォルトの名無しさん
2009/01/16(金) 23:25:13わかるひといます?
0209デフォルトの名無しさん
2009/01/16(金) 23:41:100210デフォルトの名無しさん
2009/01/16(金) 23:42:080211デフォルトの名無しさん
2009/01/16(金) 23:42:310212デフォルトの名無しさん
2009/01/16(金) 23:52:000213デフォルトの名無しさん
2009/01/16(金) 23:54:440214デフォルトの名無しさん
2009/01/17(土) 00:15:05フォントかっこいいな。なんてやつ?
0215デフォルトの名無しさん
2009/01/17(土) 01:38:47このフォントのどこが格好いいんだ
アンチエイリアスが中途半端で汚いじゃない
0216デフォルトの名無しさん
2009/01/17(土) 01:58:360217デフォルトの名無しさん
2009/01/17(土) 02:19:17なにこれ?
0218デフォルトの名無しさん
2009/01/17(土) 02:28:150219デフォルトの名無しさん
2009/01/17(土) 03:48:25ulf
0220デフォルトの名無しさん
2009/01/17(土) 06:27:301-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行目わかる?
0221デフォルトの名無しさん
2009/01/17(土) 06:33:51import sys
あとコメントが数行入って終了じゃないか
0222デフォルトの名無しさん
2009/01/17(土) 07:14:080223デフォルトの名無しさん
2009/01/17(土) 07:23:49本物のハッカーの多くは、GPLみたいな自由度の低い
ライセンスは採用しないよ。
彼等は単に何も書かないか(こっちの方が多い)、
MITやBSDライセンスにしてることだろう。
0224デフォルトの名無しさん
2009/01/17(土) 07:26:490225デフォルトの名無しさん
2009/01/17(土) 12:18:38普通にこれで使えるな
0226デフォルトの名無しさん
2009/01/17(土) 13:18:200227デフォルトの名無しさん
2009/01/17(土) 13:19:100228デフォルトの名無しさん
2009/01/17(土) 14:58:57元の画像には%sになってたからただの写し間違いだと思うが
host="hoge.fuga:587"
とかだったときにやっぱり表示は変になるね
0229デフォルトの名無しさん
2009/01/17(土) 15:00:350230デフォルトの名無しさん
2009/01/17(土) 16:10:242. '''hogehoge
3. fugafuga
4. '''
5. import socket
6. import sys
でFA?
0231デフォルトの名無しさん
2009/01/17(土) 16:14:282. # -*- coding: hoge -*-
3.
4. import socket
5. import sys
6.
0232デフォルトの名無しさん
2009/01/17(土) 16:25:29それっぽいw
0233デフォルトの名無しさん
2009/01/17(土) 16:58:530234デフォルトの名無しさん
2009/01/17(土) 18:54:520235デフォルトの名無しさん
2009/01/17(土) 19:03:38どれでも好きなのを選ぶといい
0236デフォルトの名無しさん
2009/01/17(土) 19:06:400237デフォルトの名無しさん
2009/01/17(土) 19:15:420238デフォルトの名無しさん
2009/01/17(土) 20:18:260239デフォルトの名無しさん
2009/01/17(土) 20:51:27024038
2009/01/18(日) 16:23:330241デフォルトの名無しさん
2009/01/18(日) 22:58:52PEP3を出来る限り守ったらこんな変なコードになってしまったんですが
どうすればいいですか?
0242241
2009/01/18(日) 22:59:260243デフォルトの名無しさん
2009/01/19(月) 00:01:430244デフォルトの名無しさん
2009/01/19(月) 00:24:110245デフォルトの名無しさん
2009/01/19(月) 00:28:200246デフォルトの名無しさん
2009/01/19(月) 00:31:27Lispならカッコは右下に連打するだろうな、とは思ったが……
一行79文字縛りがキツい、という話?
0247デフォルトの名無しさん
2009/01/19(月) 00:40:050248デフォルトの名無しさん
2009/01/19(月) 00:40:11変じゃないなら別にいいです
0249デフォルトの名無しさん
2009/01/19(月) 00:42:41正規表現を事前にコンパイルしてre.subの引数を減らせばいいんじゃね?
0250デフォルトの名無しさん
2009/01/19(月) 00:50:41x = re.sub(a, re.sub(b, c, d), x)
みたいなのを
y = re.sub(b, c, d)
x = re.sub(a, y, x)
と書く
どうせ一行に収まらないのなら、入れ子で書いても読みにくくなってるだけでしょ
「流れるインタフェース」でもないのだし
0251デフォルトの名無しさん
2009/01/19(月) 01:40:560252デフォルトの名無しさん
2009/01/19(月) 04:19:250253デフォルトの名無しさん
2009/01/19(月) 04:40:45うわっ、汚い。。。
普通は re_subs みたいな関数書いて、順にre.subが適用されるようにする。
あと、そのエディター酷いね。。色付けすらちゃんとされてないじゃん。
0255デフォルトの名無しさん
2009/01/19(月) 05:16:45そのぐらい自分で書けないと。
初心者レベルの難易度だよ。
0256デフォルトの名無しさん
2009/01/19(月) 08:15:14あのー、かんすーお願いします‥
なぜPythonスレの人たちはレベル低いのだろう
0257デフォルトの名無しさん
2009/01/19(月) 08:40:290258デフォルトの名無しさん
2009/01/19(月) 08:41:270259デフォルトの名無しさん
2009/01/19(月) 08:44:36知能低いのかね。小学生でも書けそうな関数だとおもうが。
0260デフォルトの名無しさん
2009/01/19(月) 14:35:170261デフォルトの名無しさん
2009/01/19(月) 18:07:26ttp://stat001.ameba.jp/user_images/cb/2d/10040538808.png
0262デフォルトの名無しさん
2009/01/19(月) 18:07:440263デフォルトの名無しさん
2009/01/19(月) 18:08:51このカンスゥーは無表情すぎて怖い
0264デフォルトの名無しさん
2009/01/19(月) 18:23:11print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
0265デフォルトの名無しさん
2009/01/19(月) 18:24:56print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
0266デフォルトの名無しさん
2009/01/19(月) 18:25:00print 'Hello, world!'
ってやってもエラーになる
嘘ばっかだなと思って
英語のほうを見たら
print ('Hello, world!')
って書いてあったので
そのとおりやったらできた。
>>1はうそつき超汚染人だ!
0267デフォルトの名無しさん
2009/01/19(月) 18:35:47初心者丸出し
と釣られてみる
0268デフォルトの名無しさん
2009/01/19(月) 21:01:280269デフォルトの名無しさん
2009/01/19(月) 21:43:200270デフォルトの名無しさん
2009/01/19(月) 22:04:503.0→2.3.4jp→2.6.1→2.5.1
0271デフォルトの名無しさん
2009/01/19(月) 22:14:51printが強制的にカンスゥーになってたり
rangeがオブジェクト返すようになっててちょっと困惑するんだよね
0272デフォルトの名無しさん
2009/01/19(月) 22:52:180273デフォルトの名無しさん
2009/01/19(月) 23:16:29x = range(100)
#3.0
x = [i for i in range(100)]
0274デフォルトの名無しさん
2009/01/19(月) 23:34:580275デフォルトの名無しさん
2009/01/20(火) 00:21:090276デフォルトの名無しさん
2009/01/20(火) 01:17:083はなんだかちょっと面倒だなって気がしてきた
0277デフォルトの名無しさん
2009/01/20(火) 01:19:520278デフォルトの名無しさん
2009/01/20(火) 07:10:13パイソンのスレッドって馬鹿しかいないなー
0279デフォルトの名無しさん
2009/01/20(火) 08:03:220280デフォルトの名無しさん
2009/01/20(火) 08:26:21に必死で突っ込むひとまだですか?
0281デフォルトの名無しさん
2009/01/20(火) 08:35:032.5用のライブラリで2.6で動かなくなったのってある?
0282デフォルトの名無しさん
2009/01/20(火) 10:49:45基本的には 2.5 -> 2.6 では減っているものはない。
The *** module has been deprecated for removal in Python 3.0.
という形で 3.0 でなくなる予定のライブラリは -3 オブションで警告がでるのみ。
実際に標準ライブラリから外されるのは 3.0 から。
但し、細部では各ライブラリのバージョン・アップによる変更があるので、
ライブラリ自体が動かなくなったものは知らないが、# >>> import test.autotest を参考に。
それを使ったコードの方で修正が必要なものはあるかもしれない。
0283デフォルトの名無しさん
2009/01/20(火) 15:25:18#!/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"
0284 ◆TINKO/J0J6
2009/01/20(火) 16:54:580285 ◆UNKOVIP9RM
2009/01/20(火) 16:56:150286デフォルトの名無しさん
2009/01/20(火) 16:57:280287デフォルトの名無しさん
2009/01/20(火) 17:56:070288デフォルトの名無しさん
2009/01/20(火) 17:56:14k=mp+nq(m,nは「0以上の整数」)を満たす(m,n)の組の数をv(k)とするとき
p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです
どのように書いたらいいですか?
0289 ◆UNKOVIP9RM
2009/01/20(火) 17:58:02ggks
0290デフォルトの名無しさん
2009/01/20(火) 18:05:00q=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)
0291デフォルトの名無しさん
2009/01/20(火) 18:11:16[(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)))
0292291
2009/01/20(火) 18:13:44まあいいや
0293デフォルトの名無しさん
2009/01/20(火) 18:26:22>>> 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
0294デフォルトの名無しさん
2009/01/20(火) 18:37:45>>> 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 みたいなもん、
0295デフォルトの名無しさん
2009/01/20(火) 18:48:310296デフォルトの名無しさん
2009/01/20(火) 18:51:40Thank you so match.
0297デフォルトの名無しさん
2009/01/20(火) 18:56:16待ち人来たらず
0298デフォルトの名無しさん
2009/01/20(火) 19:11:35for 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))]))
こうですか
わかりません
0299デフォルトの名無しさん
2009/01/20(火) 19:13:47ありがとうございました
0300デフォルトの名無しさん
2009/01/20(火) 19:37:45あってるっぽい気がするけど?
0301デフォルトの名無しさん
2009/01/20(火) 19:42:110302デフォルトの名無しさん
2009/01/20(火) 19:49:440303デフォルトの名無しさん
2009/01/20(火) 20:16:213^(3^3)の一の位の数字は?
7^(7^7)の一の位の数字は?
13^(13^13)の一の位の数字は?
17^(17^17)の一の位の数字は?
n^(n^n)の一の位の数字は?
0304デフォルトの名無しさん
2009/01/20(火) 20:30:34などはCなどで書かれていると思いますが、ptyhonでも同様のことができますか?
そこまで大規模なツールではなく簡単シンプルなツールです。
本屋でちょっと読んだ参考書にはwindows用のフォームやボタンの配置などが
書かれていなかったので、CUIのプログラミングだけかと…
0305デフォルトの名無しさん
2009/01/20(火) 20:35:400306デフォルトの名無しさん
2009/01/20(火) 20:37:080307デフォルトの名無しさん
2009/01/20(火) 20:38:38VB6の代わりにならないかな
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キボンヌ!
0308デフォルトの名無しさん
2009/01/20(火) 20:39:330309デフォルトの名無しさん
2009/01/20(火) 20:40:180310デフォルトの名無しさん
2009/01/20(火) 20:59:57BASICでクソプログラム見せられたらやっぱPythonできれいに書きたくなるよね。
0311310
2009/01/20(火) 21:01:430312デフォルトの名無しさん
2009/01/20(火) 21:23:33オマエが読んだクソ本を怨め
0313デフォルトの名無しさん
2009/01/20(火) 21:38:57p = 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]
0314デフォルトの名無しさん
2009/01/20(火) 22:21:03from 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))
0315314
2009/01/20(火) 22:39:220316デフォルトの名無しさん
2009/01/20(火) 22:40:160317デフォルトの名無しさん
2009/01/20(火) 23:44:560318デフォルトの名無しさん
2009/01/20(火) 23:49:547
>>> pow(7,pow(7,7),10)
3
>>> pow(13,pow(13,13),10)
3L
>>> pow(17,pow(17,17),10)
7L
あってる?
0319デフォルトの名無しさん
2009/01/21(水) 00:35:03アルゴリズム的には n が大きいときの pow(n, n) が課題。
0320デフォルトの名無しさん
2009/01/21(水) 01:37:05>>> 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
0321317
2009/01/21(水) 01:57:21# 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()
0322デフォルトの名無しさん
2009/01/21(水) 02:25:02def 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
0323デフォルトの名無しさん
2009/01/21(水) 02:28:110324デフォルトの名無しさん
2009/01/21(水) 05:39:19そこまでたどり着けば実はpow使わなくても答え出てるんだけどね
0325デフォルトの名無しさん
2009/01/21(水) 05:45:0213=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。
0326デフォルトの名無しさん
2009/01/21(水) 08:11:540327デフォルトの名無しさん
2009/01/21(水) 09:36:240328デフォルトの名無しさん
2009/01/21(水) 10:30:01http://www.amazon.co.jp/products/dp/4873112109/
はじぱい原著 3rd Edition (2008/07/16) $26.39
http://www.amazon.com/Learning-Python-3rd-Mark-Lutz/dp/0596513984/
恥ぱい 初犯 (2007/11) \1,995
http://www.amazon.co.jp/products/dp/4777513211/
恥ぱいネットワーク 初版 (2008/06) \1,995
http://www.amazon.co.jp/products/dp/4777513688/
恥ぱい3 初版 (2009/01) \1,995
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1419-9
恥ぱいが3.0用になったんですね
0329デフォルトの名無しさん
2009/01/21(水) 11:10:290330デフォルトの名無しさん
2009/01/21(水) 11:20:550331デフォルトの名無しさん
2009/01/21(水) 11:40:37ガンガンやってくれるならお布施くらいはするでよ?
0332 ◆UNKOVIP9RM
2009/01/21(水) 11:53:01惚れた
惚れた
惚れた
できれば結婚してくれ
0333 ◆UNKOVIP9RM
2009/01/21(水) 11:54:09買う 買うー
0334デフォルトの名無しさん
2009/01/21(水) 11:58:54pow(n % 10, (n & 3) or 4, 10)
0335 ◆UNKOVIP9RM
2009/01/21(水) 11:59:03>>> print (329.star())
"星3つ"
0336デフォルトの名無しさん
2009/01/21(水) 12:08:27はじぱいの癖に5040円って翻訳書のはじ
0337 ◆UNKOVIP9RM
2009/01/21(水) 12:18:59円安だったんだよ
0338デフォルトの名無しさん
2009/01/21(水) 12:55:26>>> [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が血がウっぽい
0339デフォルトの名無しさん
2009/01/21(水) 13:01:341 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 をもっと計算量減らせるはず
0340デフォルトの名無しさん
2009/01/21(水) 13:24:25n=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]
0341デフォルトの名無しさん
2009/01/21(水) 13:31:21... (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]
0342デフォルトの名無しさん
2009/01/21(水) 13:32:49買わなくていいよ(ww
0343デフォルトの名無しさん
2009/01/21(水) 13:46:57... (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
0344デフォルトの名無しさん
2009/01/21(水) 14:00:12と
0, 1, 6, 3, 6, 5, 6, 7, 6, 9
を交互に繰り返してるだけだね
2, 4, 6, 8 が全部 6 になってる
しかも 3, 7 以外はずっと固定なんだ
もっと簡単な式になりそうw
0345デフォルトの名無しさん
2009/01/21(水) 14:12:33a = 'あいうえお、亜意卯得汚'
re.sub('\\x', '', a)
だと3.0はunicodeエラー、2.xはエスケープシーケンスに\xなんてないと言われます
0346デフォルトの名無しさん
2009/01/21(水) 14:17:13a = u'あいうえお、亜意卯得汚'
でうまく行くと思うけど
0347デフォルトの名無しさん
2009/01/21(水) 14:18:330348デフォルトの名無しさん
2009/01/21(水) 14:24:46re.sub(u'[\u1000-\u9999]', '', a)
0349デフォルトの名無しさん
2009/01/21(水) 14:25:490350デフォルトの名無しさん
2009/01/21(水) 14:30:43>>> 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'あいうえお但亜依鵜絵緒'
0351デフォルトの名無しさん
2009/01/21(水) 14:39:25ユニコードブロックである程度分けることができるが
記号とかもあるし
漢字系はCJKごった煮ブロックとかに入っているし
結局「日本語とは何か」という話になる
が、単に「非ASCII文字」という意味なら
[\u0100-\uffff]とかでマッチさせればいいよ
0352デフォルトの名無しさん
2009/01/21(水) 14:39:37>>> print re.sub(ur'[\u1000-\u9999]', '', a)
abcdefghi
0353351
2009/01/21(水) 14:42:32まあ目的から言ってLatin1が入ろうが入るまいがあまり関係ないとは思うが
0354デフォルトの名無しさん
2009/01/21(水) 22:13:00うまくできたら日本語ページだけぐぐって欲しいのに
中国語まで検索するグーグルに売ってやれ。
0355デフォルトの名無しさん
2009/01/21(水) 22:37:16盲牌損無関係雀
0356デフォルトの名無しさん
2009/01/22(木) 00:40:01力技だけど、日本語の文字をずらーっと列挙して日本語の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)
0357356の続き
2009/01/22(木) 00:42:10start = 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 + "]+")
みたいに使うといいかも。この手のモジュール、既に誰か作ってるんじゃないかなー。
0358デフォルトの名無しさん
2009/01/22(木) 01:56:430359デフォルトの名無しさん
2009/01/22(木) 02:01:12>ja_kana = "ぁ-ん゛-ゞァ-ヶ・-ヾ"
>みたいな文字列を定義しておいて
japanese_charset_ranges = get_japanese_charset_ranges()
のところで
モジュールがあればそっちをimport
無ければget_japanese_charset_ranges()を実行
するように作っておけばよさそうですね
0360デフォルトの名無しさん
2009/01/22(木) 02:03:16無ければget_japanese_charset_ranges()を実行(と同時にモジュール作成)
するように作っておけばよさそうですね
0361デフォルトの名無しさん
2009/01/22(木) 06:30:440362デフォルトの名無しさん
2009/01/22(木) 10:53:24>>> a
[['', '', ''], ['', '', ''], ['', '', '']]
>>> a[2][1]='a'
>>> a
[['', 'a', ''], ['', 'a', ''], ['', 'a', '']]
deepcopyじゃないからこうなるのは分かるのですが、
deepcopyしたいときにはどう書けば良いのでしょうか?
a=[['']*3, ['']*3, ['']*3]
しかないですか?
0363デフォルトの名無しさん
2009/01/22(木) 11:20:23>>> a='ag cee\nat eatunasdg\nasd\ npoig ausd laert\na;sgu asti'
>>> len(a.split('\n'))
4
0364デフォルトの名無しさん
2009/01/22(木) 11:21:250365デフォルトの名無しさん
2009/01/22(木) 11:22:460366デフォルトの名無しさん
2009/01/22(木) 11:25:18thx!
0367デフォルトの名無しさん
2009/01/22(木) 11:36:42for 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)]
0368デフォルトの名無しさん
2009/01/22(木) 12:42:00ttp://lightson.dip.jp/zope/ZWiki/157_e3_83_95_e3_82_a1_e3_82_a4_e3_83_ab_e3_81_ae_e8_a1_8c_e6_95_b0_e3_82_92_e6_95_b0_e3_81_88_e3_82_8b
0369デフォルトの名無しさん
2009/01/22(木) 13:01:21面倒くせ
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
0370369
2009/01/22(木) 13:03:42まあいいや
0371369
2009/01/22(木) 13:09:49def 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
0372デフォルトの名無しさん
2009/01/22(木) 14:07:23どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらCで書いた方がよくないか?
0373 ◆UNKOVIP9RM
2009/01/22(木) 14:30:43変態
0374デフォルトの名無しさん
2009/01/22(木) 16:22:51どのぐらい頻繁に使うかによるが、
\n のカウントぐらいだったらアッセンブッラで書いた方がよくないか?
0375 ◆UNKOVIP9RM
2009/01/22(木) 16:24:45変態
0376デフォルトの名無しさん
2009/01/22(木) 16:55:23URLのは、書き方は違うけど>>367の一番下のに相当。
普通はこれで十分だけど、バイナリファイルを間違って読み込んでしまった場合や、
プログラムが生成したファイルなんかだと行の長さがとても長い場合があるので、
そういった例外的なケースへの対応が >>371
実装方法は幾通りかあるけど、大筋はこんな感じ。
- read(size), readline(size)等でのバッファ長を指定しての読込。
- 改行文字 CRLF,CR,LF をカウント。
>371
fileオブジェクトは、__enter__,__exit__属性持ってるのでclosing不要なはず。
0377デフォルトの名無しさん
2009/01/22(木) 17:31:15メモリマップトファイル使えば?
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')
0378デフォルトの名無しさん
2009/01/22(木) 17:40:15そんなに速くない上にサイズ制限ができるだけに見える
0379378
2009/01/22(木) 17:45:05if c == '\n' <= Pythonインタプリタレベルが比較を各バイトで行う
という意味ね
0380デフォルトの名無しさん
2009/01/22(木) 18:23:2064bit環境になってからアドレス空間については無頓着になってたよ。
Cの実装うんぬん、ということなら、
m = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
count = 0
while m.readline():
count += 1
みたいにやれば良いと思う。
0381デフォルトの名無しさん
2009/01/22(木) 18:29:360382デフォルトの名無しさん
2009/01/22(木) 18:36:13そういわれれば。うーん。
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()
だんだん辛くなってきた。
0383デフォルトの名無しさん
2009/01/22(木) 18:48:58で測ってみた。ファイルは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
0384デフォルトの名無しさん
2009/01/22(木) 19:07:190385デフォルトの名無しさん
2009/01/22(木) 19:09:33Cには勝てなかったかw
0386デフォルトの名無しさん
2009/01/22(木) 19:11:000387デフォルトの名無しさん
2009/01/22(木) 19:15:02よかったらpsyco使ってみてほしい
0388デフォルトの名無しさん
2009/01/22(木) 20:57:00頭に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に高速化
0389デフォルトの名無しさん
2009/01/22(木) 22:10:110390デフォルトの名無しさん
2009/01/22(木) 22:13:49にするとさらに速くなるんかな
0391デフォルトの名無しさん
2009/01/22(木) 22:30:55lenやバッファサイズ指定のないreadline(含む for _ in open(...))を利用するものの速度は、
環境(メモリ)や読み込む対象のファイルに依存するので、
巨大なバイナリファイルでも試してみてメモリの使用量も併せて較べてみよう。
メモリ使用量が一定で、計算量が ファイルサイズ/バッファサイズ に比例になっていれば及第点。
mmapのコードは、>377は単純にpythonでのループ回数が多くなるのが問題だけど、
大域変数の参照(LOAD_GLOBAL)等、繰り返し処理する上での不利な点が多いので、
ベンチマーク対策としては、m.findをローカル変数に代入や、partialを使う等、もう少し工夫の余地在。
0392デフォルトの名無しさん
2009/01/22(木) 23:05:18import 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(';')
だと前者の方が変更がかなり楽になると思うんですが…
0393デフォルトの名無しさん
2009/01/22(木) 23:25:28hensu = os.environ['Path']
print hensu
sp(hensu)
def sp(hensu):
print hensu.split(';')
で何か不満でも?
グローバル変数を使うと
・ 処理の汎用性が低下し、融通が利かなくなる
・ 変数を変更できる範囲が大きく、デバッグ範囲が広範になる
などの問題がある。
0394デフォルトの名無しさん
2009/01/22(木) 23:30:04他のスクリプトでも使おうと思い main() と sp() をコピペ
→ hensu がないぞと怒られる
死ぬほど不便じゃないか
0395デフォルトの名無しさん
2009/01/22(木) 23:36:53>>394は撤回します
0396デフォルトの名無しさん
2009/01/22(木) 23:36:56グローバル変数使ってる方がコピペ面倒だろ
0397デフォルトの名無しさん
2009/01/22(木) 23:38:290398デフォルトの名無しさん
2009/01/22(木) 23:40:19うん、global変数は
[ globals().__setitem__('global_%d' % n) for n in range(100) ]
とかで書き換えられるが
locals()はリードオンリーだし
global以外の自由変数にはPython2.xでは代入できないし
osとかmainとかspってglobal変数だよな
どんどん使うといいと思うぞ
0399デフォルトの名無しさん
2009/01/22(木) 23:42:09至ってまともな反応だと思うよ
でも、グローバル変数は基本的に使っちゃ駄目って言われてる。
理由は>>393の言うとおりで、それぐらいのソース量だとパッと見ればどこに
定義されてて、どこでどんな風に使われてるか分かるけど、ある程度のソース量
になってくると分からなくなってくるのね。
で、>>393のような考え方が主流になって、さらにオブジェクト指向っていう考え方
が出てきた。
利便性で言えば確かにグローバル変数は使いやすいけど、バグを生む原因になり
安いから使わないほうが良いよってこと。
0401デフォルトの名無しさん
2009/01/22(木) 23:48:01変数の範囲を絞った上で、異なる関数から同じ変数を参照出来る。
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 の様に宣言しよう。(推奨)
0402デフォルトの名無しさん
2009/01/22(木) 23:48:38ほうがプログラムが簡潔になる事はよくある。グローバル変数が
推奨されない理由は、大きな規模のプログラムでは全ての変数の
状態管理をするのは難しい事、それと変数名が衝突してしまうな
どの不都合があるため。
>>392はC言語でそれなりの規模のプログラムを全てグローバル変
数で管理して書いてみるといいよ
いやというほど理解できると思うよ
04033q1
2009/01/23(金) 00:01:52ひきすうが多くてややこしくなったんですが…
>>394
返り血がある関数等はもちろん引数を使ってますが
普通の関数ではグローバル変数の方が楽だと思うんですが…
>>401
クラスだと、
hoge = clas()
hoge.hoge()
print hoge.hoge_value
みたいになって気持ち悪いんですが仕方ないのですかね
後、globalは関数内でのみ適応されるのでしょうか?
0404デフォルトの名無しさん
2009/01/23(金) 00:10:440405デフォルトの名無しさん
2009/01/23(金) 00:15:32一番の問題は、多用したときにすぐ人間の理解の限界を超えてしまうこと。
他人に読ませる気のないホビープログラミングなら好きなだけ使えばいいと思うよ。
0406デフォルトの名無しさん
2009/01/23(金) 00:23:15グローバル変数で定義するのやめてくれ。
Singletonはグローバル変数の免罪符じゃないからっ!
0407デフォルトの名無しさん
2009/01/23(金) 00:25:09ただ、関数を通じてアクセスする分、比較的管理はしやすい。
0408デフォルトの名無しさん
2009/01/23(金) 00:41:270409401
2009/01/23(金) 00:48:11変数やクラスの名前に適切な名前を付けることで、わかり易くなるよ。
グローバル変数のスコープは、Pythonの場合はモジュール(=ファイル)内
global宣言が有効なのは関数内のみ。一応、突っ込んで書いておくと、
global宣言はグローバル変数を書き換える場合のみ必要で、参照だけなら不要なんだけど、
(global変数の初期化を関数内で行う時等に利用)
と、ここまで書いて気づいた。
global宣言は、変数名衝突時に関数内からグローバル変数を変更するリスクを引き込むので不用意に宣言しちゃ駄目だ。
関数内でどれがグローバル変数か宣言してると読みやすいと思ったんだけどなぁ。
(>>401の最後の行は取消 m(_ _)
逆に言うと、(Pythonの場合)global宣言なしに不用意な名前衝突によるグローバル変数の書換は起こらないので、
数値・文字列・タプル等の参照だけなら、問題ないかなって気がしてきた。(実質、定数としての利用)
0410392
2009/01/23(金) 00:48:41CGI等で、ファイル名のぢctをプログラム全体で使ったり
クエリをぢctにしてプログラム全体使うのは
グローバル変数って言わないのですか?
0411401
2009/01/23(金) 01:12:48Pythonでは定数が無いので変数を定数として使う慣習がある。
コード上はどちらも変数なんだけど、役割によって分類すると
プログラム内で初期化以降変更されないと約束されているなら定数。
頻繁に変更される・変更される可能性があるなら変数。
0412デフォルトの名無しさん
2009/01/23(金) 02:10:32コードの再利用は、コピぺせずにimportして利用しよう。
0413デフォルトの名無しさん
2009/01/23(金) 02:27:59globalは、コピぺせずにimport globals.pyして利用しよう。
0414デフォルトの名無しさん
2009/01/23(金) 04:03:40普通の変数と _ ってメモリの使い方が違うの?
0415デフォルトの名無しさん
2009/01/23(金) 08:51:48グローバル変数を使わない方が分かりやすいと感じない人は
結局どんな条件でも分かりやすく書けないよ。
問題を小さな複数の問題に分割できないってことだから。
0416デフォルトの名無しさん
2009/01/23(金) 08:55:270417デフォルトの名無しさん
2009/01/23(金) 09:28:22ソース書いた時の約束事をずっと覚えていられるくらい
記憶力に自信があるのだったら問題ない
0418デフォルトの名無しさん
2009/01/23(金) 12:28:24どうしてもPurePythonじゃないとダメなら仕方ないが
0419デフォルトの名無しさん
2009/01/23(金) 12:40:30もちろん変数名は大文字で書いてさ
0420デフォルトの名無しさん
2009/01/23(金) 13:02:45Pythonのグローバル変数は結局のところモジュールのtoplevelの定義であって
モジュール外部からの参照には名前修飾がいるし
モジュールのtoplevelで定義されたclassだのdefだのは全部グローバル変数だし
sys.argvだのsys.stdinだのsys.pathだのはグローバル変数だし
グローバル変数使わずにPythonのコード書いてみろってんだよ
0421デフォルトの名無しさん
2009/01/23(金) 13:13:51だって普通のxmlパーサは口うるさいんだもの
腐ってるhtml喰えるBeautifulSoupはどうしても重宝する
0422デフォルトの名無しさん
2009/01/23(金) 13:15:06>>418ではないが、lxmlは腐ってるHTMLも喰えるし
BeautifulSoupよりずっと高速だしElementTree互換のAPIに加えて
XPATHとかも使えてずっと高機能だよ
0423デフォルトの名無しさん
2009/01/23(金) 13:22:54lxml.html.soupparser
0424421
2009/01/23(金) 13:53:15次はlxml使ってみようと思う。あんまりxmlいじる機会ないけど
0425デフォルトの名無しさん
2009/01/23(金) 15:18:37標準ライブラリを参考に、どういう所で使われているか適当にピックアップしてみた。
- モジュール外から参照されたくない場合 _ 接頭子をつける。(モジュール内プライベート)
- 定数。(数値、文字列、バージョン等のタプル、) 変数名は大文字で。
- キャッシュ等の用途に使う場合は、利用する関数の直前で宣言/初期化。(re.compileや辞書等)
- Singletonのインスタンス。生成するメソッドの前で宣言。変数名は _ prefix付き。
※ クラス変数にする、若しくは2.6以降ならクロージャ内に隠せる。
名前の衝突については、宣言なしに意図しない書き換えは起きないけど、
コードを読む時には混乱の元になるので、可読性の面で問題あり。変数名の運用ルールは必須。
>>420
Pythonの"グローバル変数"についてはその通り、通常、モジュール内toplevelの変数を指す事になるのだけど、
用途を無視して極論になってるよ。誰もクラス(class)やtoplevelでの関数(def)を使うなとは言ってない。
戒めるべきグローバル変数の利用は、一般に C言語等で言われているグローバル変数の乱用で、
グローバル変数を利用した関数間の値渡し等の、主にモジュール結合度の高いとされる利用法がそれに当たる。
Pythonに当てはめると、組み込み関数(__builtin__モジュール)が
どのモジュールからも名前修飾なしに使える、本当のグローバルと言う事になるけど、
通常の利用では__builtin__内を変更する事は、まずないので。そういった意味では、
モジュール内にスコープが限定される為、C言語程ナーバスになる必要はないかもしれない。
でも、比較的影響範囲が低いというだけで、用途を無視して積極的に使っていいかどうかはまた別の議論。
>>416
綺麗に構造化されたプログラムは、高い拡張性と変更に強い柔軟性を備える事になる。ソフトウェア品質の指標の一部。
0426デフォルトの名無しさん
2009/01/23(金) 15:25:49PEP8には書いてなかったと思うんですが
定数名は大文字で書いていいのですか?
0427デフォルトの名無しさん
2009/01/23(金) 15:54:040428デフォルトの名無しさん
2009/01/23(金) 15:59:250429デフォルトの名無しさん
2009/01/23(金) 17:11:06PEP8に書いてるよ。
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.
0430デフォルトの名無しさん
2009/01/23(金) 17:22:030431デフォルトの名無しさん
2009/01/23(金) 17:42:09http://svn.python.org/view/peps/trunk/pep-0008.txt
0432デフォルトの名無しさん
2009/01/23(金) 18:15:37ホントだ。追加された日付、昨日。
0433デフォルトの名無しさん
2009/01/23(金) 18:18:470434デフォルトの名無しさん
2009/01/23(金) 21:03:50違わない。
リスト内包の細かな最適化では、mapにすると早くなるケースはある。
0435デフォルトの名無しさん
2009/01/23(金) 23:14:55名前修飾されてればいいとかそんなのどうでもいいんだよぅ
頭にg_でも付けてろっての。
0436デフォルトの名無しさん
2009/01/23(金) 23:17:43話はしてないから安心しろ
0437デフォルトの名無しさん
2009/01/24(土) 09:50:28恥ぱいは売ってなかった
(売り切れたのかあるいは新刊を売るための書店の配慮なのか・・・)
恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし
恥ぱい3はpythonというかプログラミング自体の初心者向けなんだろうが
買いたいとは思わなかったしこれから始める人にも薦めたいとまでには至らなかった
0438デフォルトの名無しさん
2009/01/24(土) 12:43:15さっくりまとめてあるというわけでもないんかな?
0439デフォルトの名無しさん
2009/01/24(土) 13:17:37Jython本に似てる。
0440デフォルトの名無しさん
2009/01/24(土) 14:26:31もしかしたら俺の方がもっと良いのが書けるとか売れるのが書けるとか
思って後から日本語の本が色々出版されるようになるかもしれんし
0441デフォルトの名無しさん
2009/01/24(土) 15:35:07恥ぱい3は python 知ってる人には不要だろうね
Jython 本は役に立たないw
恥ぱい3は初心者に少しは役に立つから Jython 本よりはお奨め
0442デフォルトの名無しさん
2009/01/24(土) 16:45:50俺から行くぜ。
もくじ
0443デフォルトの名無しさん
2009/01/24(土) 16:49:480444デフォルトの名無しさん
2009/01/24(土) 16:51:390445デフォルトの名無しさん
2009/01/24(土) 16:54:28عکساولپیامآپدیتدانلودمنجررانشانمیدهد
عکسدومزمانیستکهدکمهآپدیتلآپدیتاست
عکسسومپیاممیدهدکهسروربهتران
0446デフォルトの名無しさん
2009/01/24(土) 17:12:45なんて書いてあるのか気になる。
0447デフォルトの名無しさん
2009/01/24(土) 17:18:04ペルシア語は対応してませんと言われた。
0448デフォルトの名無しさん
2009/01/24(土) 20:24:420449デフォルトの名無しさん
2009/01/24(土) 20:49:07これは萌えるwww
0450デフォルトの名無しさん
2009/01/24(土) 20:52:45>恥ぱい3は python 知ってる人には不要だろうね
ではどんな人に必要だというのだ。
0451デフォルトの名無しさん
2009/01/24(土) 21:48:120452デフォルトの名無しさん
2009/01/24(土) 22:01:120453デフォルトの名無しさん
2009/01/24(土) 22:18:21空気読め
0454デフォルトの名無しさん
2009/01/24(土) 22:23:500455454 = 446
2009/01/24(土) 22:25:290456デフォルトの名無しさん
2009/01/24(土) 22:31:310457デフォルトの名無しさん
2009/01/24(土) 22:33:27死因は事故ではなく自殺と断定されました。
0458デフォルトの名無しさん
2009/01/24(土) 22:38:00トラウマになって終わりそうだな。
0459デフォルトの名無しさん
2009/01/24(土) 22:59:12みなさん普通何インストールしていますか?
とりあえずPsycoとMakoとSQLAlchemyとsimplejsonを
インストールしましたが何かお勧めありますか?
0460デフォルトの名無しさん
2009/01/24(土) 23:09:51ttp://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)
0461デフォルトの名無しさん
2009/01/24(土) 23:18:480462デフォルトの名無しさん
2009/01/24(土) 23:22:48easy_installで入れるのはlxmlくらいかな。
pygments,epydoc等は必要になったら入れる。source highlightとAPIdoc生成。
後は、定番 PIL,Numpy,wxPython,Twisted,ipython,
使わないけど pygame は毎回入れてしまう。
0463デフォルトの名無しさん
2009/01/24(土) 23:28:49実行してみようと思って気づいたんだけど、
インデントが崩れたソースってどう修正すればいいのか
わからないね・・・
0464デフォルトの名無しさん
2009/01/24(土) 23:45:080465デフォルトの名無しさん
2009/01/24(土) 23:48:48print list(urlopen('http://pc11.2ch.net/tech/dat/1230821097.dat'))[460-1].split('<>')[3].replace('<br>','\n')
0466デフォルトの名無しさん
2009/01/24(土) 23:53:02ごめん
インデント崩れたとこだけ貼り直し
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
0467デフォルトの名無しさん
2009/01/25(日) 00:13:120468デフォルトの名無しさん
2009/01/25(日) 00:54:370469デフォルトの名無しさん
2009/01/25(日) 00:59:37simplejsonって2.6以降標準なんじゃないっけ?
0470デフォルトの名無しさん
2009/01/25(日) 01:01:55コピペしたときに
残らない?
0471デフォルトの名無しさん
2009/01/25(日) 01:25:300472デフォルトの名無しさん
2009/01/25(日) 02:51:37Yes. 名前は json で標準に入ったよ。
0473デフォルトの名無しさん
2009/01/25(日) 12:03:56いまだに2.5系です。すいません。
0474デフォルトの名無しさん
2009/01/25(日) 12:04:19うちだと'LHNAOKO'と'LHKENJI'でKeyErrorが出たので、
全部'MSSam'にしたら声が出て来ました。ところが
日本語の部分が無視されて英語部分しか発声されません。
'LHNAOKO'と'LHKENJI'は、どこで入手されました?
0475デフォルトの名無しさん
2009/01/25(日) 12:17:47ttp://www1.bbiq.jp/kougaku/speech_reco.html
と思ったんだが
・SpeechSDK51.exe(68.0 MB)
・SpeechSDK51LangPack.exe(81.5 MB)
のリンク先が切れてる
最新は5.3らしいので探してみてください
0476デフォルトの名無しさん
2009/01/25(日) 12:38:07ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1013564655
あとはこれかな
ttp://www.createsystem.co.jp/DTalkerSapi1.html
声種(SAPI4, SAPI5)
たかし
けいこ
太郎
花子
小太郎
はなちゃん
ロボ太郎
ロボ子
ttp://support.adobe.co.jp/faq/faq/qadoc.sv?224228+002
ttp://technet.microsoft.com/en-us/speechserver/bb851679.aspx
ttp://www.microsoft.com/msagent/
0477デフォルトの名無しさん
2009/01/25(日) 12:59:37ありがとうございます。!!!
Officeのセットアップ追加で「入力システムの拡張」
「音声」を選ぶとうまく行きました。
MSSamだと「Python」の発音は「パイソン」で正しかったのですが、
LHNAOKOだと「ぴちょん」になっててかわいいというかまぬけというか・・・
0478デフォルトの名無しさん
2009/01/25(日) 17:27:230479デフォルトの名無しさん
2009/01/25(日) 20:29:06>恥ぱいネットワークはネットワークほとんど関係なくね?っていう内容だし
Python Network Programing といえばこっち
ttp://www.amazon.com/products/dp/1590593715 (2004/08/17 $36.51)
ttp://www.amazon.co.jp/products/dp/1590593715 (2004/08/30 \3,749) 値下がりしたっぽい
ttp://foma-zakki.cocolog-nifty.com/zakki/2006/09/python_python_n.html
0480デフォルトの名無しさん
2009/01/25(日) 22:07:21Mary & Mike
ttp://www.vector.co.jp/soft/win95/edu/se246086.html
python 関係ないけど
0481デフォルトの名無しさん
2009/01/25(日) 22:11:58電話会社だけあって
ttp://www.research.att.com/~ttsweb/tts/demo.php
Pythonには関係ないけどな
0482デフォルトの名無しさん
2009/01/26(月) 00:33:20ttp://download.microsoft.com/download/speechSDK/SDK/5.1/WXP/EN-US/speechsdk51.exe
Pythonには関係ないけど
0483デフォルトの名無しさん
2009/01/26(月) 00:41:06http://tcts.fpms.ac.be/synthesis/mbrola.html
http://www.microsoft.com/MSAgent/
0484デフォルトの名無しさん
2009/01/27(火) 00:54:11OSはXPです
PyScripterはバグが多くて使い物になりませんでした
Eclipse+PyDevは重過ぎて使えません…
0485デフォルトの名無しさん
2009/01/27(火) 01:05:36適当なPython対応を謳ったエディタを使った方がいいと思う。
0486デフォルトの名無しさん
2009/01/27(火) 01:41:34Editra にもう少しがんばってほしい。
0487デフォルトの名無しさん
2009/01/27(火) 01:48:040488デフォルトの名無しさん
2009/01/27(火) 01:54:39草いひともよくわいてくるよね
0489デフォルトの名無しさん
2009/01/27(火) 01:54:590490デフォルトの名無しさん
2009/01/27(火) 02:01:26komodoEditorってのがあるよ
ただ、Eclipse程ではないけどこれも重い
0491デフォルトの名無しさん
2009/01/27(火) 08:59:42普段日本語とか気にしないからわからん。
メニューが日本語であることがそんなに大事?
0492デフォルトの名無しさん
2009/01/27(火) 09:45:080493デフォルトの名無しさん
2009/01/27(火) 09:57:390494デフォルトの名無しさん
2009/01/27(火) 11:44:430495デフォルトの名無しさん
2009/01/27(火) 12:16:22俺は普段linux&vimだけど。
ところでチラ裏だけれども、vimだとコマンドモードでpythonとかrubyを実行できるんだね。
:python import urllib; print urllib.urlopen("http://www.google.co.jp").read()
みたいな感じで
emacsだとリージョンを実行できたりしたよーな
0496デフォルトの名無しさん
2009/01/27(火) 12:42:39関数定義したり、それをキーに割り当てたり、自由にできる。
http://www.vim.org/htmldoc/if_pyth.html
0497デフォルトの名無しさん
2009/01/27(火) 12:45:080498デフォルトの名無しさん
2009/01/27(火) 14:09:320499デフォルトの名無しさん
2009/01/27(火) 15:37:39そのエディタどこの?
0500デフォルトの名無しさん
2009/01/27(火) 15:45:390:23
0501デフォルトの名無しさん
2009/01/27(火) 15:46:06普通にここで言えばいいだろ。
0502デフォルトの名無しさん
2009/01/27(火) 15:57:400503デフォルトの名無しさん
2009/01/27(火) 16:05:16>>> foo[3::6]
'39'
>>> foo[3::4]
'37'
>>> foo[3::3]
'369'
>>> foo[3::2]
'3579'
>>> foo[3::1]
'3456789A'
0504デフォルトの名無しさん
2009/01/27(火) 16:07:270505デフォルトの名無しさん
2009/01/27(火) 16:29:17mはステップ。-だと逆方向からカウントしてく。
スライス終了のインデクスが指定されていないので、
文字列の一番最後までが範囲していされてる
0506デフォルトの名無しさん
2009/01/27(火) 16:33:47bomの罠に気を付けて‼
0507デフォルトの名無しさん
2009/01/27(火) 17:02:21嘘を教えるなよ
0508デフォルトの名無しさん
2009/01/27(火) 17:12:160509デフォルトの名無しさん
2009/01/27(火) 17:30:450510デフォルトの名無しさん
2009/01/27(火) 18:00:25そもそも文字列でインデックスなんてありえない。
Cやってる奴ならわかるだろうけど。
0511デフォルトの名無しさん
2009/01/27(火) 18:11:03Cやってる奴にとっては文字列=バイト列なんだから
インデックス最高とか思ってそうだが違うのか?
0512デフォルトの名無しさん
2009/01/27(火) 18:26:230513デフォルトの名無しさん
2009/01/27(火) 18:41:420514デフォルトの名無しさん
2009/01/27(火) 18:45:350515デフォルトの名無しさん
2009/01/27(火) 19:02:120516デフォルトの名無しさん
2009/01/27(火) 19:06:240517デフォルトの名無しさん
2009/01/27(火) 19:13:470518デフォルトの名無しさん
2009/01/27(火) 19:18:55V
_____
/::::::::::::::::::::::::::\ _
/::::::::::::::::::::::::::::::::::::::\ /  ̄  ̄ \
|:::::::::::::::::|_|_|_|_| /、 ヽ はぁ?黙ってろデブw
|;;;;;;;;;;ノ \,, ,,/ ヽ |・ |―-、 |
|::( 6 ー─◎─◎ ) q -´ 二 ヽ |
|ノ (∵∴ ( o o)∴) ノ_ ー | |
/| < ∵ 3 ∵> \. ̄` | /
::::::\ ヽ ノ\ O===== |
:::::::::::::\_____ノ:::::::::::\ / |
0519504
2009/01/27(火) 19:46:480520デフォルトの名無しさん
2009/01/27(火) 20:13:020521デフォルトの名無しさん
2009/01/27(火) 20:21:50>>> 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'
>>>
結果は明らかだが、マニュアルに載ってる?
0522デフォルトの名無しさん
2009/01/27(火) 20:23:23'NMLKJIHGFEDCBA9876543210'
>>> foo[-1:-1]
''
>>>
おもしれー
0523デフォルトの名無しさん
2009/01/27(火) 20:38:03この辺かな
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-58
http://www.python.jp/doc/2.5/lib/built-in-funcs.html#l2h-68
http://www.python.jp/doc/2.5/lib/typesseq.html
http://www.python.jp/doc/2.5/ref/slicings.html
0524デフォルトの名無しさん
2009/01/27(火) 21:39:53a[0:10:5]
つまり
初め:終わり:倍数
0525デフォルトの名無しさん
2009/01/27(火) 21:45:140526デフォルトの名無しさん
2009/01/27(火) 21:48:450527デフォルトの名無しさん
2009/01/27(火) 22:21:30FOR i = 0 TO 10 STEP 5
〜
NEXT i
0528デフォルトの名無しさん
2009/01/27(火) 22:41:01知識として持っててあたりまえのことを質問する馬鹿が増えた
0529デフォルトの名無しさん
2009/01/27(火) 22:57:46>>'32104294967295'
0530デフォルトの名無しさん
2009/01/27(火) 23:53:18みんな気をつけろ!こいつRuby厨だ!
0531デフォルトの名無しさん
2009/01/27(火) 23:57:380532デフォルトの名無しさん
2009/01/27(火) 23:58:59ほんとーに基本的なことじゃない?
0533デフォルトの名無しさん
2009/01/28(水) 00:17:09さすがにそれは・・・?
0534デフォルトの名無しさん
2009/01/28(水) 00:20:15Rubyの開発者
0535デフォルトの名無しさん
2009/01/28(水) 01:47:48http://pc11.2ch.net/test/read.cgi/tech/1233033091/
0536デフォルトの名無しさん
2009/01/28(水) 02:10:28...
>>> e=E()
>>> e.gashira[2:50]
'gappe mukatsuku!!'
0537デフォルトの名無しさん
2009/01/28(水) 05:45:01GvR が危険球を投げたw
0538デフォルトの名無しさん
2009/01/28(水) 16:08:25ttp://text.world.coocan.jp/TSNET/?What%27sNewInPython3.0
>一般的により良い修正は、(特に元のコードでlambdaが使用されているのなら)しばしばリストの内包記法を用いることです。
0539デフォルトの名無しさん
2009/01/28(水) 16:28:03そこはlist(map(ord, "abc"))みたいにlistとmap(filter)を使うなら
内包表記で[ord(i) for i in "abc"]としましょうってことじゃないの?
0540デフォルトの名無しさん
2009/01/28(水) 16:31:440541デフォルトの名無しさん
2009/01/28(水) 16:50:323.1早く出そうよって言ってるだけじゃないの?
0542デフォルトの名無しさん
2009/01/28(水) 17:03:27こうしとけば良かった!と思うところは普及しないうちに直した方がいい。
0543デフォルトの名無しさん
2009/01/28(水) 17:08:353.0 は避けとくけど 3.1 になったら使ってみるかと
これまたリリースノートも何も読まない人が大挙して来るかも
(それが狙いとも言えるが)
ところで ML がネタの欧州というか釣り堀に…
0544デフォルトの名無しさん
2009/01/28(水) 19:16:57ttp://gihyo.jp/dev/serial/01/pythonhacks/0002
> Python 3.0 Hacks
> 第2回 abcモジュールによる抽象基底クラスの作成
↑ 抽象クラス機能がPython言語仕様に無かった事が不備とは
思ってなかったんで、記事内容には「?」だった。
不注意から守るという以外に、困るケースがあるんだろうか?
0545デフォルトの名無しさん
2009/01/28(水) 19:17:250546デフォルトの名無しさん
2009/01/28(水) 19:35:43自分の評価を落としているとも知らず、おめでたいことだ。
0547デフォルトの名無しさん
2009/01/28(水) 19:58:44twistedあたりでも使われてるzope.interfaceなんてのもあるし
欲しい奴は欲しいんでないの
俺は要らないけどな
つーかducktypingな時点で、isaを表現するのに継承使う必要もねーから
mixin的な実装継承しか使わん
0548デフォルトの名無しさん
2009/01/28(水) 21:23:32もうtupleでエミュレートするのに飽き飽きした。
0549デフォルトの名無しさん
2009/01/28(水) 21:24:330550デフォルトの名無しさん
2009/01/28(水) 22:39:50?
0551デフォルトの名無しさん
2009/01/28(水) 23:14:23> 美しくありません。@4620
っていうのならもっと美しく質問してほしいのだ
0552デフォルトの名無しさん
2009/01/28(水) 23:28:59今時、抽象クラス機能のありがたみすら分からないのはどうかと…
0553デフォルトの名無しさん
2009/01/29(木) 01:58:390554デフォルトの名無しさん
2009/01/29(木) 02:03:11>>544ではないが、Javaとかならともかく、動的型でダックタイピングな言語での
抽象クラスってそんなにひつようか?
0555デフォルトの名無しさん
2009/01/29(木) 02:18:00下々には必要ないんじゃないの?
0556デフォルトの名無しさん
2009/01/29(木) 02:18:300557デフォルトの名無しさん
2009/01/29(木) 10:10:570558デフォルトの名無しさん
2009/01/29(木) 10:25:48日付と文字列との橋渡しを Python でどのようにすればいいのか教えてください。
・ データは記録時刻 HH:MM で始まる形式の文字列 (取得済み; 仮に r とする) です。
・ データファイル更新日時は yyyy/mm/dd HH:MM という形式の文字列 (取得済み; 仮に u とする) です。
・ データ記録は、その時刻がデータファイル更新時刻より
- 大きければ、更新前日に行われたもの
- 小さいか等しければ、更新当日に行われたもの
と判断したいです。
・ r, u を入力してデータ記録の日付を yyyy/mm/dd 形式の文字列で返す関数がほしいです。
処理の流れは
・ r, u からその時刻部分を取得し、時刻に変換して比較
・ 結果によって u の日付部分を1日減じたり減じなかったりして、文字列に戻して返す
でしょうか?
ライブラリリファレンスの strftime, strptime あたりを眺めているのですがどうも物分りが悪くて…
0559デフォルトの名無しさん
2009/01/29(木) 10:43:55def 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')
0560デフォルトの名無しさん
2009/01/29(木) 10:48:42そういうネタっぽいことはMLでやれよ。
仕事のない暇人どもがわらわらとやってきて、サンプルコード書いてくれるからよ。
0561558
2009/01/29(木) 10:58:32そのコードで動作しました、ありがとうございます。split 便利ですね。
r <= hm の部分ですが、両辺は文字列として辞書順比較されているという認識でよろしいでしょうか?
0562デフォルトの名無しさん
2009/01/29(木) 11:00:43うん。HH:MMならそれで問題ないよね?
0564デフォルトの名無しさん
2009/01/29(木) 13:33:38妙な応用編しか教えてくれないけどな
0565デフォルトの名無しさん
2009/01/29(木) 13:37:38そんなだから仕事ないんだろ。
空気が読めないというのは致命的だよな。
0566 ◆UNKOVIP9RM
2009/01/29(木) 15:48:26痛い
痛い
0567デフォルトの名無しさん
2009/01/29(木) 20:38:45エラーの発生するタイミングが関数コール時とインスタンス生成時だとかなり変わると思うけど。
0568デフォルトの名無しさん
2009/01/29(木) 20:42:470569デフォルトの名無しさん
2009/01/29(木) 21:12:320570デフォルトの名無しさん
2009/01/29(木) 21:13:07multiply
呼び出す奴が動かない
multiply.pyとcの実行ファイルを同じディレクトリにおいても
multiplyなんてないよ
というエラーになる
環境はlinux
0571デフォルトの名無しさん
2009/01/30(金) 00:54:37そんな時のためのメタクラス。
だけど、大半は実行時でも問題ない。その分テストを書こう。
>>570
多分
$ PYTHONPATH=. call multiply multiply 3 2
0572デフォルトの名無しさん
2009/01/30(金) 09:04:170573デフォルトの名無しさん
2009/01/30(金) 09:14:59基本的には互換性を保ってるけど、細かな変更点が多数あるので要確認。
2.6に移植してから2to3使えば、ライブラリのapi変更にもある程度追従してくれる。
0574デフォルトの名無しさん
2009/01/30(金) 09:49:40ウソを教えるなよ。
0575デフォルトの名無しさん
2009/01/30(金) 12:40:220576デフォルトの名無しさん
2009/01/30(金) 14:05:28(あるいはそれが正しいのか)、文字列として扱いたいのかなんて
自動で判断できるわけねーし、結局手動でプログラマが手を入れないといかんよな。
例えばMacをのぞくUnix系のOSだと、システム界面ではbytesベースで扱うのが
正しいことが多いだろうし、逆にWindowsではファイルI/Oを除いては大概
strベースが正しいだろうしな。
0577デフォルトの名無しさん
2009/01/30(金) 14:09:150578デフォルトの名無しさん
2009/01/30(金) 14:57:090579デフォルトの名無しさん
2009/01/31(土) 09:44:38http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301b.html
>Python 2の文字列型とbytes型の大きな違いは、「変更可能(mutable)」なデータ型であるという点です。
>Pythonの文字列型では、メモリ利用の効率化などの目的があり、要素の削除や置き換えができません。
>これを「変更不可能(immutable)」といいます。
bytes = immutable, bytearray = mutable
だと思っていたけど違うのか? それとも変わったのか?
0580デフォルトの名無しさん
2009/01/31(土) 10:14:15>>> x[0] = b'T'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'bytes' object does not support item assignment
0581デフォルトの名無しさん
2009/01/31(土) 10:14:43> There is a separate mutable type to hold buffered binary data, "bytearray".
http://docs.python.org/3.0/whatsnew/3.0.html
0582デフォルトの名無しさん
2009/01/31(土) 10:20:25こういうデータの作り方しても大丈夫ですか?
0583デフォルトの名無しさん
2009/01/31(土) 10:28:07>>> 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)」で違いが無いですね
0584デフォルトの名無しさん
2009/01/31(土) 10:28:09強いて言えばその[]は要らないかな
a = ''.join(chr(x) for x in xrange(256))
a = ''.join(map(chr, xrange(256)))
でいいでしょ
0585デフォルトの名無しさん
2009/01/31(土) 10:39:01pythonスレじゃ薮蛇だ。
0586デフォルトの名無しさん
2009/01/31(土) 10:42:460587デフォルトの名無しさん
2009/01/31(土) 10:48:020588デフォルトの名無しさん
2009/01/31(土) 11:13:100589デフォルトの名無しさん
2009/01/31(土) 11:42:45用途・規模により対策は異なるけど、使えそうなのを適当に挙げると。
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使うのが多分最速。
0590デフォルトの名無しさん
2009/01/31(土) 13:54:41danjoは入れてあげないのですか?
0591デフォルトの名無しさん
2009/01/31(土) 13:58:280592デフォルトの名無しさん
2009/01/31(土) 14:01:450593デフォルトの名無しさん
2009/01/31(土) 14:38:27分かりにくくてすみません
あきらかにbinaryなのに''でjoinしてることに違和感があったのです
0594デフォルトの名無しさん
2009/01/31(土) 14:41:140595デフォルトの名無しさん
2009/01/31(土) 14:49:452.xならstrは要するにimmutableなバイト列だから、何の問題ない
Cとは違ってヌルバイトも特別扱いはしないし、普通に含めることができる
0596デフォルトの名無しさん
2009/01/31(土) 17:16:47具体的には下記の A 〜 C のようなクラス変数を実装したいのですが…
class Noddy:
A = (0 << 1)
B = (0 << 2)
C = (0 << 3)
0597デフォルトの名無しさん
2009/01/31(土) 18:00:58ttp://www.python.jp/doc/release/ext/node23.html
PyMemberDef
0598デフォルトの名無しさん
2009/01/31(土) 18:17:41つまりクロージャーをうまく使えという訳ですね。
その方向で試してみます。ありがとうございました。
0599デフォルトの名無しさん
2009/01/31(土) 19:58:39定数だったら辞書かモジュールオブジェクト作ったほうがよくない?
0600596
2009/01/31(土) 21:05:21NoddyPackage の Noddy1, Noddy2, Noddy3 それぞれに個別の定数を持た
せたいのです。
実は既にモジュールオブジェクトとして実装しているのですが、その場合
from NoddyPackage import *
と書かなければならないのが1つ。
(import NoddyPackage で全部使える状態にしたい)
インスタンス生成時に
noddy = Noddy1.new()
の様に、モジュールメソッドを呼ばなければならないのが1つ。
(noddy = Noddy1() でインスタンス化したい)
最後に、些細ですが、NoddyPackage.Noddy1.A でも、インスタンスから
noddy1.A でも、どちらも同じ領域を参照したいというのが理由です。
PyTypeObject に対して PyModule_AddIntConstant みたいな関数があれば
悩まないのですが無いようでして。
0601デフォルトの名無しさん
2009/01/31(土) 21:39:140602デフォルトの名無しさん
2009/01/31(土) 21:59:300603デフォルトの名無しさん
2009/01/31(土) 22:02:42l = list(s)
で済む話ではなくて?
0604デフォルトの名無しさん
2009/01/31(土) 22:03:540605デフォルトの名無しさん
2009/01/31(土) 22:06:540606デフォルトの名無しさん
2009/01/31(土) 22:51:46そんなのがあったのか!
ありがとうございました。
0607デフォルトの名無しさん
2009/01/31(土) 23:38:45もうお前プログラミングやめたほうがいいよ、向いてないよ
0608デフォルトの名無しさん
2009/01/31(土) 23:44:33検索したら全ページに
このサイトはコンピュータに損害を与える可能性があります。
って一文が付け加えられてるんだけど・・・俺だけ?
0609デフォルトの名無しさん
2009/01/31(土) 23:45:07どうなってんだろ。
Google のバグか、それともクラックされたのか。
0610デフォルトの名無しさん
2009/01/31(土) 23:46:150611デフォルトの名無しさん
2009/01/31(土) 23:50:53良かった良かった
0612デフォルトの名無しさん
2009/01/31(土) 23:54:390613デフォルトの名無しさん
2009/01/31(土) 23:55:030614デフォルトの名無しさん
2009/02/01(日) 00:29:25, イ)ィ -─ ──- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , -─ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| > ---- r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ gugurecus ]
(西暦一世紀前半〜2009.1.31)
0615デフォルトの名無しさん
2009/02/01(日) 00:42:270616デフォルトの名無しさん
2009/02/01(日) 03:27:46PyModule_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
0617デフォルトの名無しさん
2009/02/01(日) 07:02:530618デフォルトの名無しさん
2009/02/01(日) 17:00:49プログラミング自体も初めてに近いです。
現在はこちらで勉強中です。
ttp://www.pythonweb.jp/tutorial/
↑参考になりますか?
0619デフォルトの名無しさん
2009/02/01(日) 17:02:040620デフォルトの名無しさん
2009/02/01(日) 17:20:40そんな広告だらけのページより↓の方が参考になります。
http://www.python.jp/doc/
0621デフォルトの名無しさん
2009/02/01(日) 17:39:50考えられる問題点の1つは、作成されたファイルのパーミッションが644になっていることです。
0622621
2009/02/01(日) 17:45:400623デフォルトの名無しさん
2009/02/01(日) 17:49:42参考になるだろうけど、内容が少ないから
本一冊ぐらい買った方がいいかもね。
そこの広告にも出てるけどみんなのpython って言うのが
一番普通っぽい感じだと思う。
公式ドキュメント読めるならそれでもいいけど、
普通は読みにくいと言われてる気がする。
0624デフォルトの名無しさん
2009/02/01(日) 17:52:04CGI は専用スレッドがあるのでなるべくそっちに
Python CGI
http://pc11.2ch.net/test/read.cgi/php/1163513344
0625デフォルトの名無しさん
2009/02/01(日) 18:00:02ありがろうございます。
確かに公式ドキュメントはわかりにくいですね
618のHPだと内容は少ないのですね…
それでもすごくわかりやすくて重宝しておりました。
みんなのPython探してみます。
0626596
2009/02/01(日) 20:06:20の情報をヒントにソースを追っていったら解決しました。ありがとうございます。
一応、解決策を 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);
0628デフォルトの名無しさん
2009/02/02(月) 08:35:040629デフォルトの名無しさん
2009/02/02(月) 09:52:52sep としてデフォルトを指定する方法って
どうすればいいのでしょう?
具体的には whitespace のままで maxsplit を
指定したいんですが ' ' とかでは space 1個あたり
一分割されてしまうんで…
0630デフォルトの名無しさん
2009/02/02(月) 10:00:26くさいひときらい
0631デフォルトの名無しさん
2009/02/02(月) 10:00:43くさいひときらい
0632デフォルトの名無しさん
2009/02/02(月) 10:13:32Noneじゃね?
0633デフォルトの名無しさん
2009/02/02(月) 11:49:03ちょうど /usr/local/lib/python2.5/string.py をみて
None を試していたところでした。
これで良さそうです
(ただ document に None だと云々って書いてないから
undocumented feature ってことになるのかしら?)
0634632
2009/02/02(月) 12:19:22http://docs.python.org/library/stdtypes.html#str.split
> If sep is not specified or is None,
0635632
2009/02/02(月) 12:21:52「sep が指定されていないか None が指定されている場合、」
0636デフォルトの名無しさん
2009/02/02(月) 12:35:500637デフォルトの名無しさん
2009/02/02(月) 14:32:46['a', 'b', '2', '3']
と分割出来ますか?
0638デフォルトの名無しさん
2009/02/02(月) 14:35:00list('ab23')
0639 ◆UNKOVIP9RM
2009/02/02(月) 15:39:31ふかくにもわろた
0640デフォルトの名無しさん
2009/02/02(月) 15:39:510641デフォルトの名無しさん
2009/02/02(月) 15:49:10ちょっと激しい使い方したら落ちないか?
0642デフォルトの名無しさん
2009/02/02(月) 15:52:23Pythonの文字列はもともとシークエンスであって、いちいちlist化せんでも
forループでまわしたりmap()などに渡したりできるんで
実際には>>638すら必要になることはそう多くは無いはず
0643デフォルトの名無しさん
2009/02/02(月) 15:59:39部分文字列が欲しいならs[2:4]とかだ
いちいちsubstr()だのsplit()だのでバラす必要は無い
0644デフォルトの名無しさん
2009/02/02(月) 16:04:400645デフォルトの名無しさん
2009/02/02(月) 16:26:450646デフォルトの名無しさん
2009/02/02(月) 16:35:19バカが遠回りをして時間を無駄に費やしている間にも成長してゆく。
0647デフォルトの名無しさん
2009/02/02(月) 16:43:150648デフォルトの名無しさん
2009/02/02(月) 16:58:03[x for x in 'ab23']
0649 ◆UNKOVIP9RM
2009/02/02(月) 17:10:05それでいいじゃん
0650デフォルトの名無しさん
2009/02/02(月) 17:26:420651デフォルトの名無しさん
2009/02/02(月) 17:30:230652デフォルトの名無しさん
2009/02/02(月) 17:42:280653デフォルトの名無しさん
2009/02/02(月) 17:45:170654デフォルトの名無しさん
2009/02/02(月) 18:06:11ありがとうございました
0655デフォルトの名無しさん
2009/02/02(月) 18:32:41よい心がけだ。
0656デフォルトの名無しさん
2009/02/02(月) 18:41:250657デフォルトの名無しさん
2009/02/02(月) 18:59:40f = 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されますか?
0658デフォルトの名無しさん
2009/02/02(月) 19:01:230659デフォルトの名無しさん
2009/02/02(月) 20:21:25<> および != は同じ演算子を別の書き方にしたものです。!= のほうが望ましい書き方です; <> は廃止すべき書き方です。
とあるんですが、後半には何か理由があるんでしょうか?
0660デフォルトの名無しさん
2009/02/02(月) 21:03:37少数派が負けるのは普通
じゃないかな
0661デフォルトの名無しさん
2009/02/02(月) 21:38:340662デフォルトの名無しさん
2009/02/02(月) 21:56:22with
0663デフォルトの名無しさん
2009/02/02(月) 21:58:310664デフォルトの名無しさん
2009/02/02(月) 22:12:15try:
file = open("with.txt")
except IOError:
print "Failed to open a file."
else:
print "Success to open a file."
file.close()
finally:
print "End of Exception handling."
↓
0665デフォルトの名無しさん
2009/02/02(月) 22:12:47class 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()
0666デフォルトの名無しさん
2009/02/02(月) 23:05:12スパゲッティ化しそうな気がする < with 文対応クラス
0667デフォルトの名無しさん
2009/02/03(火) 08:44:46本当にありがとうございました
0668デフォルトの名無しさん
2009/02/03(火) 08:55:490669デフォルトの名無しさん
2009/02/03(火) 14:06:00try:
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."
0670デフォルトの名無しさん
2009/02/03(火) 15:12:54ロックの獲得→解放とか
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)
のように使う
0671デフォルトの名無しさん
2009/02/04(水) 00:37:580672デフォルトの名無しさん
2009/02/04(水) 00:42:190673デフォルトの名無しさん
2009/02/04(水) 00:48:240674デフォルトの名無しさん
2009/02/04(水) 00:50:200675デフォルトの名無しさん
2009/02/04(水) 03:00:24どうせデストラクタで閉じられるからと、ファイルではあまり使わないなぁ
そもそも例外でclose以外の後始末をしないといけないって事が(自分の場合は)少ないので。
do_something_with(open('foo.txt'))で済ませる。行読み込みなら for line in open('foo.txt')
# gc任せ、なので良くないスタイルなのかもしれない。
# 一応、注記しておくとサーバなどのlifespanが長いものではきちんとしてる。
0676デフォルトの名無しさん
2009/02/04(水) 03:38:37今のCPython実装だと参照カウント方式のGCだから、不要になったらすぐ開放してくれるから、
それで上手くいっちゃうんだよね。
IronPythonとか、参照カウント以外のGCだと、不要になってから開放してくれるまでのタイムラグが
予測できないからRAIIが必要になるけど。
0677デフォルトの名無しさん
2009/02/04(水) 17:09:24コマンドプロンプトで,python start-booklist.pyと打つと、
AttributeError: 'module' object has no attribute 'Template'
とエラーが出ます。どうしたらいいでしょうか?
0678デフォルトの名無しさん
2009/02/04(水) 17:34:54urllib.unquote() は %uXXXX に非対応です。
標準ライブラリ一発ではなんともならんかったっけ?
自前でunescapeしないとダメ?
0679デフォルトの名無しさん
2009/02/04(水) 18:05:03ttp://d.hatena.ne.jp/itasuke/20080703
ttp://www.w3.org/TR/html4/appendix/notes.html#h-B.2.1
ttp://webdba.blogspot.com/2008/05/query-datastore-for-unicode-string-not.html
0680678
2009/02/04(水) 18:30:50するナイスな(標準的な)方法が知りたいのです。
eval('u"%s"' % '%u3042%u3044%u3046%u3048%u304A'.replace('%u', r'\u'))
でも目的は達成できるけれど正しいとは言えないような。
0681デフォルトの名無しさん
2009/02/04(水) 18:38:030682デフォルトの名無しさん
2009/02/04(水) 18:42:27re.sub(ur"%u([0-9A-F]{4})", lambda m: unichr(int(m.group(1), 16)), s)
0683デフォルトの名無しさん
2009/02/04(水) 18:50:12map + unichr な感じの方法でもっと簡単に書けるんじゃないかな。
re.subn(r'%u([0-9a-fA-F]{,4})', lambda g:unichr(int(g.group(1),16)), string)[0]
0684678
2009/02/04(水) 19:02:02s = '%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ですよね。
不満はないんですけど、標準的な方法としてライブラリに関数があってもいいのに…
0685デフォルトの名無しさん
2009/02/04(水) 19:55:050686cap005-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
0687デフォルトの名無しさん
2009/02/06(金) 01:34:53一応GIF89aの書出し対応させたけどファイルが
圧縮でけんみたいだわ。
0688デフォルトの名無しさん
2009/02/06(金) 01:44:17MySQLの「生みの親」、サンを離れる
ttp://www.atmarkit.co.jp/news/200902/05/monty.html
0689デフォルトの名無しさん
2009/02/06(金) 01:48:240690デフォルトの名無しさん
2009/02/06(金) 09:26:36ttp://b.hatena.ne.jp/entry/http://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html
似たようなことが書いてあるのになんでブクマ数に差があるんだろう。
5倍の開きって天と地だよな。
0691デフォルトの名無しさん
2009/02/06(金) 12:21:400692デフォルトの名無しさん
2009/02/06(金) 12:51:27見る人が少ないページは価値が低いなんてことはまったくないし
ブックマーク数が低いページの方が見る人が少ないなんてまるで都市伝説だ.
0693デフォルトの名無しさん
2009/02/06(金) 13:43:33みんpyと恥pyの差
0694デフォルトの名無しさん
2009/02/06(金) 13:49:560695デフォルトの名無しさん
2009/02/06(金) 13:49:560696デフォルトの名無しさん
2009/02/06(金) 13:51:270697デフォルトの名無しさん
2009/02/06(金) 15:46:070698デフォルトの名無しさん
2009/02/06(金) 17:21:27悪いほうは桃白白ですが、良いほうは誰ですか?
0699687
2009/02/06(金) 17:59:09多分sequenceアクセスでやれる、と言いたかったと思う、が…
PIL1.1.6ではGIF89aにするためのGCEやAEブロックを作らんみたいなのよ。
ヘッダに至ってはGIF87しか出さんし。PILのGifPlugin
使ってヘッダ作ってるgifmaker.pyのGIFアニでも
再生でけるのにはワロタ。
gifmaker.pyではgetbboxでフレーム間差分取ってるけど
全然ファイルサイズが小さくならん。
やっぱ特許がらみで圧縮サポートせんかったんかいのぅ。
0700デフォルトの名無しさん
2009/02/07(土) 01:20:24ありがとうございました
0701デフォルトの名無しさん
2009/02/07(土) 01:20:27ほとんど,どんな数値計何上のエラーでも止まらないのでしょうか?
0702デフォルトの名無しさん
2009/02/07(土) 01:22:01止めたければ止めればいい
他の数値計何上のエラーでもおなじ
0703デフォルトの名無しさん
2009/02/07(土) 01:37:04いいことなんだけど。他のLLスレと違って低レベルなことに触れる事がおおいな。
どこで勉強してんだ?
0704デフォルトの名無しさん
2009/02/07(土) 01:49:140705デフォルトの名無しさん
2009/02/07(土) 01:53:22困ったときも過去にどういうやり取りがあって
APIの定義が決まって行ったかが追える。
ドキュメントを書く事がPython使いの文化になってるせいで
野良モジュールでもドキュメントが豊富。
0706デフォルトの名無しさん
2009/02/07(土) 02:08:130707デフォルトの名無しさん
2009/02/07(土) 03:18:23ありがとうございました
0708デフォルトの名無しさん
2009/02/07(土) 03:36:550709デフォルトの名無しさん
2009/02/07(土) 12:51:07上のやつって『初めてのPython』第三版向けなんだってね
日本語版はPython3k対応とか言ったらGJじゃないか
0710デフォルトの名無しさん
2009/02/07(土) 13:02:170711デフォルトの名無しさん
2009/02/07(土) 13:04:430712デフォルトの名無しさん
2009/02/07(土) 23:06:070713デフォルトの名無しさん
2009/02/08(日) 01:25:32ttp://www.amazon.co.jp/dp/479733665X
4,473位
ttp://www.amazon.co.jp/dp/4873112109/ref=pd_sim_b_5
61,010位
アマゾンのランキング。
5倍が天と地なら10倍は何だろう(ww
0714デフォルトの名無しさん
2009/02/08(日) 01:51:180715デフォルトの名無しさん
2009/02/08(日) 07:42:50日本語版だけ3000に対応するわけねーだろwww
0716デフォルトの名無しさん
2009/02/08(日) 10:22:18単純な計算も出来ないのですか?
15倍ですよ
0717デフォルトの名無しさん
2009/02/08(日) 11:01:2313.6倍ですよ
0718デフォルトの名無しさん
2009/02/08(日) 11:08:19なんでアホはあるもの全部使わなきゃ気がすまねーの?
0719デフォルトの名無しさん
2009/02/08(日) 11:53:240720デフォルトの名無しさん
2009/02/08(日) 15:08:16馬鹿じゃないんだったら馬鹿にされてもいいじゃん
ひとちがいなんだから
0721デフォルトの名無しさん
2009/02/08(日) 15:23:060722デフォルトの名無しさん
2009/02/08(日) 22:17:400723722
2009/02/08(日) 23:20:52irbで適当にRubyいじってみたけど最高だ!
なんでいままでPythonなんて触っていたのだろう!
すばらしい!
0724デフォルトの名無しさん
2009/02/08(日) 23:29:18してるなら圧倒的にPython指示する
0725デフォルトの名無しさん
2009/02/08(日) 23:32:220726デフォルトの名無しさん
2009/02/08(日) 23:35:06fso = win32com.client.Dispatch('Scripting.FileSystemObject')
folder = fso.GetFolder('C:\\')
for file in folder.Files:
print file.Name
0727デフォルトの名無しさん
2009/02/08(日) 23:36:27Python自体のライセンスがGPLなのでしょうか?
Pythonを使ったソフトはソースコードを開示しなければならないのでしょうか?
0728デフォルトの名無しさん
2009/02/08(日) 23:36:51w = win32com.client.Dispatch('WScript.Shell')
w.Popup('Ready',3,'1,2,3')
w.LogEvent(1, 'DaahhhHHH!')
0729デフォルトの名無しさん
2009/02/08(日) 23:37:38IronPython
http://pc11.2ch.net/test/read.cgi/tech/1157686822/
0730デフォルトの名無しさん
2009/02/08(日) 23:38:310731デフォルトの名無しさん
2009/02/08(日) 23:40:580732デフォルトの名無しさん
2009/02/08(日) 23:51:51Python自体はGPLじゃない
というかプログラミング言語の処理系がたとえGPLであったとしても、ソースの公開義務は生じない
そのソフトがGPLなだけだろ
0733724
2009/02/08(日) 23:56:59___
/⌒ ⌒\ ━━┓┃┃
/(  ̄) (_)\ ┃ ━━━━━━━━
/::::::⌒(__人__)⌒:::: \ ┃ ┃┃┃
| ゝ'゚ ≦ 三 ゚。 ゚ ┛
\ 。≧ 三 ==-
-ァ, ≧=- 。
イレ,、 >三 。゚ ・ ゚
≦`Vヾ ヾ ≧
。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
0734デフォルトの名無しさん
2009/02/09(月) 00:04:230735デフォルトの名無しさん
2009/02/09(月) 00:09:19ttp://sites.google.com/site/craftware/clnch
のソフトなのですが
license/python_license.txtというファイルがあるんです
pythonを内臓(python26.dll?)してるからでしょうか
でもこれってpy2exe等で出力されると思うのですが
0736デフォルトの名無しさん
2009/02/09(月) 00:11:30せっかくdir()やhelp()で.NETのクラスやオブジェクトのイントロスペクションが
効くのに、速攻で流れてしまうのでは意味がない
0737デフォルトの名無しさん
2009/02/09(月) 00:38:180738722
2009/02/09(月) 02:56:08ほんとにruby厨って面白いなw
0739デフォルトの名無しさん
2009/02/09(月) 02:58:40rubyはドリフw
0740デフォルトの名無しさん
2009/02/09(月) 03:13:12未だに実感がないよ・・・長さん・・・
0741デフォルトの名無しさん
2009/02/09(月) 09:12:220742デフォルトの名無しさん
2009/02/09(月) 10:42:08言語としての一貫性を重視した
Python 3の進化
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302a.html
ttp://www.atmarkit.co.jp/fcoding/articles/python3/02/python302b.html
0743デフォルトの名無しさん
2009/02/09(月) 10:42:12Pythonの場合はC++と併用してたり他の言語も普通につかってて別に布教活動しねーよな
0744デフォルトの名無しさん
2009/02/09(月) 11:42:08「つっかかってくる」だけの人はどの言語にもいるが、RubyやPythonは
そういう手合でも判った気になれる言語だという事だと思う。
0745デフォルトの名無しさん
2009/02/09(月) 17:51:11従来通りint型を得たい場合には「//」という演算子を使います。
コメントに使えなくなるのは痛い
0746デフォルトの名無しさん
2009/02/09(月) 18:09:12PHPとpyてょnのどちらを始めるべきですかね?
0747デフォルトの名無しさん
2009/02/09(月) 18:11:12どーもPythonらしいけど
0748デフォルトの名無しさん
2009/02/09(月) 18:11:130749デフォルトの名無しさん
2009/02/09(月) 18:15:22//演算子自体は2.Xにもあるじゃん
0750デフォルトの名無しさん
2009/02/09(月) 18:24:490751デフォルトの名無しさん
2009/02/09(月) 19:50:59PHP >>>> Ruby >>>>>>>>>>>>>>>>>>Python
さくらさんお願いですから、Pythonのバージョンあげてください。
せめて2.5に。
0752デフォルトの名無しさん
2009/02/09(月) 19:57:250753デフォルトの名無しさん
2009/02/09(月) 20:09:49xreaへ逝くがよい。
0754デフォルトの名無しさん
2009/02/09(月) 21:29:34↓
ラーメンタイマーでも作ってみれ。
カップヌードル用(3分)とどんべい用(5分)に分ける。
できればタスクバーに駐在する奴。
こういうのってPythonでもサクっと作れますか?
できればexe化したもの
0755デフォルトの名無しさん
2009/02/09(月) 21:32:460756デフォルトの名無しさん
2009/02/09(月) 22:38:540757デフォルトの名無しさん
2009/02/09(月) 23:59:14sleep 180 & echo ^G^G^G
と書いた覚えがある
0758デフォルトの名無しさん
2009/02/10(火) 03:52:38w=win32com.client.Dispatch('WScript.Shell')
w.Popup('カップヌードル/どんべえ', 180, 'おまちください')
w.Popup('どんべえ', 120, 'おまちください')
0759デフォルトの名無しさん
2009/02/10(火) 06:40:35ttp://www.shido.info/py/tkinter3.html
0760デフォルトの名無しさん
2009/02/10(火) 08:44:00ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8861.txt
(UTF-8)
pause/stopあたりにバグあるけど途中で面倒になった
exe化はpy2exeで出来ると思うので自分でやってみて
0761デフォルトの名無しさん
2009/02/10(火) 10:34:12Quit したあとにアプリケーションエラーが出た
別の PC でやったら出なかったので
うちの PC がおかしいのかも知れないが
0762デフォルトの名無しさん
2009/02/10(火) 10:46:01通常のビープ音がうるさいとあれだから、xset bで再設定すれば、戻るし
Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
簡易タイマー
機能 時間指定タイマー・秒数・分数指定タイマー・ビープ音バリエーション数種類
みたいなの、作れるかな
シェルスクリプトでやったほうが素直かな
0763デフォルトの名無しさん
2009/02/10(火) 10:47:020764デフォルトの名無しさん
2009/02/10(火) 10:48:500765デフォルトの名無しさん
2009/02/10(火) 10:51:08ttp://oss.coresecurity.com/projects/impacket.html
とかは?
0766デフォルトの名無しさん
2009/02/10(火) 10:56:48> Pythonで組み込み系コマンドを使うのって、execでいけるんだっけ?
exec文/関数はPythonコードを実行するためのもので
超おおざっぱに言えば文用のeval()
外部プロセスを起動したいときはsubprocessモジュールを使う
0767デフォルトの名無しさん
2009/02/10(火) 11:09:02ウヲオオォ。おもしれー。
pcapyとのコンビも楽しめるじゃない。
お兄さん、パケット自作しちゃうぞー。
0768デフォルトの名無しさん
2009/02/10(火) 11:32:58Python 3 でも使える?
0769デフォルトの名無しさん
2009/02/10(火) 11:50:35ttp://www.amazon.com/dp/0596100329/ $22.76
ttp://www.amazon.co.jp/dp/0596100329/ \3,056
0770デフォルトの名無しさん
2009/02/10(火) 12:03:50その本は4,5年前に出た奴だから、内容がかなり古いぞ。
あと扱うプロトコルが多岐に亘る分、広く浅い。
突っ込んだ説明を求めてるのなら肩透かしを食うかも。
Apressのサイトのサンプルコードを眺めてから買うことを勧める。
0771デフォルトの名無しさん
2009/02/10(火) 12:04:43グロ注意
0772デフォルトの名無しさん
2009/02/10(火) 12:30:39さんくす
はじPyには、載っていないっぽいね
とりあえず、ライブラリみてるお
シェルスクリプトで実装しちゃうけど
Beep音のバリエーションだけは、欲しいなあ
X以外のときは、みんな、どうしているんだろ
0773デフォルトの名無しさん
2009/02/10(火) 12:54:180774デフォルトの名無しさん
2009/02/10(火) 13:28:050.1秒単位でビープ音を変えられるみたいだから
いろいろとできそうだね
0775デフォルトの名無しさん
2009/02/10(火) 13:38:410776デフォルトの名無しさん
2009/02/10(火) 13:39:33別のにするわ。
ttp://www.secdev.org/projects/scapy/
0777デフォルトの名無しさん
2009/02/10(火) 13:51:46767だが、その本は止めとけ。
内容のレベルが低すぎるし、中でどうなってるのかも説明してない。
0778デフォルトの名無しさん
2009/02/10(火) 17:48:010779デフォルトの名無しさん
2009/02/10(火) 19:51:30ttp://chuck.cs.princeton.edu/
0780デフォルトの名無しさん
2009/02/10(火) 20:11:31chunk -> chuck
0781デフォルトの名無しさん
2009/02/10(火) 20:11:53需要ありますか?
0782デフォルトの名無しさん
2009/02/10(火) 20:18:280783デフォルトの名無しさん
2009/02/10(火) 20:49:37わざわざ作っていただいてありがとうございます。
サクっと作ったみたいなのでビックリです。
しかし、実行できないのですが・・・自分の環境・やり方が間違っているのですが(汗
python ******.py
ではだめなんですよね?
0784デフォルトの名無しさん
2009/02/10(火) 21:17:42>>760だったらwxPython入れないと動かないんじゃないの
0785デフォルトの名無しさん
2009/02/10(火) 22:21:20プログラムには向いてない
0786デフォルトの名無しさん
2009/02/10(火) 22:23:44丁寧に質問しているようで全然なってないという最悪のケースだな。
「実行できない」 ってのは具体的に何?
エラーが出たのならそのまんまコピペ汁
0787デフォルトの名無しさん
2009/02/10(火) 22:30:120788デフォルトの名無しさん
2009/02/10(火) 23:07:040789デフォルトの名無しさん
2009/02/10(火) 23:32:410790デフォルトの名無しさん
2009/02/10(火) 23:33:17勉強し直すかな
0791デフォルトの名無しさん
2009/02/11(水) 01:53:43邦訳出してくれるのはありがたいな。
0792デフォルトの名無しさん
2009/02/11(水) 03:04:180793デフォルトの名無しさん
2009/02/11(水) 08:28:48なぜ女なんだ
0794デフォルトの名無しさん
2009/02/11(水) 09:30:01924 名前:デフォルトの名無しさん[sage] 投稿日:2009/02/11(水) 01:14:35
C++でGTKで書いたアプリを
wxPythonで書き直したら
後者の方が超速くて泣いた
0795デフォルトの名無しさん
2009/02/11(水) 09:37:400796デフォルトの名無しさん
2009/02/11(水) 10:30:160797デフォルトの名無しさん
2009/02/11(水) 10:48:25どうやら利用人口が逆転したとか
0798デフォルトの名無しさん
2009/02/11(水) 10:50:49またお前か。
Ruby厨はいい加減にしろよ。
だからRubyは嫌われるんだよ。
0799デフォルトの名無しさん
2009/02/11(水) 10:53:340800デフォルトの名無しさん
2009/02/11(水) 11:18:120801デフォルトの名無しさん
2009/02/11(水) 11:30:24だからRuby人口がPythonを抜いても無問題。
0802デフォルトの名無しさん
2009/02/11(水) 12:39:150803デフォルトの名無しさん
2009/02/11(水) 13:58:48これを追加してもらうにはどうすりゃいいのかな
0804デフォルトの名無しさん
2009/02/11(水) 13:59:420805デフォルトの名無しさん
2009/02/11(水) 14:12:53インスコしただけだけど、xmlとかhtmlとかがモジュール名になってるんだな。
これはスッキリしてていい。
はやく外部モジュールも3kに移行してくれー。
0806デフォルトの名無しさん
2009/02/11(水) 14:17:090807デフォルトの名無しさん
2009/02/11(水) 14:25:520808デフォルトの名無しさん
2009/02/11(水) 14:46:030809デフォルトの名無しさん
2009/02/11(水) 14:46:360810デフォルトの名無しさん
2009/02/11(水) 14:50:32完全に 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)
設定は全ての言語で。
0811デフォルトの名無しさん
2009/02/11(水) 14:51:23なんという頭の悪さ
0812デフォルトの名無しさん
2009/02/11(水) 14:56:34python使おうとすると技術系キモヲタ扱いされて嘲笑されるんだ
0813デフォルトの名無しさん
2009/02/11(水) 15:38:40まぁ腕時計のGショックみたいにRailsの逆輸入で火がついたってのは皮肉な話だけど。
Rubyいろんな雑誌に記事出したり普及活動してたからな〜
いつだったかJavaのオブジェクト指向をマスターしよう!っていう内容の
本なのにRubyで説明してるのがあって笑った
Ruby厨は当時から気持ち悪かった
0814デフォルトの名無しさん
2009/02/11(水) 16:31:09しゃべれなくてもいいから、読めるようになろうな>英語
0815デフォルトの名無しさん
2009/02/11(水) 16:36:35これでRubyの有用性が証明されたね
0816デフォルトの名無しさん
2009/02/11(水) 16:38:10808ページって,何キロくらいあるんだろう。
0817デフォルトの名無しさん
2009/02/11(水) 16:42:09お前マジで首吊って死ねよ。
Pythonの方が人気あるからって嫉妬すんな。
0818デフォルトの名無しさん
2009/02/11(水) 16:50:14なんでわざわざ他のスレまで来て必死に布教しているんだろうなぁ。
0819デフォルトの名無しさん
2009/02/11(水) 16:50:30日本語のページを検索ワロチ
python の検索結果 約 66,900,000 件中 1 - 10 件目 (0.10 秒)
0820デフォルトの名無しさん
2009/02/11(水) 16:51:530821デフォルトの名無しさん
2009/02/11(水) 16:58:160822デフォルトの名無しさん
2009/02/11(水) 16:58:580823デフォルトの名無しさん
2009/02/11(水) 17:00:210824デフォルトの名無しさん
2009/02/11(水) 17:20:030825デフォルトの名無しさん
2009/02/11(水) 17:21:10語源は麻雀牌の「白板」(=パイパン、baiban。三元牌の1つ。
上に何も描かれていない白一色の牌)によると言われている。
元々はこの牌を意味する隠語に「土器」(「かわらけ」と読む。
表面に何も装飾のない「素土器」の意)という言葉があり、最初は陰毛 ...
0826デフォルトの名無しさん
2009/02/11(水) 17:31:010827デフォルトの名無しさん
2009/02/11(水) 18:07:49に見えたorz
0828デフォルトの名無しさん
2009/02/11(水) 18:15:23凶器になりそうだな
0829デフォルトの名無しさん
2009/02/11(水) 18:57:47深くなってきたらインデント1つの幅を変えたりとかする?
0830デフォルトの名無しさん
2009/02/11(水) 19:09:49このスレのRuby荒らしを見て、なんかもうRubyを使いたくなくなった。
ああいう程度の低い人がRubyを使ってるのかと想像すると悲しくなるから。
0831デフォルトの名無しさん
2009/02/11(水) 19:17:32Pythonの中の人は基本4つ分で、グーグルの仕事の時だけ2つ分にしてるらしい
一週間前から勉強し始めた俺は4つ分
0832デフォルトの名無しさん
2009/02/11(水) 19:20:014幅。
PEPに書いてなかったっけ?
コードは基本、ネストレベルが深くなりすぎないように気をつけてる。
気になるほど横に広がらざるを得ないって状況は少ない。
0833デフォルトの名無しさん
2009/02/11(水) 19:25:13公式では4が推奨されているし、pythonライブラリはほぼ全部indent=4。
0834デフォルトの名無しさん
2009/02/11(水) 20:05:090835デフォルトの名無しさん
2009/02/11(水) 20:28:55Pythonでも2で書いてる
特に苦情ないよ
0836デフォルトの名無しさん
2009/02/11(水) 21:00:16今直ぐ止めろw
0837デフォルトの名無しさん
2009/02/11(水) 21:04:540838デフォルトの名無しさん
2009/02/11(水) 21:16:040839デフォルトの名無しさん
2009/02/11(水) 21:28:08Rubyの力は雄大だな
0840デフォルトの名無しさん
2009/02/11(水) 21:59:154に慣れると2が窮屈に感じる。
0841デフォルトの名無しさん
2009/02/11(水) 22:03:19馬鹿かお前ら
0842デフォルトの名無しさん
2009/02/11(水) 22:13:390843デフォルトの名無しさん
2009/02/11(水) 22:16:160844デフォルトの名無しさん
2009/02/11(水) 22:24:40自分で素だと見づらい事を認めちゃってる気がしないでもないが
0845デフォルトの名無しさん
2009/02/11(水) 22:55:160846デフォルトの名無しさん
2009/02/11(水) 22:55:520847デフォルトの名無しさん
2009/02/11(水) 22:58:100848デフォルトの名無しさん
2009/02/11(水) 22:59:28インデックスアクセスする→シーケンス、しない→タプル
0849デフォルトの名無しさん
2009/02/11(水) 23:00:340850デフォルトの名無しさん
2009/02/11(水) 23:01:22インデントの深さに応じて背景色を変えてる
ってことじゃないか?
0851デフォルトの名無しさん
2009/02/11(水) 23:06:21同じ型で変更予定がないから迷っていたのですが、インデックスアクセスするのでシーケンスにします。ありがとうございました。
0852デフォルトの名無しさん
2009/02/11(水) 23:06:510853デフォルトの名無しさん
2009/02/11(水) 23:08:06必死で
Python シーケンス
で調べた俺に謝れ
0854デフォルトの名無しさん
2009/02/11(水) 23:08:440855デフォルトの名無しさん
2009/02/11(水) 23:11:350856デフォルトの名無しさん
2009/02/11(水) 23:11:490857デフォルトの名無しさん
2009/02/11(水) 23:23:440858デフォルトの名無しさん
2009/02/11(水) 23:43:530859デフォルトの名無しさん
2009/02/11(水) 23:50:180860722
2009/02/12(木) 00:01:290861デフォルトの名無しさん
2009/02/12(木) 00:53:520862デフォルトの名無しさん
2009/02/12(木) 01:42:19リスト=配列
タプル=構造体
みたいな感じで使い分けてる俺
0863デフォルトの名無しさん
2009/02/12(木) 01:48:37構造体=クラス(インスタンス変数とかいうやつ)
タプルは使いどころがわかんないね
0864デフォルトの名無しさん
2009/02/12(木) 01:57:00C構造体->タプル(わざわざオブジェクト指向を徹底するほどの規模でもないとき)
Cクラス->クラス(ちゃんと後のこと考えて設計するとき)
かな
0865デフォルトの名無しさん
2009/02/12(木) 01:58:39構造体->ハッシュ
の方が良く使うけどね
0866デフォルトの名無しさん
2009/02/12(木) 03:58:560867デフォルトの名無しさん
2009/02/12(木) 04:04:130868デフォルトの名無しさん
2009/02/12(木) 08:43:18構造体にハッシュを使いたくなったら、代わりに named tuple を使おう。(Python 2.6以降)
0869デフォルトの名無しさん
2009/02/12(木) 09:15:480870デフォルトの名無しさん
2009/02/12(木) 09:25:56>>> 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)
0871デフォルトの名無しさん
2009/02/12(木) 16:54:20指針のひとつとして、提案すると
tuple or class(instance object) の選択は、属性への代入操作をするかしないか。(immutable or mutable)
手軽に構造体代わりというなら自分もnamedtupleに1票だけど、_replace使うくらいならクラスにしたほうがいい。
クラス / tuple の使い分けで、tupleの場合は同じ変数に別データの上書き禁止とかローカルルールも併用すると、
変数の型だけ追って見て、オブジェクトが状態を持ってるかどうか解るよーになる。(機械的なチェックはないけど)
構造体 -> ハッシュ(辞書?)は、属性名固定なのにハッシュ値計算されるのが無駄なように思う。
…とは言え、通常のオブジェクトの属性アクセスも殆どは辞書アクセスなんだよね。(CPython)
構造体代わりとしてクラス使うなら、new style class で __slots__ 宣言するのがいいのかな。
0872デフォルトの名無しさん
2009/02/12(木) 17:33:300873デフォルトの名無しさん
2009/02/12(木) 18:14:510874デフォルトの名無しさん
2009/02/12(木) 18:18:460875デフォルトの名無しさん
2009/02/12(木) 20:21:500876デフォルトの名無しさん
2009/02/12(木) 21:13:35S[i] のうちで
・ S[i][2] が最小のもの
・ S[i][1] が L 以下のもののうち、S[i][2] が最小のもの
・ S[i][0] が L 以下で、S[i][1] が L 以上のもののうち、S[i][2] が最小のもの
を取得したいのですが、関数定義して filter や min に渡してやればよいのでしょうか
0877デフォルトの名無しさん
2009/02/12(木) 21:20:34ただ性能的に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)
0880デフォルトの名無しさん
2009/02/12(木) 21:38:340881デフォルトの名無しさん
2009/02/12(木) 22:06:480882デフォルトの名無しさん
2009/02/12(木) 23:22:21たしかにPythonとRubyはサポートしているデータ構造も想定される
用途もかなりオーバーラップしてるから全く違う言語を学習する方
がいいな。HSPとかね。あれは勉強になった。書いてるだけで発狂
しそうになったのはあの言語だけだ
0883デフォルトの名無しさん
2009/02/12(木) 23:23:220884デフォルトの名無しさん
2009/02/12(木) 23:24:29何だったんだ
0885デフォルトの名無しさん
2009/02/13(金) 01:49:31勝ち負けは基本的にどうでもいいんだけどPythonの人はこのスレに来て何をしたいの?
新規ユーザーをrubyに取られるのが怖いの?ネガティブキャンペーンてやつ?
0886デフォルトの名無しさん
2009/02/13(金) 01:59:330887デフォルトの名無しさん
2009/02/13(金) 02:01:170888デフォルトの名無しさん
2009/02/13(金) 02:38:300889デフォルトの名無しさん
2009/02/13(金) 03:09:530890デフォルトの名無しさん
2009/02/13(金) 07:19:43VB2005 (2008以降への移行はそのうちやる) 使いなんだが
Python の他には何を学習したらいいと思う?
0891デフォルトの名無しさん
2009/02/13(金) 09:11:45釣られてやる。
スレタイ確認しろ。
0892デフォルトの名無しさん
2009/02/13(金) 12:48:04import 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])
0893デフォルトの名無しさん
2009/02/13(金) 15:02:59教養的には用途が被ってなければなにやっても為になると思うけど
実用的には沢山言語を触ったことがあるかよりアルゴリズム
をどれだけ知っているかとかsql使えるとかSubversion使えるほうが大事で
VBとPythonが使えるなら言語を学習する時間を他の事を学習する時
間に当ててみては。というと、結論としては英語。
0894デフォルトの名無しさん
2009/02/13(金) 18:10:032to3の変換は基本 2.6 -> 3.0 なので、
返還前に2.6の警告オプション付で警告なしで通るようにしてから 2to3を使う。
この場合は、返還前のコードをimp.reloadに修正するのが推奨されてる方法だと思う。
2.5とも互換を保ちたければ、
try:
from imp import reload
except ImportError:
pass
0895デフォルトの名無しさん
2009/02/13(金) 20:53:01無料開発環境配って解説本で設けるビジネスモデル。
その取り巻きがすごく多かった。
おそらくHSPの主な支持者は、団塊世代から団塊Jrまでの中間層の、アセンブラで育った世代じゃないかと推測。
基本であるBasicやC言語などは構造化プログラミングを導入したので、
jmpで自由なコーディングをしてきた人々にはむしろ理解しがたかった可能性がある。
そういう流れに取り残された、趣味プログラマから受け入れられたんじゃないかな。
僕もオブジェクト指向はいろいろ呼んでみたけど理解できなかったし。
0896デフォルトの名無しさん
2009/02/13(金) 20:56:25コードを返還してみたり
Python使う人はすごいですね!
0897デフォルトの名無しさん
2009/02/13(金) 21:12:000898デフォルトの名無しさん
2009/02/13(金) 22:20:52なるほど、よくわかりました。
0899デフォルトの名無しさん
2009/02/13(金) 23:12:58求人数は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位内に入ってるなんて・・まだまだ絶滅しそうにないな。
0900デフォルトの名無しさん
2009/02/13(金) 23:51:160901デフォルトの名無しさん
2009/02/14(土) 00:39:320902デフォルトの名無しさん
2009/02/14(土) 00:40:34Pythonはやっぱり日本ではマイナーだw
でも、lispとかもないんだなw
0903 ◆UNKOVIP9RM
2009/02/14(土) 01:57:320904デフォルトの名無しさん
2009/02/14(土) 02:15:07俺はもう駄目だ
0905デフォルトの名無しさん
2009/02/14(土) 14:24:55def 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されないかなぁ。
0906デフォルトの名無しさん
2009/02/14(土) 14:35:31そんなバグありで使い道もいまいちパッとしない関数 (ry
0907デフォルトの名無しさん
2009/02/14(土) 15:33:23http://code.activestate.com/recipes/500261/
0908デフォルトの名無しさん
2009/02/14(土) 19:26:53マイナーバージョンアップで追加された機能がbackportされるわけねーだろwww
0909デフォルトの名無しさん
2009/02/14(土) 20:35:120910デフォルトの名無しさん
2009/02/14(土) 21:42:370911デフォルトの名無しさん
2009/02/14(土) 21:46:170912デフォルトの名無しさん
2009/02/14(土) 21:47:480913デフォルトの名無しさん
2009/02/14(土) 22:33:10お ま え
0914デフォルトの名無しさん
2009/02/14(土) 23:08:20Ruby使いはヤンデレ
そんな妄想
0915デフォルトの名無しさん
2009/02/14(土) 23:20:18少し実験してみたら最初に見つかったものが返されているようですが、これは決まっていることですか? それとも偶然かもしれませんか?
0916デフォルトの名無しさん
2009/02/14(土) 23:38:15いよいよ会社の貯金も先が見えてきたよ。
不況の世の中転職も大変だと思うが、がんばってくれよ。
0917デフォルトの名無しさん
2009/02/15(日) 00:16:08保証はしていないみたいだけど
シーケンスにmin関数を適用したときに
仮に最初に見つかったもの以外が返されるなら
いったい中でどんなことやってるのか知りたい。
0918デフォルトの名無しさん
2009/02/15(日) 00:25:25Python3のソース見る限りだとこんな感じのコードになってたので決まってることなんだろう。
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);
}
0919デフォルトの名無しさん
2009/02/15(日) 00:34:43> Python3のソース見る限りだとこんな感じのコードになってたので
> 決まってることなんだろう。
そういうもんじゃないと思うが。
そもそも「最初に見つかった」って一体何なんだ?
0920デフォルトの名無しさん
2009/02/15(日) 00:36:25もうすぐでるならPHPやめてPythonやりたい
0921デフォルトの名無しさん
2009/02/15(日) 00:44:04keyで指定した関数で得られる値が同じ要素のうち、イテレータブルを走査したときに
より先に現れる方、という意味だと思うけど
自分も>>918みたいに思ったのでhelp(min)してみたけど書いてないのでソースで!
って思ったんだけどたしかにそういうもんじゃないね
0922デフォルトの名無しさん
2009/02/15(日) 00:50:47いつも間違えるorz
0923デフォルトの名無しさん
2009/02/15(日) 02:27:550924デフォルトの名無しさん
2009/02/15(日) 03:55:120925デフォルトの名無しさん
2009/02/15(日) 17:23:360926デフォルトの名無しさん
2009/02/15(日) 18:05:120927デフォルトの名無しさん
2009/02/15(日) 19:59:360928デフォルトの名無しさん
2009/02/15(日) 22:08:07boost厨乙
0929デフォルトの名無しさん
2009/02/15(日) 22:11:570930デフォルトの名無しさん
2009/02/15(日) 23:37:570931デフォルトの名無しさん
2009/02/16(月) 00:26:20一度しかない人生。自分を大切に。
0932デフォルトの名無しさん
2009/02/16(月) 01:04:400933デフォルトの名無しさん
2009/02/16(月) 01:06:220934デフォルトの名無しさん
2009/02/16(月) 01:13:560935デフォルトの名無しさん
2009/02/16(月) 01:27:050936デフォルトの名無しさん
2009/02/16(月) 01:28:250937デフォルトの名無しさん
2009/02/16(月) 01:31:240938デフォルトの名無しさん
2009/02/16(月) 01:36:210939デフォルトの名無しさん
2009/02/16(月) 01:38:020940デフォルトの名無しさん
2009/02/16(月) 01:39:34要するに安定したソートか否かってことジャマイカ
0941デフォルトの名無しさん
2009/02/16(月) 01:41:140942デフォルトの名無しさん
2009/02/16(月) 01:41:340943デフォルトの名無しさん
2009/02/16(月) 01:46:03Pythonのお勉強 Part32
http://pc11.2ch.net/test/read.cgi/tech/1234716330/
0944デフォルトの名無しさん
2009/02/16(月) 01:49:070945デフォルトの名無しさん
2009/02/16(月) 01:49:250946デフォルトの名無しさん
2009/02/16(月) 01:49:520947デフォルトの名無しさん
2009/02/16(月) 01:50:030948デフォルトの名無しさん
2009/02/16(月) 01:50:230949デフォルトの名無しさん
2009/02/16(月) 01:50:470950デフォルトの名無しさん
2009/02/16(月) 01:51:020951デフォルトの名無しさん
2009/02/16(月) 02:10:580952デフォルトの名無しさん
2009/02/16(月) 02:20:19それなら俺はcommon lisp上に作られた
clpython http://trac.common-lisp.net/clpython/
でctypesとかCで書かれたpython module使えるようにしてほしいぞ
0953デフォルトの名無しさん
2009/02/16(月) 03:44:030954デフォルトの名無しさん
2009/02/16(月) 04:01:590955デフォルトの名無しさん
2009/02/16(月) 04:02:31>>953 is >>954 は False
>>953 == >>953 は True
>>953 is >>953 は True
0956デフォルトの名無しさん
2009/02/16(月) 04:07:380957デフォルトの名無しさん
2009/02/16(月) 04:08:110958デフォルトの名無しさん
2009/02/16(月) 18:41:15日本語通じるかなあwww
0959デフォルトの名無しさん
2009/02/16(月) 22:42:220960デフォルトの名無しさん
2009/02/17(火) 00:42:360961デフォルトの名無しさん
2009/02/17(火) 01:19:180962デフォルトの名無しさん
2009/02/17(火) 01:35:230963デフォルトの名無しさん
2009/02/17(火) 01:38:080964デフォルトの名無しさん
2009/02/17(火) 02:46:270965デフォルトの名無しさん
2009/02/17(火) 02:47:060966デフォルトの名無しさん
2009/02/17(火) 03:35:560967デフォルトの名無しさん
2009/02/17(火) 04:12:45B BASIC
C C言語
…(略…
Z まで制覇しるm9(・∀・)ビシッ!!
0968デフォルトの名無しさん
2009/02/17(火) 05:44:350969デフォルトの名無しさん
2009/02/17(火) 05:45:310970デフォルトの名無しさん
2009/02/17(火) 06:00:120971デフォルトの名無しさん
2009/02/17(火) 08:34:290972デフォルトの名無しさん
2009/02/17(火) 08:39:270973デフォルトの名無しさん
2009/02/17(火) 09:33:06変数名の比較ですか?
0974デフォルトの名無しさん
2009/02/17(火) 10:10:140975デフォルトの名無しさん
2009/02/17(火) 10:14:24a == b
True
a is b
True
0976デフォルトの名無しさん
2009/02/17(火) 10:29:30>>> [1] == [1]
True
>>> [1] is [1]
False
>>>
ただしisには注意事項がある。
http://docs.python.org/reference/expressions.html#id24
0977デフォルトの名無しさん
2009/02/17(火) 10:53:200978デフォルトの名無しさん
2009/02/17(火) 14:15:14RubyはPerlと仲良くどんぐりの背比べをしてくれ
0979デフォルトの名無しさん
2009/02/17(火) 14:18:58ruby厨は全員首吊って死ねよ。
python人口の方が多い。
pythonの方がいろいろできる。
言語的仕様は好みの問題。
議論の余地無し。
以上。
0980デフォルトの名無しさん
2009/02/17(火) 14:27:43http://pc11.2ch.net/test/read.cgi/tech/1203557046/
0981デフォルトの名無しさん
2009/02/17(火) 15:09:440982デフォルトの名無しさん
2009/02/17(火) 15:37:02ガベージコレクションなんかで勝手に開放されて、
意図した結果と変わっちゃうことがあるということ?
0983デフォルトの名無しさん
2009/02/17(火) 15:37:520984デフォルトの名無しさん
2009/02/17(火) 17:16:09Rubyじゃないんだから3.0で機能追加するわけねーだろwww
0985デフォルトの名無しさん
2009/02/17(火) 17:21:040986デフォルトの名無しさん
2009/02/17(火) 17:36:40ついでにrange(0, ...)でitertools.count()にすればいいのに
0987デフォルトの名無しさん
2009/02/17(火) 18:14:000988デフォルトの名無しさん
2009/02/17(火) 18:27:320989デフォルトの名無しさん
2009/02/17(火) 19:37:42参照がある以上、解放はされないが、移動される可能性がある。
1. 左辺をフェッチ
2. 右辺をフェッチ
3. 比較
1と2の間にGCが起きると同じオブジェクトでもアドレスが違うかも知れない。
0990デフォルトの名無しさん
2009/02/17(火) 20:45:300991デフォルトの名無しさん
2009/02/17(火) 21:27:310992デフォルトの名無しさん
2009/02/17(火) 21:42:42左辺と右辺の同一性比較。
あらかじめ変数に代入しとけばOK!
a = むにゃ
b = ほにゃ
a is b
0993デフォルトの名無しさん
2009/02/17(火) 21:58:500994デフォルトの名無しさん
2009/02/17(火) 22:05:040995デフォルトの名無しさん
2009/02/17(火) 22:07:110996デフォルトの名無しさん
2009/02/18(水) 00:26:52おk
0997デフォルトの名無しさん
2009/02/18(水) 00:28:18同一性を確認するため。
0998デフォルトの名無しさん
2009/02/18(水) 02:19:260999デフォルトの名無しさん
2009/02/18(水) 02:19:571000デフォルトの名無しさん
2009/02/18(水) 02:20:5410011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。