Pythonのお勉強 Part3 ..
[2ch|▼Menu]
159:デフォルトの名無しさん
08/11/24 16:16:54
>>156
マジで有るのか。
「パイパイいれていじってみたんだけど良いなコレ。」
「パイパイちょっと触ってみたんだけど、まだ発展途上じゃね?」
みたいな会話が繰り広げられているのか。

160:デフォルトの名無しさん
08/11/24 19:50:05
こんなプログラムが必要になった。
temp=lst[i]; lst[i]=-1; i=temp #(1)

pythonではこんな見苦しい一時変数は必要ないもんね。と思い次のように書いた。
i, lst[i] = lst[i], -1 #(2)

賢明な諸兄はお気づきかと思うが、このプログラムは上手くいかない。
半日悩んだ結果、次のように書けばよいことが判った。
lst[i], i = -1, lst[i] #(3)

で、教えて欲しいんだけど、(2)が駄目で、(3)なら良いというこの動作は
うちの環境ではたまたま動くだけ? それとも公式に規定された動作ですか?

### 結局、プログラムは(1)の書き方で完成しました。

161:デフォルトの名無しさん
08/11/24 20:15:08
これのWARNINGのところじゃない?
URLリンク(www.python.org)
URLリンク(www.python.jp)

162:デフォルトの名無しさん
08/11/24 20:27:12
>>160
URLリンク(www.python.org)
> If the target is a target list enclosed in parentheses or in square brackets:
> The object must be a sequence with the same number of items as there are targets
> in the target list, and its items are assigned, from left to right, to the
> corresponding targets.

左から右の順で代入するとあるので公式に規定された動作といえそう。


163:デフォルトの名無しさん
08/11/25 03:29:32
Rubyだとruby会議みたいなイベントが全国であるけど、
Pythonにもそういうイベントってある?

164:デフォルトの名無しさん
08/11/25 08:34:11
>>163
PyConじゃね?

165:デフォルトの名無しさん
08/11/25 08:56:23
URLリンク(pyspa.org)

166:デフォルトの名無しさん
08/11/25 09:37:52
ないわ〜

167:デフォルトの名無しさん
08/11/25 11:56:27
>>163
残念ですが、なくなったようです。

168:デフォルトの名無しさん
08/11/25 12:52:26
だからRubyやれって!

169:デフォルトの名無しさん
08/11/25 17:18:14
>>167
PyConって無くなったの?
知らなかった...orz....Pythonもうダメだ....。


170:デフォルトの名無しさん
08/11/25 17:19:02
そうだねRubyもうダメだね

171:デフォルトの名無しさん
08/11/25 17:34:31

>>167=>>169
おい、デマばっか流してんじゃねーよ。

PyCon は今年もあったし、来年もちゃんとある。
URLリンク(www.python.org)

せいぜいお前は Python の人気を妬む Ruby使いってとこだろうが、
大人気ないぞ。


172:デフォルトの名無しさん
08/11/25 17:36:51
Ruby使いがPythonの「人気」に嫉妬することはなかろ

173:デフォルトの名無しさん
08/11/25 17:46:13
>>167
ダンジョー乙

174:デフォルトの名無しさん
08/11/25 18:01:24
だからRubyやれって!
日本でpython使うメリットなんてないんだよ。

175:デフォルトの名無しさん
08/11/25 18:27:39
rubyにnumpyに相当するものあるの?

176:デフォルトの名無しさん
08/11/25 18:45:13
Ruby 使いは痛々しいな。。。
なんだ >>174 は、
恥というものを知らんのか。

177:デフォルトの名無しさん
08/11/25 18:56:11
>>173
いいえ、ターボギアスR2です。

178:デフォルトの名無しさん
08/11/25 19:01:46
またruby厨が荒らしてるよ

179:デフォルトの名無しさん
08/11/25 19:19:21
>>174
惨めなやつ!

180:160
08/11/25 20:06:14
>>161,162
なるほど、ちゃんと公式ドキュメントに書かれてたんですね。
「are not safe 安全でない」の解釈が微妙ですが、
規定された動作と考えてよさそうですね。

勉強になりました。ありがとうございました。

181:デフォルトの名無しさん
08/11/25 20:20:07
LinuxのX端末上で文字の色を反転させて出力する方法はありますか?

例えば、

txt="abcdefg"
5番目と7番目(インデックス4と6)の文字の表示色を反転
print txt

みたいなことを望んでいます。

182:181
08/11/25 20:24:00
追記
文字と文字の背景の色を反転という意味です。

183:デフォルトの名無しさん
08/11/25 20:58:49
もちろんできます。

184:sage
08/11/25 21:00:56
エスケープシーケンス使えば。
URLリンク(www.siafoo.net)

もっと凝りたいなら、cursesで。

185:デフォルトの名無しさん
08/11/25 21:03:19
X端末なつかしいな。

186:181
08/11/25 22:33:33
>>184
ありがとうございます。
エスケープシーケンスを使うことにしました。


187:デフォルトの名無しさん
08/11/26 14:44:10
>「are not safe 安全でない」の解釈が微妙ですが、

「全く安全という訳ではない」



188:デフォルトの名無しさん
08/11/26 19:02:41
turbogearsスレにも書いたのですが、過疎ってるようなのでこちらで質問させてください。

turbogearsを構成している各eggファイルをダウンロードして、turbogearsのインストールを行いたいのですが、
公式サイトのファイルリストのどのファイルをダウンロードすればいいのでしょうか。
ちなみにWindows環境です。


189:デフォルトの名無しさん
08/11/26 19:15:30
URLリンク(nagosui.org)

190:デフォルトの名無しさん
08/11/26 19:20:15
URLリンク(docs.turbogears.org)
URLリンク(docs.turbogears.org)


191:デフォルトの名無しさん
08/11/26 19:27:41
>>189
ご紹介いただいたページは既に拝見しました。
プロクシ環境なのでこの方法が使えません。

そこで、上記サイトのオフラインインストールマニュアルを見たのですが、
"基本的に最新バージョンの各パッケージのeggファイルを落とせばいいけど、lightbox等の一部のパッケージは除く"みたいな表現があったので、悩んでます。
これらのファイルはダウンロードしなくていいって事なんですかね?

192:デフォルトの名無しさん
08/11/26 19:35:23
いいんじゃない?

193:デフォルトの名無しさん
08/11/26 19:38:57
>>192
そうですか。では、インストールしてみます。
ありがとうございました。

194:デフォルトの名無しさん
08/11/27 00:00:43
質問です。
Pythonで数独を解くプログラムを書きました。
色々いじってPenIII933MHzでPsycoなしで70秒、Psycoありで
25秒くらいで回答できるようになりました。
さらに高速化しようとboost.pythonを利用してC++に
移植したのですが返って遅くなってしまいました。
何が原因でしょうか?必要であればソース出します。

195:デフォルトの名無しさん
08/11/27 00:11:03
>>194
よくわかんねえな。つうかそんなの組み方次第じゃないの。

数独解くプログラムって
URLリンク(codepad.org)
こんなもんでいいの?
C/CLLなら瞬殺だと思うけど。

196:デフォルトの名無しさん
08/11/27 00:11:58
>>194
>PenIII933MHz

ワーキングプアかよ(wwWwwwWWWwwwwWwwWwwww

197:デフォルトの名無しさん
08/11/27 00:26:59
>>195
回答ありがとうございました。ほとんど同じコードをPythonで書いていました。
あまりC++が詳しくないので、おっしゃられるとおりC++での組み方が
悪いだけなのだと思います。勉強しなおしてきます。

198:195
08/11/27 00:44:36
CLLって何だw
C++のtypoね

>>197
ロジックが同じようなもんなら、とりあえず以下の点が疑わしいかなあ

・最適化していない(コンパイルオプションの問題)
・最近のVC++を使っているなら、vectorとかを使うと、[]演算子でもデフォルトで
 範囲チェックがなされている可能性が高い(俺も細かいことは知らん)


199:デフォルトの名無しさん
08/11/27 00:57:35
>>198
Pythonでは
URLリンク(codepad.org)
という感じでした。

C++はおっしゃられるとおりvectorを多用していました。
boost.pythonがどうこういう以前の話だったようです。
勉強になりました。

200:デフォルトの名無しさん
08/11/27 01:07:40
おお、すごい2chにpostで投稿できた。

201:デフォルトの名無しさん
08/11/27 01:07:55
>>199
vector<>は別に悪者じゃなくて、C++ならそれが普通なんだけどね
VC++は最近セキュリティがらみで色々やってるみたいだから

SECURE_SCLだったかな?そのへんのキーワードでぐぐってみるといい

202:デフォルトの名無しさん
08/11/27 01:10:31
>>198
スレ違いだが、vectorの仕様では、
oprator[]は範囲チェックなし、
範囲チェックしたければメンバー関数at(i)を使うことになっている。


203:デフォルトの名無しさん
08/11/27 01:12:55
>>202
仕様ではそうなっていてもVC8以降は_SECURE_SCLが効いてると
operator[]の範囲チェックをするようになっていた気がする

だから、[]演算子「でも」と書いたんだけどね

204:デフォルトの名無しさん
08/11/27 05:32:11
vectorは要素コピーしまくり

205:デフォルトの名無しさん
08/11/27 05:34:04
Dequeに置き換えるだけで速くなる

206:デフォルトの名無しさん
08/11/27 06:17:44
>>196
PIII800MHz
192MB
ですがなにか?

207:デフォルトの名無しさん
08/11/27 08:07:04
PenII266を現役で使用してるんだが・・・

208:デフォルトの名無しさん
08/11/27 08:23:41

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)


209:デフォルトの名無しさん
08/11/27 08:27:50
ぱい

210:デフォルトの名無しさん
08/11/27 10:41:28
質問させてください。
pythonで一番メジャーなパッケージマネージャは何ですか?

調べてもあんまり出てこないんですよね・・。

211:デフォルトの名無しさん
08/11/27 10:53:26
>>210
easy_installじゃないの?

212:デフォルトの名無しさん
08/11/27 12:26:52
うちのファイルサーバーはpenIII 800だ

213:デフォルトの名無しさん
08/11/27 13:34:53
>>194
つか、遅すぎなんだけど。なにそれ。やる気あんの?

boost とか使う前にアルゴリズムを改良しろよ。
まずは CSP 学べ。

214:デフォルトの名無しさん
08/11/27 13:43:26
産業廃棄物をサーバとして使うなよ(wwWwwWWWwwwwwWwWwwwwWwwww

215:デフォルトの名無しさん
08/11/27 14:18:44
総当りでもしてるのかな?

216:デフォルトの名無しさん
08/11/27 14:26:15
>>215
総当りに近いんじゃね?
25秒とか、古い Pen II でもありえんよ。
CPU が P3 933Mhz もあるんだったら、半秒以上かかる sudoku solver 書いた時点で負け。


217:デフォルトの名無しさん
08/11/27 14:31:22
コードは上にあがってるじゃん

218:デフォルトの名無しさん
08/11/27 14:56:20
>>199のコードに
if __name__ == '__main__':
  import sys
  main(sys.argv[1])

を付け加えて、
530070000
600195000
098000060
800060003
400803001
700020006
060000280
000419005
000080079
とかいう入力を与えてみたけど、一瞬だったけど?
time の結果が0.25秒程度
別にPsycoとか使ってねー

PentiumM 1.7GHz
Windows XP SP3
Python 2.5.2


219:デフォルトの名無しさん
08/11/27 15:01:05
>>194
それって25*25でってこと?


220:デフォルトの名無しさん
08/11/27 15:14:04
っと、コードが晒されているのか。
(少なくとも)3種の枝刈り手法があったと思ったが、どれもやってないの?

221:デフォルトの名無しさん
08/11/27 15:16:32
81マスに9通りの数を置くだけなんだから、総当りだってゴミみたいな計算量だろ
上でやってるのはごくシンプルなバックトラックだよ

数十秒とか絶対ありえん

222:デフォルトの名無しさん
08/11/27 15:17:26
いやさすがに総当りはないか、訂正するw

223:221=222
08/11/27 15:18:47
「総当りがゴミ」を訂正するという意味、重ね重ねすまん

224:194
08/11/27 16:01:18
>215,216,220,221
221さんが指摘されているとおりシンプルなバックトラックです。
他のアルゴリズムも勉強してみます。

>213,218,221
218さんが検証してくださっているとおり簡単な問題は
1秒未満で回答できます。紛らわしくてすいません。
URLリンク(www.sudoku.name)
の問題を使用しているのですが上級++で

004000080
003007000
600800009
030002500
070080090
005000030
200001007
000400100
050000600

というような問題の回答が遅いです。
220さんがおっしゃっているようにアルゴリズムの工夫で
何とかしてみます。ありがとうございました。

225:デフォルトの名無しさん
08/11/27 16:32:27
枝刈りしたら、この上級++の問題、数十倍速く解けるみたいだよ。
がんばって。

226:デフォルトの名無しさん
08/11/27 17:16:13
PyQtを使ったプログラムはソースを公開しないといけないの?

227:デフォルトの名無しさん
08/11/27 18:32:35
ユーザーはともかく、クリエータはGTK(GNOME)の方が多いだろう
GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる


228:デフォルトの名無しさん
08/11/27 21:04:28
turbogearsの2.6対応まだなのー?

229:デフォルトの名無しさん
08/11/28 02:59:53
おれも最近sudoku作ったよ!ナカーマ
どっかのホームページで数独の問題集があって、難易度ごとに別れているんだけど
最強難易度の一番最後の問題(たぶん94番目)を解くのに3秒くらいだったよん。

==環境==
WinXP
ActivePython 2.5.2.2くらい
Core2Duo1.7GHz

230: 
08/11/28 10:47:18
foo = "hoge"
bar = "fuga"
TITLE = {"title":foo - bar}

print TITLE["title"]
これで hoge - fuga と出力したいんだけど
"foo - bar"で引用符で囲むと foo - barになる。
囲まないとエラーになる。
どうすれば hoge - fuga に出来ますか?

231:デフォルトの名無しさん
08/11/28 11:00:31
なんかえらい基本的なことが抜けてる気がするぞ
ちゃんと勉強汁

foo + " - " + bar
"%s - %s" % (foo, bar)


232:デフォルトの名無しさん
08/11/28 11:15:59
>>224
>>195の、単純なバックトラックのCのコードですら
その問題は(俺の環境では)0.35秒ぐらいで解けるようだよ

アルゴリズム改善がベストだが、C++で書いても
そんなに遅いのは、別の理由もありそうだな

233:デフォルトの名無しさん
08/11/28 11:21:11
\x00とすると16進数で8ビット文字列を作れますよね。
16進数を作ってから、\xとつなげるにはどうすればいいですか?
"\x%x"のように文字列フォーマットを使おうとするとエラーになってしまいます。

234:デフォルトの名無しさん
08/11/28 11:22:44
"\\x%x"で定義してから、置換すればいいんじゃね?

235:デフォルトの名無しさん
08/11/28 11:25:31
できないじゃないですか。

236:デフォルトの名無しさん
08/11/28 11:26:19
素直にchr()使いなさい。

237:デフォルトの名無しさん
08/11/28 11:30:51
printf("%c", 0x25);
こんな感じ

238:デフォルトの名無しさん
08/11/28 12:18:40
>>237
chr(0x25)

239: 
08/11/28 12:36:35
>>231
おぉ! + を使って繋げるのか
TITLE = {"title":foo + " - " + bar}
print TITLE["title"]
hoge - fuga
と、無事にできました

でも、これが分かりません orz
> "%s - %s" % (foo, bar)

プログラム経験は昨日からです...
www.python.jpを見ながら勉強してます

240:225
08/11/28 12:55:52
>>229
試してみる。どんな問題?

241:デフォルトの名無しさん
08/11/28 13:51:06
Pythonのオススメの統合開発環境は何ですか?(日本語化可能だと有難いです

PyScripterはバグが多く、使いにくかったです…

242: 
08/11/28 15:10:40
>>241
テキストエディタでいいじゃん

243:デフォルトの名無しさん
08/11/28 15:15:29
>>241
Vimを +python でコンパイルしたもの

244:デフォルトの名無しさん
08/11/28 15:26:20
>>240
URLリンク(www.sudoku9981.com)
の94番目のやつ

245:225
08/11/28 15:46:29
>>224
ありがと。
0.98秒くらいだった。ハードのスペック違うけど。

Vista
CPython 2.6
PentiumM 2.1GHz

246:225
08/11/28 16:31:33
ごめん、訂正。
3回くらい実行したら、最短で0.2秒くらいだった。


247: 
08/11/28 16:47:05
チュートリアルでさえ難しいです
誰か僕に愛の手を

248:デフォルトの名無しさん
08/11/28 16:51:58
どこがわからないか*具体的に*いってみ

249:デフォルトの名無しさん
08/11/28 16:52:45
チュートリアル難しいよねえ。
まあ地道にコード打ってがんばろう。
てなことで今数独問題生成・解答アルゴリズムを考えてる。

250:デフォルトの名無しさん
08/11/28 17:17:26
BeginnersGuide/NonProgrammers - PythonInfo Wiki
URLリンク(wiki.python.org)

251: 
08/11/28 17:43:16
>>248
>"python file" と "python <file" の違いに注意してください。
>後者の場合、プログラム内でinput() や raw_input() が呼び
>出され、ユーザからの入力が必要な場合、入力はファイル から
>取り込まれます。この場合、パーザはプログラムの実行を開始
>される前にファイルを終端まで読み込んでおくので、プログラム
>はすぐに入力の終わりまで到達してしまいます。前者の場合
>(大抵はこちらの方が望ましい動作です)、入力には Python
>インタプリタの標準入力に接続された何らかのファイルまたは
>デバイスが充てられます。

まず最初に意味が理解できなかった所です。

252:デフォルトの名無しさん
08/11/28 18:01:08
perlの場合は両方ともfileを実行するが
pythonは違うから注意しろってことだろ

253:デフォルトの名無しさん
08/11/28 18:26:17
>>251
チュートリアルといいつつ、本当の初心者向けの文章ではないからね
Unixの経験と、他の何らかの言語の経験を仮定している記述も多い

必要の無いところは、分からなくても読み飛ばしてしまっていいと思う

254:デフォルトの名無しさん
08/11/28 18:34:05
>>251
両者ともfileに含まれるPythonコードを解析し実行するという点では同じ。
ただ後者の場合は、解析段階で最後まで読んだfileをinput()の入力にあてがうので、
やってみるとEOFErrorになる。なので普通は誰もやらない。

255:デフォルトの名無しさん
08/11/28 18:45:00
python fileとpython <fileが何の事か分からんです
ひょっとしてコンソールで

$ python file.py
$ python < file.py

こういう事?

256:デフォルトの名無しさん
08/11/28 18:52:23
>>255
なんでそんな簡単なことがわからんの?
Pythonがどうこう以前に、そんなこと
普通にシェルに触ったことがある奴なら誰でもしってるよ。

$ cat < file.py

がなんで file.py の内容をそのまんま吐き出すか考えてみろよ。
stdin からのインプットを待ってるからだろ?


257:デフォルトの名無しさん
08/11/28 19:05:03
触るな危険

258:デフォルトの名無しさん
08/11/28 19:19:45
数独をPythonでLISP風に解くとどんなコードになりますか?
Pythonにこだわらずに
LISPだけでもいいです。


259:デフォルトの名無しさん
08/11/28 19:25:11
>>258
LISP風の定義を言え。
lambda関数ばっかでやりたいのか? 変数に代入できんだろ。

260:デフォルトの名無しさん
08/11/28 19:41:12
触るな危険

261:デフォルトの名無しさん
08/11/28 19:47:35
>>258
Lispは全然詳しくないが
・インデクスアクセスしたいタイプの問題なので、リストよりベクタ向き
・副作用を避けようとすると、9x9のベクタを大量にコピーしまくる羽目になる
ような気がするが、どうなんだろうな

>>199のコードはforとかは使っているが比較的関数型よりのコードに見えるよ
つまり、コピーしまくりんぐ

262:デフォルトの名無しさん
08/11/28 19:53:30
>>258
URLリンク(www.norvig.com)
URLリンク(blog.livedoor.jp)
URLリンク(www.unixuser.org)
URLリンク(d.hatena.ne.jp)

263: 
08/11/28 20:33:07
>>256
ごめんなさい

264:デフォルトの名無しさん
08/11/28 20:37:06
python <i>file</i>
python < <i>file</i>

このようになってたら分かり易いんだけどな。
fileがファイル名なのか "file" という文字を
そのまま打つ必要があるのかが解り難い

265:デフォルトの名無しさん
08/11/28 21:07:38
>>251の訳文「入力は <i> file </i> から取り込まれます」とすべきだったんだな

266:194
08/11/28 22:38:59
>>225
URLリンク(codepad.org)
枝刈りとして分岐が少ない場所から走査するようにしたところ
5秒で回答できるようになり5倍高速化しました。
数十倍は難しいです。もしよろしければ後学のために
ソースを見せていただけないでしょうか?

>>244,245
2.8秒でした。自分のプログラムもそれなりの速さがでているようで
安心しました。

>>198,201,202,232
C++勉強して書き直したところboost.pythonを利用して
0.5秒で回答できるようになりました。
きちんとC++やりなおさないとだめですね。

ところでC++とPythonで配列をやりとりするとき
URLリンク(codepad.org)
のように書いてみたのですが他にうまい書き方があるのでしょうか?

URLリンク(www.boost.org)
を見たのですが、vector<->listの変換の自動化は未実装である
ということでしたが毎回wrapperを書かないといけないのでしょうか?


267:デフォルトの名無しさん
08/11/28 23:00:46
>>266
python標準のリストって何でも入るからな

効率よくC++のvector<int>とやりとりしたいんなら
とりあえずarrayがいいんじゃないの
arrayモジュールについて調べてみることを薦める

arrayは単一型のシークエンスで、バッファインタフェースを備えていて、
buffer_info()で思いっきり内部にアロケートされてる配列のアドレスも取れるから

268:225
08/11/29 00:36:50
あれから遊びで、複数解を求めるように
改造しちゃったけど、それでよければ。

URLリンク(codepad.org)


269:デフォルトの名無しさん
08/11/29 05:23:48
for(std::size_t i=0; i<boost::python::len(l); i++)
{
board[i]=boost::python::extract<int>(l[i]);
}


イテレータでまわすほうが速くなると思う

270:デフォルトの名無しさん
08/11/29 05:29:06
>>268
助けて

$ python sudoku.py
Traceback (most recent call last):
 File "sudoku.py", line 80, in <module>
  main(sys.argv[1])
IndexError: list index out of range

271:デフォルトの名無しさん
08/11/29 05:32:09
ごめん

#test()
#sys.exit(0)

のコメントアウトを外すんだね。
吊ってくる。

272:デフォルトの名無しさん
08/11/29 05:50:26
URLリンク(codepad.org)
ポイントは
・セルごとに次に置ける数字のsetを用意する(テーブル)
・一番数字の個数が少ないセルから分岐する
・テーブルは再帰ごとに新しいのをつくる
最初、数字ごとに次におけるセルをテーブルにして苦労した。

273:デフォルトの名無しさん
08/11/29 11:51:43
pynumはPython2.6に対応してないんですか?

274:デフォルトの名無しさん
08/11/29 12:55:56
URLリンク(inforno.net)
また、-3コマンドラインスイッチにより3.0で削除される機能を使っている場合、警告を出せる。

URLリンク(d.hatena.ne.jp)
2.6を使用するために、あなたのコードに下記の変更が必要かもしれない。


275:デフォルトの名無しさん
08/11/29 17:07:00
Python 言語の中身を詳しく説明したサイトはないの?
例えば AST とか、バイトコンパイルの実装とか、そういったやつ。

276:デフォルトの名無しさん
08/11/29 19:02:43
あるよ

277:デフォルトの名無しさん
08/11/29 19:05:49
いじわるな人・・・

278:デフォルトの名無しさん
08/11/29 19:10:38
>>277
そういう池沼にはレスつけないでくれ。

279:デフォルトの名無しさん
08/11/29 19:33:54
>>276
そうか、なら安心だな。


280:デフォルトの名無しさん
08/11/29 19:35:53
>>275-279
どうみても同一人物だな

281:デフォルトの名無しさん
08/11/29 19:36:24
>>275-280
どうみても同一人物だな

282:デフォルトの名無しさん
08/11/29 20:30:01
matplotlibのplot3Dにバグあるってどんなバグ?
自分は普通に使えてるんだけど

283:デフォルトの名無しさん
08/11/29 20:46:37
pythonで3次元plotしたい場合のお勧めはどれ?
matplotlibがもうサポートしないよと言ってる

284:デフォルトの名無しさん
08/11/29 22:45:23
vpython

285:デフォルトの名無しさん
08/11/30 20:49:38
>>284
便利そうだ
URLリンク(www.nasuinfo.or.jp)


286:デフォルトの名無しさん
08/12/01 11:47:04
3.xへの移行ってまだまだ先でいいんですかね?
色んなライブラリのパッケージもあって楽だし
今のところは2.5が一番使いやすい環境みたいだけど、
今からそれ勉強しても無駄になりますか?


287:デフォルトの名無しさん
08/12/01 15:29:43
>>286
>今からそれ勉強しても無駄になりますか?
無駄にはならないと思うよ。ただ2.6を使ったり、Python 3.0で何がどう変わるのか、なぜ変わるのか、その辺りの事情についてアンテナ張って勉強しとけばオッケーかと。


288:デフォルトの名無しさん
08/12/01 15:47:03
邦訳ドキュメントも2.5になったばかりだし、しばらくは2.5でいいよ。

289:デフォルトの名無しさん
08/12/01 18:28:12
2.6をわざわざVC9でビルドしたが、そこで力尽きてしまった
環境全部移行するのが面倒くさすぎて、結局まだ2.5.2を使っている

どーせ主要なディストリとかcygwinとかもまだキャッチアップしてないだろ

290:デフォルトの名無しさん
08/12/01 19:15:10
>>289
Debian stableだとまだ2.4だw
3に完全移行するのは当分先になるだろうな

291:デフォルトの名無しさん
08/12/01 19:15:26
このスレでturbogearsやってるのは俺だけの予感

292:デフォルトの名無しさん
08/12/01 19:32:20
そんなメジャーなものを使ってて良くいうよ。
俺なんかTenginだもんね。

293:デフォルトの名無しさん
08/12/01 19:37:18
でもturbogearsって聞かなくね?
mod_wsgiで動くの?

294:デフォルトの名無しさん
08/12/01 19:37:56
pythonで画像処理ならPILですが
動画なら何を使うといいのでしょうか?

295:デフォルトの名無しさん
08/12/01 21:51:44
俺なんかTempita

296:デフォルトの名無しさん
08/12/01 22:21:28
なんでマイナー自慢になってんだよw

297:デフォルトの名無しさん
08/12/01 22:34:55
俺はダンジョーで毎日ヤッてるよ。

298:デフォルトの名無しさん
08/12/01 22:38:07
>>297
Djangoの話題はスレが荒れる

299:デフォルトの名無しさん
08/12/01 22:57:04
ぞぺの仲間入りですね

300:デフォルトの名無しさん
08/12/01 23:04:19
ぞぺとどじゃんごっていろいろ似てるよな
使ってる人たちの香ばしさとか

301:デフォルトの名無しさん
08/12/01 23:26:18
パイパイで、ぽろーーん

302:デフォルトの名無しさん
08/12/02 00:55:46
pythonでインデント使わない方法はありませんか?
ファイルサイズが大きくて困ってます

303:デフォルトの名無しさん
08/12/02 01:00:59
気にするな

304:デフォルトの名無しさん
08/12/02 01:03:52
x=range(100);print x
for i in x: print i;print '\n';

これなら出来るけど

class hoge: def func(): pass;

みたいにインデントが必要なのが2つ以上は無理だと思うよ

305:デフォルトの名無しさん
08/12/02 01:18:02
今時メモリすらギガ単位で計られる時代に
たかがスクリプトのファイルサイズを気にする奴がいるとはな

306:デフォルトの名無しさん
08/12/02 01:30:41
低スペックに気を配れないプログラマはゴミ

307:デフォルトの名無しさん
08/12/02 01:31:53
可読性に気を配れない奴もな

308:デフォルトの名無しさん
08/12/02 01:32:03
300K以上のスクリプト起動すると遅くない?

309:デフォルトの名無しさん
08/12/02 01:34:27
インタプリタだから容量は実行速度にも影響出るだろ

310:デフォルトの名無しさん
08/12/02 01:51:35
じゃぁメモリに置いとけや

311:デフォルトの名無しさん
08/12/02 01:53:12
バイトコンパイルして実行するんだから
インデントが実行速度に影響するわけないだろ

312:デフォルトの名無しさん
08/12/02 01:53:36
>>309
> インタプリタだから

関係ねえし。


313:デフォルトの名無しさん
08/12/02 01:57:51
インデント削るととか、大昔のBASICの高速化技術みたいだな
発想が化石過ぎて感動した

pycってファイルが何なのか分かってるか?

314:デフォルトの名無しさん
08/12/02 02:11:32
書き込み権限がないからpycが無いです

315:デフォルトの名無しさん
08/12/02 02:13:22
1つの.pyに詰め込んでるのでpycが無いです

316:デフォルトの名無しさん
08/12/02 02:13:30
昔のBASICって、よく使う変数はプログラムの最初の方で
宣言しておいた方が速くなるとかあったなw

そういえば、レンタル鯖とかでPythonのCGIを実行する場合って
pycは作られるのかな?

317:デフォルトの名無しさん
08/12/02 02:14:17
>>316
作られるよ

318:デフォルトの名無しさん
08/12/02 02:14:52
pyc作られようが作られまいが、内部的にはバイトコンパイルしてから
実行だから、「インデントが」速度に影響出るなんてことは、あり得ねえけどな

319:デフォルトの名無しさん
08/12/02 04:06:23
>>302
> pythonでインデント使わない方法はありませんか?
> ファイルサイズが大きくて困ってます
ハードタブにしろ

320:デフォルトの名無しさん
08/12/02 07:30:44
今時ハードタブはありえない

321:デフォルトの名無しさん
08/12/02 08:30:29
内部的にバイトコンパイルする速度には影響出るが
全体の実行時間に対する割合で言えば影響は無いと言ってもいいくらいという

322:デフォルトの名無しさん
08/12/02 08:42:55
スレリンク(tech板)l50

323:デフォルトの名無しさん
08/12/02 10:06:44
>>321
ギャバンが蒸着を完了する程度の差しか無いだろうな。

324:デフォルトの名無しさん
08/12/02 10:29:07
Pythonのスレで思うのは
バージョン間ごとの信者なんて沸かないことだな。
安定だの不安定だの、信頼性に欠けるとか。
ドキュメント化されてるからそうなってるんだろうなー。

325:デフォルトの名無しさん
08/12/02 10:36:25
>>324
バージョンあがるごとに確実によくなってるし、Deprecated Warning を無視していない
限りはほぼ確実に次のマイナーバージョンアップ (2.4 -> 2.5 みたいな) で問題ないから
移行も楽だからねぇ。

Python3.0も、互換性はなくなるけどオブジェクトシステムとか基本が変わらないし、
Python2.6にPython3.0移行支援が用意されてる (大量の Deprecated Warning と 2to3) から、
php4 -> php5 とか perl5 -> perl6 とか ruby1.8 -> ruby1.9 とかよりも簡単に
移行できそう。まぁ、ある程度有名ライブラリが3.0に対応してくるまで自分のアプリは
2.x 用のままだけど。

326:デフォルトの名無しさん
08/12/02 10:37:20
まぁ一年は様子見るけどな

327:デフォルトの名無しさん
08/12/02 18:45:34
PILでimage sequenceをゼロから作る方法をみつけれない
どこかにいいsample codeないのかな

328:デフォルトの名無しさん
08/12/02 18:51:24
GoogleCodeSearch

329:デフォルトの名無しさん
08/12/02 21:41:14
静止画はPIL
動画はpygame
という使い分けでいいのか?


330:デフォルトの名無しさん
08/12/02 22:40:31
どういう用途において?

331:デフォルトの名無しさん
08/12/03 02:00:48
PILはaviファイルの読み込みする方法はみつけたけど
加工して書き込みできなかった

pygameが読み込みも加工も新規作成もできる


332:デフォルトの名無しさん
08/12/03 14:21:04
クラス変数についてです。
class foo(object): CON = 'const'
print foo.CON # print CON としたい

例えば上のprint文で、いちいち"foo."を書くのが面倒です。
importっぽいことをやって、"foo."を省略できるように
させる方法はあるのでしょうか?


333:デフォルトの名無しさん
08/12/03 14:53:10
研究室の学生の人数全分のmatlab買えないので
pythonに切り替えた

はたしてこの選択は間違っていなかったのか

334:デフォルトの名無しさん
08/12/03 15:10:02
カローラと自転車を比べてもしょうがないな

335:デフォルトの名無しさん
08/12/03 16:25:36
>333
python というより numpy, scipy の話って感じかな

sage ってのもなんか似た臭いなんだけどどういう位置づけなのかな?
scipy のさらに上位のまとめライブラリ?


ただ matlab から"乗り換え" というのなら普通は
scilab とか octave とかが思い浮かぶけど

336:デフォルトの名無しさん
08/12/03 16:41:24
>>333
俺は windows用の matlab なら持ってるけど、俺がメインでつかう
linux 用の matlab はもってないから、完全に matlablib に乗り換えた。
(URLリンク(en.wikipedia.org))

matlab はソフトウェアには組込めないけど、matlablibは
簡単にインテグレーションできるので、移行してよかった。
てか、matlablib を見つけれてよかったとおもってる。

お勧めするよ。

337:デフォルトの名無しさん
08/12/03 16:45:21
matplotlib の話なのか、
おれが知らない matlablib の話なのか
はっきりしてくれ

338:デフォルトの名無しさん
08/12/03 16:48:23
>>337
ごめん、matlablib は自分用語で、公式にはmatplotlib。

339:デフォルトの名無しさん
08/12/03 20:20:50
>>333 pythonに切り替えた
  はたしてこの選択は間違っていなかったのか

Matlab は揃いすぎ。理屈が解らなくても、マウス・クリックだけでフィルタ設計ができ
てしまう。Python ならば、学生が理論を理解できていなかったら結果を出せない。学生
用ならば python のほうが良いと思う。


>>335 ただ matlab から"乗り換え" というのなら普通は
  scilab とか octave とかが思い浮かぶけど

Python 使いならば matlab から scipy に乗り換えてもおかしくない。sympy など、他の
モジュールとの連携させる意味では python のほうが matlab より扱いやすい。もう
matlab は言語としては古臭くなっていると思う。

Matlab の優位性は、matlab 言語での膨大な蓄積とドキュメントの豊富さだと思う。


340:デフォルトの名無しさん
08/12/03 22:08:10
>>332
class foo(object): CON = 'const'
CON = foo.CON
print CON

どうよ?

341:デフォルトの名無しさん
08/12/04 01:25:08
>332
import foo.CON as CON


342:デフォルトの名無しさん
08/12/04 01:36:37
すみません、12文字以内でお願いしますです。

343:デフォルトの名無しさん
08/12/04 02:45:06
file1
--------
class foo(object): CON = 'const'
--------
file2
--------
from file1 import foo.CON as CON
print CON
--------

344:デフォルトの名無しさん
08/12/04 05:42:06
matlabが今のlapackみたいな位置づけになるのも遠くないのか

345:デフォルトの名無しさん
08/12/04 09:09:15
話のネタっす

ナイトツアー問題
URLリンク(slashdot.jp)


346:デフォルトの名無しさん
08/12/04 09:56:16
shutil.move()
ってめっさ遅くないですか?
ローカルにある2MBくらいのファイルを移動するのに0.4秒から1秒かかったんですけど
流体の計算より時間かかるってどんだけ

347:デフォルトの名無しさん
08/12/04 10:48:53
OSやドライブorディレクトリのマウント状況によるだろう

348:デフォルトの名無しさん
08/12/04 11:05:44
>>346
時間がかかってるんなら、それはクロスデバイスな移動を行おうとしたからで、
実際にはコピーが走ってるんだろ

コピーはshutil.copyfileobj()で行われるはずだが
デフォルトでは16KB単位(デフォルト引数でlength=16*1024となっている)
のようだから、ddでも使ってその環境での最適なバッファ長を確認したうえで、
shutil.copyfileobj.func_defaultsを書き換えてみたら

349:デフォルトの名無しさん
08/12/04 11:08:41
言わずもがなだが、念のため
キャッシュに一旦入ってしまうとコピーは一瞬で終わるし
コピーの性能を評価する時には色々気をつけなければならないことは沢山あるぞ

勿論同一デバイス上でのrenameでいいのなら、それに越したことは無い

350:デフォルトの名無しさん
08/12/04 11:42:52
3.0きたな。

351:346
08/12/04 11:43:58
いちおスペックは
XPsp2 core2 Cドラ 空き100ギガ以上

とりあえずファイルの操作はpopenでシェル呼んでやったほうが速いですか?

popen2.popen4('move '+ファイルパス+' '+ディレクトリパス+' /y')

でいけますか?

352:332
08/12/04 12:02:47
>>340 >>341 >>343
お返事有難うございました。
するとなると、下記のような場合で foo.CONX を一気に CONX と
書けるようにするのは難しいのでしょうか?
class foo(object):
 CON1 = 'const1'
 CON2 = 'const2'
 # 以下CON3などたくさん


353:デフォルトの名無しさん
08/12/04 12:04:09
>>351
よくわからんな
Cドライブ→Cドライブの移動で、そんなに時間かかってんの?

354:デフォルトの名無しさん
08/12/04 12:21:56
3.0きたけど様子見。
他のライブラリーが対応してないから

355:デフォルトの名無しさん
08/12/04 12:24:11
まあクオリティ的には Ruby 1.9 より断然上だよな> Python 3.0
そういえば、 Perl 6 という vaporware もありました。

356:デフォルトの名無しさん
08/12/04 12:30:13
まだ2.6にも移行してねえんだが……

357:デフォルトの名無しさん
08/12/04 12:41:44
>>353
CからCです。
いくらなんでも遅すぎですよね。


358:デフォルトの名無しさん
08/12/04 12:45:06
>>352
file1
--------
class foo(object):
 CON = [('const%d' % n) for n in xrange(1000)]
--------
file2
--------
from file1 import foo.CON as CON
for n in len(CON):
print 'CON%d = %s' % (n, CON[n])
--------


359:デフォルトの名無しさん
08/12/04 12:47:22
>>357
早めにディスクのバックアップ取っとけw


360:デフォルトの名無しさん
08/12/04 13:51:33
sage使ってる人います?
numpy単独よりも便利なのかな

361:デフォルトの名無しさん
08/12/04 14:13:38
pythonのコードをdllや.soにする方法ってあるのかな

362:デフォルトの名無しさん
08/12/04 14:17:33
3.0のWhat's Newは短いなぁ

363:デフォルトの名無しさん
08/12/04 14:21:57
>>362
変更点は全て列挙してあると思うけど、例を載せてほしいってこと?


364:デフォルトの名無しさん
08/12/04 15:05:48
2.6に多くの機能が入ったからその分短くなったね

365:デフォルトの名無しさん
08/12/04 15:43:10
そういう問題なのか???

ありすぎて書けない… わけじゃなく段差の分結果的に
"what's new" の項目数は少なくなったって感じ?

366:デフォルトの名無しさん
08/12/04 15:44:05
>>365
いやいや、十分長いがなw
参考文献へのリンクも含めて読んでみろよ。


367:736
08/12/04 15:59:14
>>359
ちなみに正常な環境だと shutil.move()の実行速度って何秒くらいですか?
テスト条件はできれば同じくらいの環境で

368:デフォルトの名無しさん
08/12/04 16:16:05
shutil.move("C:\test.txt", "C:\Test")みたいにdstにディレクトリを指定すると
実装のos.renameでOSErrorが発生してcopy2の方が呼ばれてるから遅くなってるのかな?
shutil.move("C:\test.txt", "C:\Test\test.txt")みたいにファイル名を追加するか
os.renameを直で使ってみたら?

369:368
08/12/04 16:17:10
↑のはWindowsでの話。他のOSは分からない

370: 株価【52】
08/12/04 16:29:59


371:デフォルトの名無しさん
08/12/04 17:37:20
>367
0秒

372:デフォルトの名無しさん
08/12/04 19:02:54
具体的にはどの段階で3.0にいこうすればいいのかね?

373:デフォルトの名無しさん
08/12/04 19:35:22
>>372
お前の使ってるライブラリが対応したときだろ。

374:デフォルトの名無しさん
08/12/04 19:59:37
まだ 3.0 リリースせずにユーザーがもうちょっと 2.6 に慣れてから
リリースすればよかったような気がする。

でも、3.0は長い移行期間が必要とされるから、逆に早めにリリース
しておきたかったんだろうね。

375:デフォルトの名無しさん
08/12/04 20:17:04
>>352
... class a:
... CONST1=1
... CONST2=2
... for x in dir(a):
... if x.startswith("CONST"):
... exec(x + "=" + "a." +x)
... print CONST1

どうよ?

376:375
08/12/04 20:18:06
インデントがめちゃめちゃだ。
ごめんよ。

377:デフォルトの名無しさん
08/12/04 20:57:18
printのカッコが地味に面倒だな。
こっちの方が言語的にいいのは、頭では理解してんだけどさ。
いままでの癖がなかなか抜けなくて、ぱいそんたんに怒られてばっかりだ。

378:デフォルトの名無しさん
08/12/04 21:26:41
3.0が出たので入れてみた(Vista)

早速起動した。
> help()
打ってみた。動く。
そこで出た文章に従って
> modules spam
打ってみた。

エラー出た。
uft-8 ってエンコーディングが見つからないって。
・・・・あたりまえじゃああああ
どこが間違ってるのかよく分からんです。
Python30のディレクトリ下をgrepして出てくるのは
Lib/test/bad_encoding.py だけ。これは想定通りだろうが・・・

379:デフォルトの名無しさん
08/12/04 21:35:52
・・・もしかしてLib/testはインストール後に
除去するのが正しい使い方?
別んとこによけておいたら、↑も通った。

380:デフォルトの名無しさん
08/12/04 22:38:47
print("a%s%s" % ('b', 'c'))

なんかキモイな…

381:デフォルトの名無しさん
08/12/04 22:42:12
Py3kはユニコード指定しなくていいのが嬉しい。
これでフレームワークが対応してくれれば・・・。

382:デフォルトの名無しさん
08/12/04 22:52:02
つーか2.5とかでも別に

def printf(fmt, *args): print fmt % args,
def fprintf(f, fmt, *args): print >>f, fmt % args,

とか定義すりゃ
printf("a%s%s\n", 'b', 'c')
とか書けるわなあ

print()関数は、%とカッコがC風のprintf()より冗長に見えてしまうね

383:デフォルトの名無しさん
08/12/04 23:03:10
setuptoolもまだ対応してないのかな?

384:デフォルトの名無しさん
08/12/04 23:06:11
3.0わしょーい

385:デフォルトの名無しさん
08/12/05 00:17:30
>>380
boost::format
みたいだ

386:デフォルトの名無しさん
08/12/05 00:28:39
print("a{0}{1}".format('b', 'c'))
print("a", 'b', 'c', sep="")

387:デフォルトの名無しさん
08/12/05 00:32:32
>>386
それもキモいな
あまり意味の感じられない多様性

Perlみたい

388:デフォルトの名無しさん
08/12/05 00:44:15
string template は

389:デフォルトの名無しさん
08/12/05 00:53:59
print文なんて一発プログラムでしか使わん。
ちょっと込み入った規模ならファイルオブジェクトにwriteするか
loggingを使ってる。

潔癖症にかかってる人は
変える必要など無い所まで変えやがるから
迷惑この上ない。


390:デフォルトの名無しさん
08/12/05 01:03:49
一貫性に拘りすぎるのはバカみたいなことを
Pythonの中の人言ってなかったっけか

391:デフォルトの名無しさん
08/12/05 01:06:36
>>390
それは本当にそう思うけど
print()関数は、後方互換性潰してまで導入したのがこれか、とは思う

392:デフォルトの名無しさん
08/12/05 01:07:24
printは最初っからキモイ

393:デフォルトの名無しさん
08/12/05 01:09:51
>>392
全くだw

394:デフォルトの名無しさん
08/12/05 01:12:03
自演オワタ

395:デフォルトの名無しさん
08/12/05 01:15:56
単要素のタプルもキモイ

396:デフォルトの名無しさん
08/12/05 01:21:54
>>389
じゃぁお前はprintの変更の影響受けて無いじゃん。

Python開発者は潔癖症なんかじゃないよ。
print文の変更も議論の上だよ。 print文でファイルに出力する方法とか、最後に改行しない
方法とか、その為だけに構文を増やしていたのを、普通の関数呼び出しにして柔軟に
使えるようになった。

数タイプを削減するためだけに構文増やしまくってたprint文がキモ過ぎただけで、
print関数は素直で自然な姿。

397:デフォルトの名無しさん
08/12/05 02:15:03
後方互換性潰してまで導入したのがこれか

398: 
08/12/05 02:22:59
それが何か?

399:デフォルトの名無しさん
08/12/05 04:52:48
Cとの互換性を重視して文法がカオスになってるC++を見てると、
どこかで切り捨ては必要だなって思う。

400:デフォルトの名無しさん
08/12/05 09:11:27
printの構文くらいしか噛みつくとこないんですね

401:デフォルトの名無しさん
08/12/05 10:00:42
デバッグプリントしようとしてエラー吐いたときのイラつきは異常

402:デフォルトの名無しさん
08/12/05 10:32:16
>>400
printの構文くらいしか噛みつくとこないということにする以外に噛み付く方法無いんですね

403:デフォルトの名無しさん
08/12/05 10:41:21
print以外に互換ない所ってどこ?

404:デフォルトの名無しさん
08/12/05 10:44:28
そもそも、printの構文なんて存在しなくなったというのが正しい。
printが関数になって、関数の構文で呼び出せるようになり、
Pythonの構文がいっそうシンプルになった。

405:デフォルトの名無しさん
08/12/05 10:46:27
>>400
ぶっちゃけPython3.0の新機能なんざ、後方互換性の破壊による
二重保守や移行の手間に見合うほどのもんじゃないよ、どれもこれも

Python3.0のほうがより良い仕様だということは認めるが、
別に言語仕様だの性能だのの明白な強化に繋がる仕様じゃないし
単なる切り落としも多い
例えば、reduce()がbuiltinから消えて喜ぶ奴がいるか?
はっきりしているのは、それでスクリプトを書き換える必要が生じる
ユーザだけは沢山いるということだ

周辺ライブラリとか作ってる人たち、今後は二重保守やテストを強いられることに
なんのかね
当たり前のようにC APIも仕様変わってんだろ
ぞっとするぜ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5092日前に更新/206 KB
担当:undef