くだすれPython(超初心者用) その16at TECH
くだすれPython(超初心者用) その16 - 暇つぶし2ch100:デフォルトの名無しさん
13/01/31 21:03:12.05
別プロセスとして呼び出すなら subprocess

101:デフォルトの名無しさん
13/01/31 21:16:35.51
Common Lispで動くCLPythonなんつーもんもあるらしい
URLリンク(common-lisp.net)

102:デフォルトの名無しさん
13/01/31 21:43:42.35
((Pythonで) 書く ((さらに良い) Lisp) インタプリタ)
URLリンク(www.aoky.net)

103:デフォルトの名無しさん
13/01/31 22:38:59.17
すいません、
こういうリストを
a=[1,2,3,4,5]
こうしたいのですが、
a=['1','2','3','4','5']
どうしても
a= '[1,2,3,4,5]'
となってしまいます。
どうすれば
a=['1','2','3','4','5']
が得られるか教えてください。
よろしくお願いします。

104:デフォルトの名無しさん
13/01/31 22:47:30.71
[str(x) for x in a]

105:デフォルトの名無しさん
13/01/31 22:49:38.24
リスト内包表記でググれば詳しく書いてある

106:デフォルトの名無しさん
13/01/31 22:59:33.23
>>104
ありがとうございました!!

107:デフォルトの名無しさん
13/01/31 23:19:00.57
>>105
今、それを調べてました。やっと使い方がわかりました。ありがとうございます。

108:デフォルトの名無しさん
13/02/01 01:58:54.76
map(str, a)

109:デフォルトの名無しさん
13/02/01 02:20:51.93
ipythonの質問ですが、以下のようなfor文を履歴から再実行してみるとエラーになります。
何が問題なんでしょうか?

In [1]: for i in range(3) :
...: print i
...:
0
1
2

In [2]: for i in range(3) :
print i
------> print(i)
------------------------------------------------------------
IndentationError: expected an indented block (<ipython console>, line 2)


まったく同じ質問が以下のスレにあったのですが、スルーされていました。

Pythonのお勉強 Part35
URLリンク(www.logsoku.com)

110:デフォルトの名無しさん
13/02/01 03:13:40.59
二行目のprint i のインデントが無くなってるのが原因
Pythonはブロックの中身が空だとエラーが出る

111:デフォルトの名無しさん
13/02/01 07:32:39.48
元気ですか~
みなさんプログラミングがんばってますか~
みんなのみんなのパイチンくんですよ~

112:デフォルトの名無しさん
13/02/01 10:00:33.92
pass

113:デフォルトの名無しさん
13/02/01 13:38:22.26
99,100
できるのですね、ありがとうございます。

114:デフォルトの名無しさん
13/02/02 00:08:57.65
>>102 さんのリンクに感謝・感激です。

Emacs Lisp を使わねばならなくなり、といって今さら Lisp の勉強なんぞしたくないと
思っていました。

でも この記事(読んだのは lispy.htm ですが)を読むことで Lisp
のエッセンスを三時間で理解できたと思います。Lisp を好きになっちゃいました。

115:デフォルトの名無しさん
13/02/02 08:00:42.81
Pythonで普通にopen(ファイル名,'w')して
文字列をwriteした時、使用される文字コードは
どこの設定で決まるのでしょうか。
WindowsXPのコマンドラインから実行する前提です。

116:デフォルトの名無しさん
13/02/02 08:01:00.84
list =[0, 1, 2, 3, 4, 5]
として
list[4]=0
とすると
list=[0, 1, 2, 3, 0, 5]
とリスト内の要素を指定出来ますが、
逆に4以外を操作したいって場合はうまい書き方はありませんか?
つまり、「hogehogeでない要素」という否定の要素の指定をお願いします。

117:デフォルトの名無しさん
13/02/02 08:37:38.27
これぐらいじゃない?

>>> L = [0, 1, 2, 3, 4, 5]
>>> L1 = []
>>> for i in range(len(L)):
... if L[i] != 4:
... L1.append(None)
... else:
... L1.append(L[i])
...
>>> L1
[None, None, None, None, 4, None]

118:デフォルトの名無しさん
13/02/02 08:52:58.99
>116
f = lambda e: 9 if e != 4 else 4
L = [ 3, 8, 4, 0, 7 ]
R = [ f(e) for e in L ]
print R

119:デフォルトの名無しさん
13/02/02 10:17:56.45
Python 2.x なら、
普通にopen(ファイル名,'w')して文字列をwriteした時、
使用される文字コードはソースファイルのエンコードで決まる。

# -*- coding: utf-8 -*-
として、
open('hoge.txt', 'w').write('あいう')
ならutf-8で書かれるし、
open('hoge.txt', 'w').write('あいう'.decode('utf-8').encode('cp932'))
ならcp932で書かれる。

codecs使わない限りバイナリには影響与えない。

120:デフォルトの名無しさん
13/02/02 10:19:33.26
ああ、'ファイル名'の方の文字コードの話なら、
ちょっと注意が必要。
argvに入ってくる文字列のエンコードとかあるし。

121:デフォルトの名無しさん
13/02/02 11:43:34.91
>>118
いや、4って要素じゃなくて添字のことでしょ
>>> L = [0, 1, 2, 3, 4, 5]
>>> L = [0 if i!=4 else j for i,j in enumerate(L)]
>>> L
[0, 0, 0, 0, 4, 0]

122:デフォルトの名無しさん
13/02/02 12:04:34.89
> つまり、「hogehogeでない要素」という否定の要素の指定をお願いします。
                 ^^^^         ^^^^

123:デフォルトの名無しさん
13/02/02 12:09:57.83
>>122
L[4]=0
で4という要素にはアクセスできない。質問者が言葉を間違えてるだけ

124:デフォルトの名無しさん
13/02/02 12:22:18.22
>>116
l = [0,1,2,3,4,5]
t = l.pop(4)
for i in range(len(l)):
  l[i] = 2
l[4:1] = [t]
print l

[2, 2, 2, 2, 4, 2]

125:デフォルトの名無しさん
13/02/02 12:53:26.99
import numpy as np
l = np.array([0,1,2,3,4,5])
for i in np.argwhere(l!=4):
 l[i] = 99
print l

126:デフォルトの名無しさん
13/02/02 12:56:58.25
arrayはリストとして使うときはキャストしなきゃいけないし
用途に合ってないのに使うのは微妙

127:デフォルトの名無しさん
13/02/02 13:00:42.80
しかも、また要素で判定してて笑える

128:デフォルトの名無しさん
13/02/02 13:13:49.23
添え字対応だとこうだけど。
>>> L = [0, 1, 2, 3, 4, 5]
>>> L2 = []
>>> for i in range(len(L)):
... if i != 4:
... L2.append(None)
... else:
... L2.append(L[i])
...
>>> L2
[None, None, None, None, 4, None]

LをL3として、
L3 = [100, 101, 102, 103, 104, 105]
とした時に、どういう事をしたくてどういう結果が欲しかったのか、
質問し直してくれない?>>116

129:デフォルトの名無しさん
13/02/02 13:17:05.54
添字 [0 if i!=4 else j for i,j in enumerate(L)]
要素 [0 if i!=4 else i for i in L]

これだけの話

130:デフォルトの名無しさん
13/02/02 13:27:52.84
これでよくね
l = [0,1,2,3,4,5]
t = range(len(l))
t.pop(4)
for i in t:
 l[i] = 0

131:デフォルトの名無しさん
13/02/02 13:41:23.65
>>117>>128
なんでリスト内包表記を使わないの?

>リストに要素を append() する場合、インタプリタは「リストから append 属性を
>取り出してそれを関数として呼び出す」という処理をしなければなりません。
> それに対して、リスト内包表記を使うと、インタプリタに直接「リストに要素を
>追加する」という処理をさせることができます。インタプリタが解釈する命令数
>が減る、属性の取り出しが不要になる、関数呼び出しが不要になる、という3つ
>の理由で、リスト内包表記を使うと速くなります。
URLリンク(dsas.blog.klab.org)

132:デフォルトの名無しさん
13/02/02 13:55:47.45
そもそも、質問者は L[4]=0 と逆の操作をやりたいのだから
for i in range(len(L)): ~ でやるなら代入とスキップでいいだろ
なんで新たにリストを作って毎度関数を呼び出すのか

133:デフォルトの名無しさん
13/02/02 14:09:36.49
>>131
1つ目、内包表記の中で条件分岐とか分かりづらいと思った。
2つ目、質問者>>116の質問内容からして、内包表記は難しいと思った。

以下のように各要素を100倍するだけなら内包表記を説明したかも。
>>> L4 = [x * 100 for x in L]
>>> L4
[0, 100, 200, 300, 400, 500]
>>> ML5 = map(lambda x: x * 100, L)
>>> ML5
<map object at 0xb70f766c>
>>> tuple(ML5)
(0, 100, 200, 300, 400, 500)
>>> tuple(ML5)
()

3つ目、実行速度とか効率とかよりも以前の問題で>>116は躓いてるでしょ。
質問者がどこで躓いているのか把握した上で答えようよ。

> 逆に4以外を操作したいって場合はうまい書き方はありませんか?
>つまり、「hogehogeでない要素」という否定の要素の指定をお願いします。
って聞いてきた人に「内容表記ってのがあってー」とかって言うと、
質問者は混乱すると思うよ。頭の悪い回答者だと思う。

134:デフォルトの名無しさん
13/02/02 14:22:07.62
>>133
内包表記というのがあってーじゃなくて
こういうときはこうすると覚えればいいだけ

それにリスト内包表記や三項演算子のネストは止めた方が良いが
今回それぞれ一個だからわかりづらくはない
pythonのリスト内包表記や三項演算子はfor文やif文と直交性があるから
mapやfilterやlambdaを組み合わせるより遥かに直感的に書ける

まるでC言語のようなコードをPythonで書くのは馬鹿らしいことだよ
Pythonではどう書くのか覚えて慣れたほうがいい

135:デフォルトの名無しさん
13/02/02 14:59:20.33
今回みたいなのは無理に答えないで
質問のどこが悪いのか指摘したうえで再提出要求でいいよ
でないとプログラマがするような質問の仕方が身につかない

136:デフォルトの名無しさん
13/02/02 15:16:12.99
だから、>>128の下から4行ってことでしょ?

137:デフォルトの名無しさん
13/02/02 15:38:55.89
いまいち「直交性」の意味が分からない

138:デフォルトの名無しさん
13/02/02 15:50:04.55
独立している、無関係である、お互いの領分が重ならない、
という時に使う言葉ではあるが

139:デフォルトの名無しさん
13/02/02 15:54:57.27
シンタックスで言えば、同じような操作で、同じような結果が得られるときに使う言葉だよ

140:デフォルトの名無しさん
13/02/02 17:10:03.62
「直交性」ていわれると、目が点になるね

141:デフォルトの名無しさん
13/02/02 17:14:15.13
> What does Python have that PHP doesn't?
> - very clear, concise, and orthogonal syntax
PythonにあってPHPにないものは?
・簡潔明瞭で、直交性の高いシンタックス
URLリンク(wiki.python.org) (公式)

> its syntax and toolset are remarkably coherent. Moreover,like math, its design is orthogonal
URLリンク(books.google.co.jp) (オライリー)

142:デフォルトの名無しさん
13/02/02 17:18:11.31
元の意味は>>138だろ?そういう文脈では分かるんだけど
応用的な使い方されると、もう分からない。
>>139とかほとんど真逆の事言われてるような気すらする…

143:デフォルトの名無しさん
13/02/02 17:18:32.04
直行って相反するイメージがあるんだけど、
なんで直行性でそういう意味になるんだろう

144:デフォルトの名無しさん
13/02/02 17:21:47.72
数学で直交性と言えば線形独立性の事であって
いかにベクトルが同じ方向を向かないかを意味するのに、
同じ方法で同じ結果が得られるという意味に使おうという
ガイジンの発想がよく分からん

145:デフォルトの名無しさん
13/02/02 17:38:59.87
ある命令で、その意図以外のことが起こらないことを直交と言って
for はイテラブル・オブジェクトを辿るし、if は条件を判定するってだけ
これで条件演算子が e1 ? e2:e3 だったらシンタックスのコンパクトさが損なわれる

全部個人的な評価だけど

146:デフォルトの名無しさん
13/02/02 17:55:03.33
forにelse節があるのが直交ねえ

147:デフォルトの名無しさん
13/02/02 18:08:08.99
リスト内包表記に内包されるのはfor節とif節であってfor文ではない
あとfor文やwhile文のelse節を使ったコードは寡聞にして見たことがない

148:デフォルトの名無しさん
13/02/02 18:41:17.44

X = mx
Y = my
こうなってたら、Xは、xによるが、yによらない。

149:デフォルトの名無しさん
13/02/02 18:43:22.60
Pythonが「誰が書いても同じようなコードになる」と謳われるのは、
ある処理を実現する複数の従属な記述がないから。

本当はいくらでも違う書き方が出来るけど、まあ独立性についてはそんな感じ。でも一貫性と言ったほうが分かりやすい。

150:デフォルトの名無しさん
13/02/02 18:47:47.14
いや、従属な処理を実現する複数の記述がないから。か

151:デフォルトの名無しさん
13/02/02 19:40:22.93
>>138,142だが
長々とスレ違いな話題ですまん。

皆の意見参考にして自分なりに考えてみた。
こういう解釈でいいんだろうか?

直交性が高いシンタックス
= シンタックスと文脈の直交性が高い
(キーワードが文脈と独立して解釈出来る)
= どんな文脈でも forはiteration、ifは条件分岐を意味する
かつ、iteration、条件分岐を意味する他のキーワードはない
= >>134、138 の意味

152:151
13/02/02 19:43:29.43
ごめん、アンカ間違った。
俺は>>137,142だ

で最後の行は
>>134,139

153:116
13/02/02 21:33:57.37
添え字とリスト内の要素と紛らわしい質問をして大変申し訳ありませんでした。
そして、丁寧に回答してくださった方々ありがとうございました。
添え字で否定の指定したかったのですが、ここまで大変参考になりました。
リスト内包表記は視覚的にもとても見やすいので使いこなせるよう頑張ります。

154:デフォルトの名無しさん
13/02/02 21:45:23.81
こうやってまた一人、蛇の道を歩み始めたのであった。

155:デフォルトの名無しさん
13/02/02 23:07:18.96
>>142
>>139 の説明が悪いんだろ。

(異なる対象に対して、)

同じような操作で、同じような結果が得られるとき

(は、対象と操作の直交性が高い (つまり、対象と操作の独立性が高い))

>>145 とかは、俺も意味がわからん。
直交って言ってるんだから、○○と△△ のようにベクトルは2つ必要だと思うが。

156:デフォルトの名無しさん
13/02/02 23:16:59.40
>>155
ベクトルは一切関係ないです。一切。

157:デフォルトの名無しさん
13/02/02 23:19:24.88
numpyのndarrayを複数の変数に同時に代入できませんか?

img = cv2.imread("hoge.jpg", 1)
b = g = r = img.copy()

OpenCVで画像を読み込んだのでimgの中身はnumpyの3次元arrayなのですが
これを普通の文字列や数値と同じノリで代入してもr,g,bそれぞれ全部0のarrayが代入されてしまいます。
もちろんそれぞれ別箇に代入すれば解決しましたけど、なるべく同時に代入するよう記述したいです。
うまい記述方法はありませんか?

158:デフォルトの名無しさん
13/02/02 23:24:20.22
r, g, b = [1, 2, 3]

159:デフォルトの名無しさん
13/02/02 23:39:51.06
>>157
まずもって全て0の配列が代入される意味は分からんが、それ以前に
そんなことしたら r, g, b は全部同じオブジェクトを指すことになるのだが、それで良いのか
つまり r の要素を変更したら g, b も同じく変更される

160:デフォルトの名無しさん
13/02/02 23:45:58.12
それぞれが img のコピーということなら、こうだけど
b, c, d = [img.copy() for i in range(3)]

161:デフォルトの名無しさん
13/02/02 23:46:34.26
>>159
やはりそれが問題なのでしょうか?
すべて値渡しにするためには
b, g, r = img.copy(), img.copy(), img.copy()
しかないのでしょうか?
レスありがとうございました。

162:デフォルトの名無しさん
13/02/02 23:51:50.12
>>160
ありがとうございます
これでちゃんと通りました
リスト内包表記は便利ですね

163:デフォルトの名無しさん
13/02/03 23:44:01.29
配列が大きすぎて、メモリが足りないという以下のようなエラーが出ます。
ValueError: array is too big.

これにうまく対処する方法はありますか?
(メモリでなく一時的にHDDに書き出しながら計算するとか?)

たとえば、以下のような計算をしたいです。

import numpy as np
N=1000000
A = np.random.rand(N,N)
B = np.random.rand(N,N)
C = np.tensordot(A,B,([1,0],[0,1]))
print C

164:デフォルトの名無しさん
13/02/04 00:08:24.04
こええ!

165:デフォルトの名無しさん
13/02/04 00:17:05.17
実際になにをやりたいかによるけど
A,Bをジェネレータにできないようなら
変に工夫するよりmmapつかって富豪プログラミングするかな。
numpy.memmapとか。

166:デフォルトの名無しさん
13/02/05 00:53:58.19
多重起動防止でこのサイトのMutexを使った方法をやろうと思ったのですが
URLリンク(www.ops.dti.ne.jp)
mutex モジュールは Python 3.0 で削除されました。 との事でした。
URLリンク(docs.python.jp)

Python 3で多重起動防止をやるにはどうしたらよいでしょうか

167:デフォルトの名無しさん
13/02/05 06:29:12.53
排他制御ってことですよね この辺は参考にならないでしょうか
URLリンク(d.hatena.ne.jp)
URLリンク(www.phactory.jp)

168:デフォルトの名無しさん
13/02/05 16:08:39.88
プロセス間の排他制御が必要なので、標準ライブラリのthreadingやmutexは、その用途には使えないと思う。

排他制御の実現方法は幾つかあるけど、多分、各環境毎に実装方法が異なるので
Pythonで~というより、環境が提供してる方法を調べた方がいいかもしれない。
(例えば、wxだったらwx.SingleInstanceChecker みたいなのが用意されてたりする)

169:デフォルトの名無しさん
13/02/05 16:32:33.17
その手はあんま移植性高くないんだよな

flock()がなぜか無駄に有名だけど、flock()はPosix標準ですらないので
少なくともPosix標準で定義されていて高機能なfcntl系のlockf()を使った方がいいよ

あと紛らわしいのがmutexってPosix系とWindowsで意味が違っていて
pthreadだとスレッド同期オブジェクトだがWindowsではプロセス間排他に使える
グローバルなカーネルオブジェクト
なのでWindowsならばmutexを使うのはこの場合一つの妥当な解だけど
ctypesとかwin32専用のモジュールを使う必要があるはず

170:デフォルトの名無しさん
13/02/05 16:35:22.63
ついでに調べてみた、
multiprocessingの方のSemaphoreは、内部で名前付きセマフォを使ってるんだけど、
引数で名前を指定する方法がないので、惜しいけど、多重起動防止には使えない。

ちなみに、ロック・ファイル方式は、システムがクラッシュした時、
ロックが残ってしまった場合を考慮すると運用面で難有りです。

171:デフォルトの名無しさん
13/02/05 16:49:07.46
>>166
URLリンク(pypi.python.org)
Prohibit to run two process/instance at same time.
to use a transaction behavior via sqlite3.

頑張って作ってみたよ。どうぞ。

172:デフォルトの名無しさん
13/02/05 20:29:37.92
こんなにわかりやすい自演に遭遇したのは久しぶりだ

173:デフォルトの名無しさん
13/02/06 00:15:59.16
デスクトップに置いた、メモ帳で作成した英文テキストファイルを
f = open(ファイルパス、r、UTF-8)で読み込ませたかったんですが、
'unicodeescape' codec can't decode ~
というエラーが出てしまい読み込みません。どうしたらいいのでしょうか?

174:デフォルトの名無しさん
13/02/06 00:37:22.92
>173
たぶんコレだろ
URLリンク(stackoverflow.com)

175:デフォルトの名無しさん
13/02/06 00:41:41.81
>>173
まずは、環境を明記し実際のコードとエラーメッセージを省略せずに貼り付けて

よくあるケースだと、メモ帳でutf-8のファイル作るとBOMが付くのが原因
Pythonで BOM付き utf8 読むときは "utf8-sig" を指定する。

176:173
13/02/06 01:01:39.34
pythonのインタラクティブシェルです
windows7 home premiumにpythonをインストールして使っています

>>> f = open("C:\Users\kenta\Desktop\english2.txt" , "r" , encoding = "utf-8")
File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in positio
n 2-4: truncated \UXXXXXXXX escape

このように出ます。
utf-8をutf8-sigにしましたが同じでした。
>>173様のurlを見ましたが、パスの頭が\uなのがいけないということでしょうか?

177:デフォルトの名無しさん
13/02/06 02:12:04.33
>>176
俺の環境では、パスの\を/にしたら行けた

178:173
13/02/06 02:16:20.34
>>177
解決しました!ありがとうございます!
しかしなぜバックスラッシュを入れるべきところでスラッシュが許可されるのでしょう?
他いろんな箇所でもバックスラッシュとスラッシュが入れ替わり可能なんでしょうか
御存じの方教えていただけませんか

179:デフォルトの名無しさん
13/02/06 02:17:00.46
エスケープシーケンスに引っかかってたんだな
\を\\にしても行ける

180:デフォルトの名無しさん
13/02/06 02:37:35.94
raw文字列を使おう

181:デフォルトの名無しさん
13/02/06 09:12:59.85
>>178
パス名として扱われる文字列中ではディレクトリ階層の区切り文字として
↓の2つが使えると考えればおk
・python標準の区切り文字 /
・os標準の区切り文字 (Windowsなら)\

\は扱いが面倒くさいし移植性も低いから素直に/を使うのがいいかと

>>180
os.listdir(r'C:\Users\ore\')
SyntaxError: (ry
このように出ま(ry
ってなったり\区切りは何かと面倒くさいよね

182:デフォルトの名無しさん
13/02/06 09:47:32.41
raw文字列でも引用符はエスケープされるんだな。
知らなかった。

183:デフォルトの名無しさん
13/02/06 10:02:48.29
激しく概出ネタなのに
ここには書かれてないよね
URLリンク(python.rdy.jp)

184:デフォルトの名無しさん
13/02/06 11:30:28.13
ナマ文字列を囲んでる文字('")をエスケープできなかったら困るからね

185:173
13/02/06 12:25:29.76
助かりました。ありがとうございました。
区切り文字が複数ある場合があるんですね

os.listdir(r'C:\Users\ore\')
だと最後の'がraw文字列になって引用終わりになってないってことですよね?
os.listdir(r'C:\Users\ore\'')でやってみたらできますね…

みなさんありがとうございました^o^

186:デフォルトの名無しさん
13/02/06 12:49:18.07
人の話聞けよタコ

187:デフォルトの名無しさん
13/02/06 13:26:55.51
俺は、os.path module派

>>> import os
>>> os.path.join('c:', 'users', 'ore')
'c:/users/ore
>>> os.path.expanduser('~')
'/home/ore'

移植性が高くって良いじゃないですか。

188:デフォルトの名無しさん
13/02/06 14:21:03.54
os.path 派に +1

windowsでパス区切りに / を使うと、区切り文字が混ざったりする

189:デフォルトの名無しさん
13/02/06 15:26:14.16
手元の自分用スクリプトでしょw

190:デフォルトの名無しさん
13/02/06 17:10:52.16
os.sep派

191:デフォルトの名無しさん
13/02/06 17:59:22.13
>>171 166じゃないけど横レス失礼
起動履歴にもなるのは良いね。使ってみたので幾つかフィードバック

* SQLのコメントは -- (エラーが出た、修正したら動いた)
* 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ
* lock/unlock は with 文に対応すると隠せる
* 起動中のアプリケーションのPIDを知る方法があれば、より良いかもしれない。
 多重起動しない代わりに、シグナル等を送ってウィンドウをアクティブにしたりする等の需要がある

192:デフォルトの名無しさん
13/02/06 19:02:44.94
>>191
> * SQLのコメントは -- (エラーが出た、修正したら動いた)
これは、手元で対応済みです。
ご迷惑お掛けしました。

> * 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ
指摘の点で、ここだけちょっと分からないのですが。

> * lock/unlock は with 文に対応すると隠せる
こちらも、手元で対応済みです。

> * 起動中のアプリケーションのPIDを知る方法があれば、より良いかもしれない。
> 多重起動しない代わりに、シグナル等を送ってウィンドウをアクティブにしたりする等の需要がある
これは対応しようと思っていました。
誰かに言われたら考えよーって思ってました。
早速指摘されたので対応策を考えようと思います。

193:192
13/02/06 19:20:32.97
>>191
> * 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ
分かりましたので修正しました。

ご指摘ありがとうございます。

194:デフォルトの名無しさん
13/02/06 22:19:38.57
わざわざ指摘→改善の自作自演なんかしないで
自分のブログででも宣伝したらいいのに

195:デフォルトの名無しさん
13/02/06 23:57:11.03
>>194
おまえ根性腐ってるな

196:デフォルトの名無しさん
13/02/07 00:00:32.06
↑得意の自演で自分を援護ですねわかります

197:デフォルトの名無しさん
13/02/07 01:11:32.20
可変長のcsvを特定の長さで区切ってリストにするにはどうしたらいいですか?
例えば、こんなcsvを読み込んで3個で1セットにしたいのですが。

1,1,1,2,2,2,3,3,3
5,5,5,6,6,6

line1 = [(1,1,1),(2,2,2),(3,3,3)]
line2 = [(5,5,5),(6,6,6)]

と言った感じで。

198:デフォルトの名無しさん
13/02/07 01:25:41.01
>>171
apiがよくないね

例えばjustme1.py justme2.pyのそれぞれでJustMe.lock()した場合、
(JustMeを)使う側が意図するのは、justme1.py justme2.pyそれぞれのプロセスが
ひとつずつになることだと思うけどそうはならない。
ならばと、JustMe(script_name='justme1') JustMe(script_name='justme2')
とするけどこれもやっぱり上と同じ動作をするんだよね。
script_nameを渡せるならscript_nameだけでロック対象を区別するべきで、
db_pathみたいな本来の目的にはさほど関係ない要素はカプセル化したほうがいいかと。

199:デフォルトの名無しさん
13/02/07 01:29:19.28
>>> a = [1,1,1,2,2,2,3,3,3]
>>> list(zip(*[iter(a)]*3))
[(1,1,1), (2,2,2), (3,3,3)]

端数がある場合は itertoolsの zip_longest で。

そういえば、ちょっと前に挙がった pike だと
配列/数値 の割り算(?) で同様の分割が出来たりしてた。

200:デフォルトの名無しさん
13/02/07 02:02:37.42
>>197
例外処理なし
>>> lines = []
>>> for line in open('test.csv'):
...   linen = eval(line)
...   lines.append([tuple(linen[i*3:(i+1)*3]) for i in range(len(linen)/3)])
...
>>> lines[0]
[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
>>> lines[1]
[(5, 5, 5), (6, 6, 6)]

201:デフォルトの名無しさん
13/02/07 02:06:42.79
ines.append([tuple(linen[i*3:(i+1)*3]) for i in range(len(linen)/3)])

lines.append([linen[i*3:(i+1)*3] for i in range(len(linen)/3)])

202:デフォルトの名無しさん
13/02/07 02:16:02.69
>>199 あまりにも美すぃ
>>200 あまりにもゴリゴリすぃ

203:デフォルトの名無しさん
13/02/07 02:19:37.04
>>199
僕もそういうコーディングできるようになりたいんで
どういう本を読んでその域に達したのかとか
通ってる(た)大学とか
年収とか
彼女の有無とか
教えてくださいm(_ _)m

204:デフォルトの名無しさん
13/02/07 02:20:49.75
>>203
あなたと同じ低学歴童貞ニートです

205:デフォルトの名無しさん
13/02/07 02:23:23.40
>>204
僕が低学歴なのも童貞なのもニートなのもあたってますけど…
そういう冗談はいいのでマジで教えてください
せめて一個目の質問だけでも

206:デフォルトの名無しさん
13/02/07 02:56:33.41
Linuxコミュニティが選ぶ人気オープンソースプロジェクトの年次調査、言語は「Python」、デスクトップは「Slackware」がトップにURLリンク(sourceforge.jp)

207:デフォルトの名無しさん
13/02/07 02:59:06.85
URLリンク(docs.python.org)

208:デフォルトの名無しさん
13/02/07 05:04:41.44
素朴な疑問なのですが、PEP8ってなんで読むのでしょう?
心の中では「ペップエイト」と呼んでいるのですが、正解はピーイーピーエイトあたりでしょうか?
いつか口に出す機会が訪れたときに備えておきたいです。

209:デフォルトの名無しさん
13/02/07 08:10:32.66
>>194
↑これも自演
>>195
↑これも自演
>>196
↑これも自演

210:デフォルトの名無しさん
13/02/07 08:59:21.76
>>206
記念に釣られてみるが
ここ最近の Python の伸びは node.js の影響かもな

211:デフォルトの名無しさん
13/02/07 09:20:46.03
>>208
ペッペイト

212:171=192
13/02/07 09:31:04.17
全部手元のみの修正になります。
お昼頃にはpypiにuploadしたいと思います。

>>198
apiではなく、名前が悪いのでしょう。
db_pathをlock_file_pathに修正しました。
重要な修正になりますが、
公開から48時間経っていませんし、
こっそり修正してもイイカナ。

>>191
> * 起動中のアプリケーションのPIDを知る方法
insert('prelock')をauto commit modeで発行し、
insert('lock')でtransaction immediateを発行するようにしました。
もしも誰かと競合し多重起動になった場合、
自分がinsert('prelock'), insert('lock')を発行した瞬間よりも前に、
誰かがinsert('prelock')を発行していますので、
現状の'prelock'の内容を吐き出すことで、
誰がlock()したのか分かるように出来ました。

ただ、微妙な順序、つまり、ほぼ同時期にprelock, lockを発行する場合を考えると、
A-prelock
B-prelock
C-prelock
A-lock
B-lock => 多重起動を検知するが、最終prelockは、C-prelock!
A-prelock, C-prelockが分かってもどっちがlockしているのか断定出来ない!

一番最後のprelockは誰が現在lock()しているのかを、必ずしも教えてくれません。
ですので、多重起動を検知した場合、過去10件のprelockを表示するようにしました。
さすがに、10人が多重起動云々は考えなくて良いよね、、、

213:デフォルトの名無しさん
13/02/07 09:33:02.59
ねえ、githubじゃなくてもさあ。ツイッターもはてブもやってないの?
臭すぎるよ

214:デフォルトの名無しさん
13/02/07 09:33:44.36
超初心者スレでひたすら自演とかさ。然るべき場所に行く脳みそ持ってないのかね
最悪の開発者だな

215:デフォルトの名無しさん
13/02/07 09:36:39.77
こいつの薄汚いコミットを宇宙全体から排除する方法はないだろうか

216:デフォルトの名無しさん
13/02/07 09:42:46.77
3レスもどこの誤爆?

217:デフォルトの名無しさん
13/02/07 09:43:41.63
お前だよ。二度と書き込むなよ

218:デフォルトの名無しさん
13/02/07 09:48:17.62
ごめん

219:デフォルトの名無しさん
13/02/07 10:03:21.24
>>212-218
もちろん全部自演です

220:デフォルトの名無しさん
13/02/07 10:18:15.25
.
 || ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||
 || ○荒らしは放置が一番キライ。荒らしは常に誰かの反応を待っています。
 || ○重複スレには誘導リンクを貼って放置。ウザイと思ったらそのまま放置。
 || ○放置された荒らしは煽りや自作自演であなたのレスを誘います。
 ||  ノセられてレスしたらその時点であなたの負け。
 || ○反撃は荒らしの滋養にして栄養であり最も喜ぶことです。荒らしにエサを
 ||  与えないで下さい。                  Λ_Λ
 || ○枯死するまで孤独に暴れさせておいて   \ (゚ー゚*) キホン。
 ||  ゴミが溜まったら削除が一番です。       ⊂⊂ |
 ||___ ∧ ∧__∧ ∧__ ∧ ∧_      | ̄ ̄ ̄ ̄|
      (  ∧ ∧__ (   ∧ ∧__(   ∧ ∧     ̄ ̄ ̄
    ~(_(  ∧ ∧_ (  ∧ ∧_ (  ∧ ∧  は~い、先生。
      ~(_(   ,,)~(_(   ,,)~(_(   ,,)
        ~(___ノ  ~(___ノ   ~(___ノ

221:171=192
13/02/07 13:29:14.04
URLリンク(pypi.python.org)
先ほど、version=1.1.0を公開しました。
色々便利にしました。完成したと思っています。

若干荒れてしまったようです。
そもそも作ろうとした切っ掛けは、>>166の需要があると分かったからです。
自分でも欲しいとは思っていたのですが、
自分一人だけなら、起動時に気を配るだけで多重起動に対処できる、
また、os.path.exists()使えば済む話なのに、
作るのも面倒くさいなーと思っていたので作らなかったのでした。

なので、>>171はスレの流れに沿った投稿です。
>>192>>191の意見に答えたモノです。
>>212>>198に答えたモノです。
>>212の下二段は勉強スレに書くべきだったかもしれません。

自分で一から作りましたので、>>166の投稿は、
sqlite3, sqlite3のtransactionの勉強をする良い契機となりました。

222:171=192
13/02/07 13:37:25.04
とまぁ>>166からここまで全部自演なわけだが

223:171=192
13/02/07 13:48:09.90
>>222
そういうの止めてよ。

224:デフォルトの名無しさん
13/02/07 13:55:22.61
コテつけて。

225:171=192 ◆bCJxn8aZG34F
13/02/07 14:01:02.75
せっかく頑張ったのになんか残念です。

226:デフォルトの名無しさん
13/02/07 14:04:43.69
そういうの止めてよ
(そういうの=自作自演&スレ私物化&汚ミット)

227:デフォルトの名無しさん
13/02/07 16:13:49.90
>>166 == >221

228:デフォルトの名無しさん
13/02/07 19:02:43.10
pass

229:デフォルトの名無しさん
13/02/08 01:48:14.28
>>203,205
zip等、関数型プログラミング言語由来の機能を使ったコードを考える時は、
関数型言語 (SchemeやHaskell) でのプログラミングの経験が役に立つ。
Pythonで学ぶなら 公式ドキュメント内の "関数型プログラミング HOWTO" を入門に、参考資料を辿ると良い。

イデオムとして覚えておきたいなら、公式ドキュメント他、PLEAC,PyMOTW,Cookbook等にたくさんレシピがあります。
207のgrouperが199のコードそのものだし。例えば、他の似たような処理

230:デフォルトの名無しさん
13/02/08 01:50:26.71
* 文字列をn文字毎に分割 re.findall(".{1,%d}" % n, text)
* ファイルからnバイトずつ読むイテレータ iter(lambda: stream.read(n), "")

ちなみに、199はイテレータを取れるけど、対象がシーケンス(lenで予め長さが解かる)の場合は
スライスを取るようにした方がループ回数少なく済むので、そちらの方が効率は良いかもしれないです。

>>225
don't mind. 多重起動防止の実装を調べる切っ掛けになったし。参考になったよ。ありがとう

231:デフォルトの名無しさん
13/02/08 02:19:27.01
ひどいな

232:デフォルトの名無しさん
13/02/08 02:21:14.11
クールにかければ効率とかどうでもいいダオr

233:梅どぶろく=171=192 ◆21Da3ggG3M
13/02/08 11:36:07.87
>>230
ありがとうございます。

>>225
は愉快犯です。
多分一連の荒らし。
お前は死ね。

234:デフォルトの名無しさん
13/02/08 13:17:19.14
>>233
そういうことをして何が楽しいのでしょうか?

荒らしに荒らし呼ばわりされるようなことは何もしていません。

235:171=192 ◆UwwhKlilKVPU
13/02/08 13:19:39.75
メール欄にトリップいれてしまったので
トリップ変えます

236:梅なんとか=171=192 ◆hxdjhIaCpI
13/02/08 13:32:39.39
>>235
誰だよ?

あと、自演癖を治したいのでいい病院教えてください。

237:デフォルトの名無しさん
13/02/08 13:43:09.22
>>233
www.google.co.jp/search?q=21Da3ggG3M
安田英幸と鳥かぶってるゾ
^^^^誰?

238:デフォルトの名無しさん
13/02/08 14:04:57.53
つ kohada.2ch.net/test/read.cgi/prog/1253193184/

勤務先企業と裁判 -> 係争中から2chに粘着 -> 職を失う ->
2chでアンチと闘いながら自作自演に勤しむ日々

239:デフォルトの名無しさん
13/02/08 14:50:54.63
糞コテが私物化してるスレは間違いなく糞スレ

240:デフォルトの名無しさん
13/02/08 15:11:17.76
pass

241:デフォルトの名無しさん
13/02/08 16:49:19.23
2月と3月にPython本出るみたいだけど、どれがいいと思う?

空飛ぶPython即時開発指南書   Naomi Ceder (著), 新丈 径 (監修)
URLリンク(www.amazon.co.jp)

パーフェクトPython   Pythonサポーターズ (著)
URLリンク(www.amazon.co.jp)

Pythonサポーターズって何よ?w すっげー怪しいんだけど

242:デフォルトの名無しさん
13/02/08 16:57:35.39
>>241
発売一月後の尼レビューがいい感じな方

243:デフォルトの名無しさん
13/02/08 17:58:34.89
>>241
内容紹介読むと
空飛ぶ: 初心者向け
パーフェクト: 脱初級者向け
って感じだな。
空飛ぶの方はジャケ買いしたくなる魅力があるw

244:デフォルトの名無しさん
13/02/08 17:58:56.62
>>241
上の原書はManningのThe Quick Python Bookか
ここか本スレで勧めてる人いたなあ

245:デフォルトの名無しさん
13/02/08 19:47:14.99
空飛ぶモンチッチPython

246:デフォルトの名無しさん
13/02/08 20:54:10.30
Python本なんて英語では腐るほどあるだろ
怪しい新刊が出る度に猛チェックしてる時点でお里が知れる

247:デフォルトの名無しさん
13/02/08 21:34:09.28
↑みたいなレスするやつって
英語読めないことに相当なコンプレックスがあるんだろうな

248:デフォルトの名無しさん
13/02/08 21:36:46.98
全く読めないお前と違ってなまじ読めるからな。諦めてないんだよ

249:デフォルトの名無しさん
13/02/08 21:42:04.91
>>246
カワイイ奴だな
中2の俺を思い出すよ(笑)

250:デフォルトの名無しさん
13/02/08 21:43:06.28
日本語の本が出るって大騒ぎしてる奴もかわいいよね()

251:デフォルトの名無しさん
13/02/08 21:43:16.71
>>248
洋書のPython本でお勧めは?
書名だけでなくどこがお勧めかも書いて

252:デフォルトの名無しさん
13/02/08 21:44:44.83
>>250
ますますカワイイな

253:デフォルトの名無しさん
13/02/08 21:45:51.67
>>251
Python Scripting for Computational Science
Numpy Cookbook
Sage Beginner's Guide
そもそも日本にこういうの書いてる人がいないから選択肢がない

254:デフォルトの名無しさん
13/02/08 21:47:36.84
オライリーから出たら翻訳されやすいんだよな
Think Statsとかいうクソ本も翻訳されて売られてたし(英語版は無料)

255:デフォルトの名無しさん
13/02/08 21:55:34.38
プログラミング関連の洋書って
技術的な背景がわかってればかなり読むの簡単だよね
そのまま英語→カタカナ語になってる用語多いし
高一のころjavaとjavascriptのオライリーの洋書読んで>>246みたいなことしてたわw

256:デフォルトの名無しさん
13/02/08 21:56:34.53
>>247>>255
高二病

257:デフォルトの名無しさん
13/02/08 22:01:05.07
>>256
高二病というのもあるんだ
ま、リア二だから許して

258:デフォルトの名無しさん
13/02/08 22:03:46.38
>>257
お前、実は英語まったく読めないだろ?w
プログラミングスレに居座ってないで英語の勉強しろよ

259:デフォルトの名無しさん
13/02/08 22:07:18.09
いい大人が高2相手に必死

260:デフォルトの名無しさん
13/02/08 22:09:03.50
高2が粋がんなよ

261:デフォルトの名無しさん
13/02/08 22:09:44.65
ワケわからん用語が出てくる多分野の書籍よりは
確かに読みやすい
あくまでも相対的な話

262:デフォルトの名無しさん
13/02/08 22:11:05.87
そもそもjavaとjavascriptの洋書って何?
洋書で読む必要合ったの?どうせ英語の勉強になるし一石二鳥wwwとか考えたんだろうな
そういう英語の勉強からの現実逃避をやめろ。洋書を買おうが洋画を見ようが
まずその段階に立ってなければ時間を浪費するだけ
まさに二兎追うものは一兎をも得ずだ。英語の読めない高2はさっさと勉強しろ

263:デフォルトの名無しさん
13/02/08 22:15:52.75
>どうせ英語の勉強になるし一石二鳥wwwとか考えたんだろうな

どうせ、というか俺世代の奴が洋書読むメリットって
むしろそこにあるでしょ
あとなぜか洋書の方が邦訳版より安かったんだよね

264:デフォルトの名無しさん
13/02/08 22:18:32.36
>>263
順番が逆なんだよ。なんのために勉強してるの?
そんなことが出来るなら勉強する必要ねーじゃん
洋書の方が読むのに時間がかかるんだから、安かったから読むとか馬鹿がすること
時間を大事にしろよ。現実逃避すんな

265:デフォルトの名無しさん
13/02/08 22:19:25.36
結局、>>255は生の中二病ってオチ。現実を見ろ

266:デフォルトの名無しさん
13/02/08 22:19:39.76
pass

267:デフォルトの名無しさん
13/02/08 22:26:15.74
>>264
その理屈だと
完璧に英語を習得するまでは英文を読むなってことになりますよ
定義できない完璧を目指すのは土台無理なことですし

268:デフォルトの名無しさん
13/02/08 22:28:22.67
>>267
高校レベルの英語も満足に出来ないお前が洋書を読むのは時期尚早だとなんで理解できないのかな

269:デフォルトの名無しさん
13/02/08 22:35:22.15
むしろ普段の英語の授業との相乗効果が期待できて望ましいだろう
何事も経験するのはいいことだ

270:デフォルトの名無しさん
13/02/08 22:40:28.35
相乗効果があったのか徒労に終わったのかは本人が一番よく分かっているだろう

271:デフォルトの名無しさん
13/02/08 22:41:07.18
技術書の英語なんて単語の種類や文法の複雑さを鑑みても学習効果なんてたかが知れたこと
ネイティブじゃない限り和書のほうがずっと早く読めるんだから
多少高くついてもそっちを選ぶべきというのは理屈にかなっているだろ

272:デフォルトの名無しさん
13/02/08 22:55:15.37
>>271
>技術書の英語なんて単語の種類や文法の複雑さを鑑みても学習効果なんてたかが知れたこと

これは鋭い指摘ですね
読みやすいという感覚があったのはそういう事情があったからだと思います
ただ、読まされる英文じゃなくて読みたい英文に触れられたのがとにかく新鮮で楽しかったわけです
これは無駄ではなかったと思ってますw

273:デフォルトの名無しさん
13/02/08 23:01:00.53
普通の英語を新鮮とか言ってる時点でもう英語がいかに出来ないかを物語っている
自己正当化は結構だがそんなんじゃカスみたいな人生しか待ってないぞ

274:デフォルトの名無しさん
13/02/08 23:05:09.83
人生の敗北者でも使える優しい言語、それがPython

275:デフォルトの名無しさん
13/02/08 23:17:12.65
while not ejaculated:
  if is_impotent():
    accept_my_fate():
    exit(1)
  ejaculated = masturbate()

276:デフォルトの名無しさん
13/02/08 23:20:44.11
コードは汚く、Pythonは美しい

277:デフォルトの名無しさん
13/02/09 03:14:56.71
和書が腐る程あるRubyが羨ましい。
逆だったら良かったのに。

278:デフォルトの名無しさん
13/02/09 03:37:34.40
金なんか払わなくてもドキュメントならいくらでも和訳されてるのに

279:デフォルトの名無しさん
13/02/09 08:47:37.72
>>277
そんなに沢山必要か?

280:デフォルトの名無しさん
13/02/09 13:41:01.64
標準ドキュメントの和訳版が逸品過ぎて本が売れない。

281:デフォルトの名無しさん
13/02/09 16:55:04.22
ノロマは誤訳だらけの訳書が出るまで待ってりゃいいんじゃね

282:デフォルトの名無しさん
13/02/09 17:27:35.12
たしかに誤訳は困るけど、日本語なら早く読めるのは本当だ

283:デフォルトの名無しさん
13/02/09 17:32:43.14
そういう意味じゃないよ。一生待っても、わざわざドキュメントの
日本語訳を用意してくれるライブラリやプロジェクトは少ない
日本語を選んだほうが良いのは、言うまでもなく、既に日本語訳がある場合に限る
待たなければいけない時点で速く読めるかどうかは関係なくなる

284:デフォルトの名無しさん
13/02/09 17:50:04.89
洋書なんか読んでも読まなくてもどっちでいいけど
ライブラリ添付の英語ドキュメントは読めたほうがいいね

285:デフォルトの名無しさん
13/02/11 17:04:51.47
lb=[2, 3, 47, 7, 3, 4, 5, 1]

la=[2, 4, 6, 7]

for b in lb:
for a in la:
if a==b :
break
else:
lb.remove(b)

lb
[2, 47, 7, 4, 1]

?

286:デフォルトの名無しさん
13/02/11 17:05:56.16
lb=[2, 3, 47, 7, 3, 4, 5, 1]

la=[2, 4, 6, 7]

for b in lb:
 for a in la:
  if a==b :
   break
 else:
  lb.remove(b)

lb
[2, 47, 7, 4, 1]

?

287:デフォルトの名無しさん
13/02/11 17:12:37.03
for文はelse節を取れる。ループを抜けた後に実行される

288:デフォルトの名無しさん
13/02/11 17:16:06.61
lbをfor-inでループ中にlbから要素を削除したら変になるのは当然

289:デフォルトの名無しさん
13/02/11 17:16:31.21
あ、breakで抜けたら実行されない

290:デフォルトの名無しさん
13/02/11 17:17:55.70
>>288
確かに

291:デフォルトの名無しさん
13/02/11 17:33:26.49
lbをlaと一致する要素だけにするには新しいlistを作成して
appendするのがいいですか?

292:デフォルトの名無しさん
13/02/11 17:35:21.08
集合を使えよ

293:デフォルトの名無しさん
13/02/11 17:45:37.04
重複要素も維持したいんじゃないの?

294:デフォルトの名無しさん
13/02/11 17:50:02.50
>>285

list を表す時は小文字じゃなくて大文字のL使おうな

あと、こういう風に>>293とやって自分にレスアンカーを付けてやると良いよ

これでいいかい?

>>> La = [2, 4, 6, 7]
>>> Lb = [2, 3, 47, 7, 3, 4, 5, 1]
>>> sta = set(La)
>>> stb = set(Lb)
>>> sta & stb
{2, 4, 7}
>>> sta - stb
{6}
>>> stb - sta
{1, 3, 5, 47}
>>> sta | stb
{1, 2, 3, 4, 5, 6, 7, 47}

295:デフォルトの名無しさん
13/02/11 17:50:54.02
. .: : : : : : : : :: :::: :: :: : :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
    . . : : : :: : : :: : ::: :: : :::: :: ::: ::: ::::::::::::::::::::::::::::::::::::::
   . . .... ..: : :: :: ::: :::::: :::::::::::: : :::::::::::::::::::::::::::::::::::::::::::::
        Λ_Λ . . . .: : : ::: : :: ::::::::: :::::::::::::::::::::::::::::
       /:彡ミ゛ヽ;)ー、 . . .: : : :::::: :::::::::::::::::::::::::::::::::
      / :::/:: ヽ、ヽ、 ::i . .:: :.: ::: . :::::::::::::::::::::::::::::::::::::::
      / :::/;;:   ヽ ヽ ::l . :. :. .:: : :: :: :::::::: : ::::::::::::::::::
 ̄ ̄ ̄(_,ノ  ̄ ̄ ̄ヽ、_ノ ̄ ̄ ̄ ̄

296:デフォルトの名無しさん
13/02/11 17:52:26.79
集合だと順番も維持されなけりゃ重複要素も削除されるけどええんか?

297:デフォルトの名無しさん
13/02/11 17:53:44.29
>>294
たいへん参考になりました
ありがとうございました

298:デフォルトの名無しさん
13/02/11 18:04:17.13
なんで大文字のLなの?
いまどきハンガリアン?
Python的には小文字アンスコ繋ぎだろ。
やるならa_list

299:デフォルトの名無しさん
13/02/11 18:10:07.75
list_a の方が
list_foo, list_foobar を縦に並べて書いた時に
list_ の部分が揃って好き

300:デフォルトの名無しさん
13/02/11 18:10:23.45
>>291,297
欲しかったのはLc?
>>293も満たしたつもりだけど。

>>> Lc = []
>>> for x in Lb:
... if x not in sta:
... Lc.append(x)
...
>>> Lc
[3, 47, 3, 5, 1]

301:デフォルトの名無しさん
13/02/11 18:10:27.45
>>298
URLリンク(www.python.org)

302:デフォルトの名無しさん
13/02/11 18:17:06.12
>>301
どこ?クラス名はCamelCaseと書いてあるのは見つけたけど

303:デフォルトの名無しさん
13/02/11 18:21:41.93
>>298
listって書くよりLの方が楽でしょ。
これってお試しでやれば良いだけだし、
4,5行の範囲内だから"list"って書かなくても
"L"でlistって分かるよ。
moduleとかの話とはまた違う話。
柔軟にいこう柔軟に。

PEP: 8
Title: Style Guide for Python Code
URLリンク(oldriver.org)
規範:命名規則

避けるべき名前

「l」 (小文字のエル)、「O」(大文字のオー)、「I」(大文字のアイ)
を1文字の変数名として使わない。

フォントによっては、これらの文字は数字の 1 や 0 と区別できない。
「l」 を使いたくなったら、代わりに「L」を使う。

304:デフォルトの名無しさん
13/02/11 18:26:00.40
4,5行の範囲ならaでもbでもいいだろ
リストを表したいなら複数形にすべきだよ
そもそも文頭に数字の1が来ることなんてないだろ
len()はLen()じゃねえし

305:デフォルトの名無しさん
13/02/11 18:27:08.95
>>300
Lcではないです。十分です。

306:デフォルトの名無しさん
13/02/11 18:32:50.56
>>303
>1文字の変数名として使わない
ここ超重要なんだけどね

2文字以上なら1aとかエラーになるから
気にしなくていい

307:デフォルトの名無しさん
13/02/11 18:36:31.22
"Never use the characters 'l' (lowercase letter el),
'O' (uppercase letter oh), or 'I' (uppercase letter eye) as
single character variable names."

ってあるけど、la(エルエー), Ia(アイエー)は区別付かないので、以下の方が良いと思う。

「l」 (小文字のエル)、「O」(大文字のオー)、「I」(大文字のアイ)
を数文字(2,3文字)の変数名の先頭に使わない。
or
を数文字(2,3文字)の変数名に含めない。

こいつは原文を修正すべきと思いました。
誰かお願い。
本家に申し立てて下さい。

308:デフォルトの名無しさん
13/02/11 18:37:57.93
lstが使えなくなるので激しく嫌です

309:デフォルトの名無しさん
13/02/11 18:38:57.59
とりあえず意味のあるワードにすればいいのでは
リーダブルコードをはじめ一般的にそう言われてるでしょ
listの頭文字を別の文字に読み間違える人がいるだろうか
それと、Lがリストを表すというのはどれくらい一般的なんだろう
nがnumber ofを表すってくらい有名なら使っていいと思うけど

310:デフォルトの名無しさん
13/02/11 18:45:40.37
標準ライブラリを見てみると頻繁ではないけどちょこちょこ使われてる
PEP8に書いてあるというのはよく知られていること

311:デフォルトの名無しさん
13/02/11 18:48:09.22
Lusersとかやるんだろうか…結構クソだと思うけど

312:デフォルトの名無しさん
13/02/11 18:48:53.88
>>308
1st と区別付きにくくない?
先頭が数字だから変数名には出来ないんだけどさ。
lstってlast, list, lostどれか分かりにくいから止めるべきでは?(`・ω・´)キリッ

Ia(アイエー)って電流の意味で書きたくなるので、
縦棒は大文字の愛さん専用ということで。

>>309
> 1文字の変数名として使わない。
> 数文字(2,3文字)の変数名の先頭に使わない。

勝手に変な話しているぞ
Pythonの話と他の話は分けてしましょう。

Pythonの中でならLがlistを表すのは、
「それくらい分かるだろ?予想付くだろ!」
って言って良いと思う。

313:デフォルトの名無しさん
13/02/11 18:52:58.58
>>312
エキスパートPythonプログラミングのPEP8をカバーした命名規則でもそういう話はなかった気がするなあ
別の話を勘違いしてるのはお前じゃないかな
Lがリストなんてどこに書いてある?

314:デフォルトの名無しさん
13/02/11 18:54:55.42
そもそも元のコードが、意味がなくて区別出来ればいいだけの変数なんだから
細かいこと気にすんなよ。

315:デフォルトの名無しさん
13/02/11 18:57:19.64
>>313
横からだけどPEP8には書いてないけどLっていったら普通はリストだね
listが組み込み名で使えないのが関係してるんじゃないかと
list_とか書くの面倒だし

>>311
やらない

316:デフォルトの名無しさん
13/02/11 18:58:43.44
>>313
どこにも書いてないよ。
だから、「それくらい分かるだろ?予想付くだろ!」って書いた。
書いてあるなら「書いてあるだろ!」って書いたけど?

Pythonの中でなら一文字変数Lがlistを表すのは
「それくらい分かるだろ?予想付くだろ!」っていうぐらい一般的だと思う。

当然に、文脈によっては、Lが別のclassのinstanceって事はあると思うよ。

317:デフォルトの名無しさん
13/02/11 19:02:15.05
>>315-316
お前らが言ってるのってメタ構文変数みたいな話ね
それは普通、推奨されないし、list_とかで変数を説明するのは普通のこと
laをLaに変えるべきとか言ってたからそういうルールがあるのかと思ったわ
この場合、別にlaでも問題ないわ

318:デフォルトの名無しさん
13/02/11 19:02:33.98
>>307
1文字のlと1は1文字だと
間違えても数字の1としてそのまま実行されてしまうが、
1文字でない場合は大体エラーになってすぐ分かるので気にしなくていい

ll とか IO とかは微妙かもしれないがね

319:デフォルトの名無しさん
13/02/11 19:09:41.76
>>317
リストって意味を通常含むからメタ構文変数って言っていいかはともかく
LaやLbはあまりやらない。せいぜいL, L1, L2

320:デフォルトの名無しさん
13/02/11 19:18:55.69
>>317
l, laではなくL, Laと書く癖を付けておいた方が良いよね。
だってPEP8で"~を1文字の変数名として使わない。"
と、非推奨であると名言しているもん。

PEP8の該当箇所を知った上で、
> この場合、別にlaでも問題ないわ
って書く人はPython使わない方が良いと思う。

>>319
l(小文字のエル)ではなくて、Lを使うことをPEP8で推奨しているよ。
>>285に説明したかっただけですので。

321:デフォルトの名無しさん
13/02/11 19:21:25.48
なんで>>294はaのセットをSaと表さないのか謎だよね
集合が大文字のSで、それに添字が付くのは数学では一般的なのに

>>320
だからー、一文字の無意味変数は文字に関わらず推奨されてないんだって
そんなゴミ文字を使うときは何を使おうがおなじことだよ
lではなくLを使うことによって生産性が上がることがある?
そもそもLだって何の意味もないコードでしか使えないのに

322:デフォルトの名無しさん
13/02/11 19:30:11.79
>>320
PEP8的には l = ... を使うぐらいだったら L を使えってだけだよ
La, Lbなんて変数を使う人は滅多にいない
la, lbを使う人は結構いる

323:デフォルトの名無しさん
13/02/11 19:32:09.26
1文字以外でlをLにするんだったら
listだってListにしなくちゃいけないし
consoleだってconsoLeにしなくちゃいけないよ

324:デフォルトの名無しさん
13/02/11 19:32:37.77
そんなことより>300で良いのか。
なんでわざわざappendなんてせにゃならんのだ。

325:デフォルトの名無しさん
13/02/11 19:35:20.26
>>324
・インデックスでループして、popで削除して、削除したらインデックスを進めない
・インデックスで逆順ループして、popで削除

新しいリストを作らないならこのどちらかだな

326:324
13/02/11 19:37:42.98
これで良いじゃないか。
Lc = [ e for e in Lb if e not in La ]

327:デフォルトの名無しさん
13/02/11 19:37:45.18
「俺が読みにくいから2chにソースコードを載せるときはLを使え」と言えばいいのでは

328:デフォルトの名無しさん
13/02/11 19:51:38.71
>>324
内包表記でif not inとか使うと読みにくいんで。
>>293の話もあって、本当は>>300のLcを結果として得たかったのかも。
と思って>>300書きました。

初心者の人に説明する時は、
>>326>>300では、>>300の方が分かりやすいと思いますが。
誰に説明するか考えた上での>>326ですか?

>>321
話がそれてきてますが。

>>285が発端なんだけど。
分かってる?

>>285に対する回答として>>294の説明をしたよね。
>>297で質問者は納得してくれたんだけど。

十分だと思うんだ。

ただ、la, lbを使っているところから、一文字の変数名として小文字のlは
非推奨と書いているPEP8の存在を知らないような気がした。
私自身も最初la, lb使ってましたんで。
でも、PEP8読んでLa, Lb使うようにしました。

よく分かんないから書いて欲しいんだけど、>>294にケチ付ける人は、
>>285に対する説明でどう書けば満足してた?
PEP8知らないだろうなーって思う初心者の方にPEP8の該当箇所黙ってた方が良かった?
どうせお前の意見言ってみろって言われたら黙るんでしょ?
自分の意見・考えは示さず批判する側で居続けたい人達ばかりでしょ?

┐(´д`)┌ヤレヤレ

329:デフォルトの名無しさん
13/02/11 19:55:06.41
la、lbは一文字の変数じゃねーじゃん。どういうこと?

330:デフォルトの名無しさん
13/02/11 19:57:07.35
>>328の流れは>>131-134あたりで一度やってる

331:デフォルトの名無しさん
13/02/11 20:04:17.51
>>328
いやだから、aとかbとか意味のない変数名はPEP8以前の話だって。

実用コードでそんな変数名使ってるなら絶対直した方が良いけど、
その場合「ちゃんと読み手に意味が分かる変数名使おうな」って話になる。
そこで単なる規約のPEP8持ちだしてLaだLbだ言ってもコードは読みやすく
ならない。

要は、>>285みたいな例ではla、lbで全く問題ないって事だ。

332:324
13/02/11 20:08:27.71
なんか意見言えって言われた気がしたから書く。

CはC, JavaはJavaにふさわしい書き方があるように、
PythonにはPythonにふさわしい書き方がある。
「直交性」という言葉の意味は俺は分からんし、
確かそれで揉めてた気がするけど、俺は>134と似た意見を持ってる。

そもそも>285は質問の仕方が下手で、
何を適切な結果として受け取りたかったのか分からんけど、
俺としてはそんなことはどうでもよくて、
>300が華麗にスルーされているように見えたのが気になっただけ。
Pythonでこんなまどろっこしいことやってたら疲れる。

変数名の命名規約は俺は結構どうでもいい。
やりたい人達でやって。

333:デフォルトの名無しさん
13/02/11 20:08:38.83
ただ、la, lbを使っているところから、一文字の変数名として小文字のlは
非推奨と書いているPEP8の存在を知らないような気がした。
私自身も最初la, lb使ってましたんで。

334:デフォルトの名無しさん
13/02/11 20:09:39.97
>333は>331宛て

335:デフォルトの名無しさん
13/02/11 20:12:44.07
「一文字の」をどれだけ無視すれば気が住むんだ

336:デフォルトの名無しさん
13/02/11 20:16:33.16
la(エルエー), Ia(アイエー)は区別付かないので、以下の方が良いと思う。

「l」 (小文字のエル)、「O」(大文字のオー)、「I」(大文字のアイ)
を数文字(2,3文字)の変数名の先頭に使わない。
or
を数文字(2,3文字)の変数名に含めない。

こいつは原文を修正すべきと思いました。
誰かお願い。
本家に申し立てて下さい。

337:デフォルトの名無しさん
13/02/11 20:17:56.85
# ここまで読み飛ばした

338:デフォルトの名無しさん
13/02/11 20:18:31.42
>>336
lenが抹殺されるからやっぱり嫌です

339:デフォルトの名無しさん
13/02/11 20:25:14.37
全レス君頑張ってるな

340:デフォルトの名無しさん
13/02/11 20:32:19.48
>>338
lenはlen()と被っているので、使わないようにしましょう(`・ω・´)キリッ
>>> s = 'abc'
>>> len(s)
3
>>> len = 100
>>> len(s)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

341:デフォルトの名無しさん
13/02/11 20:32:51.59
何で先頭だけなんでしょうねえ

342:デフォルトの名無しさん
13/02/13 03:01:20.38
どうでもいい
何がキリッだ
てめえのゴミのような日常生活の心配してろ

343:デフォルトの名無しさん
13/02/13 04:23:24.48
hoge[n:m]でn~m-1がキモくて慣れんかった(キリッ

344:デフォルトの名無しさん
13/02/13 07:00:44.59
m - n が要素のサイズと一致しないのは不便

終端の添字の要素を含むと len(hoge[2:5]) が 4 になってしまう

345:デフォルトの名無しさん
13/02/13 07:24:57.82
要するに慣れの問題

346:デフォルトの名無しさん
13/02/13 07:39:04.90
先頭のlなんて間違えたらそもそもプログラムが動かないんだから
1になろうがどうだろうがどうでもいい

347:デフォルトの名無しさん
13/02/13 07:51:00.46
le234 = 123; foo(1e234) とか考えられなくはないけどキリがないね

348:デフォルトの名無しさん
13/02/13 08:43:01.05
or を変数にして悩んだことあるな

349:デフォルトの名無しさん
13/02/13 17:31:25.25
PyGTKとwxPythonって使い分けしてる人いるんでしょうか?
あるいはどちらかしか使わない派?

350:デフォルトの名無しさん
13/02/13 17:35:35.23
PySideとwxPythonを使い分けてる俺なら

351:デフォルトの名無しさん
13/02/13 17:52:44.19
>>350
ありが㌧
できればPyGTKを使わない理由、PySideを使うメリットも教えてちょ

352:デフォルトの名無しさん
13/02/13 18:44:51.68
>>351
> PyGTKを使わない理由
なんとなく
> PySideを使うメリット
ライセンス的に
> wxPython
windowsでちょっとしたツールを作るのにお手軽

自分で使ってみて必要な機能がありしっくりくるのを使えばいいんじゃないかな

353:デフォルトの名無しさん
13/02/13 19:03:13.39
GTKは糞
使えば判る

354:デフォルトの名無しさん
13/02/13 23:35:08.40
PyGTKがないとmatplotlibが不便になる

355:デフォルトの名無しさん
13/02/13 23:35:54.79
自分が使ってプログラミングするつもりはないけど

356:デフォルトの名無しさん
13/02/14 13:18:05.06
URLリンク(docs.python.jp)
これって将来削除されるってことですか?

357:デフォルトの名無しさん
13/02/14 14:40:41.62
strict引数がね

358:デフォルトの名無しさん
13/02/14 23:33:32.63
ありがとうございました

359:デフォルトの名無しさん
13/02/18 11:37:29.18
shelveを利用したデータ保存の勉強をしています
手元の環境はPythonが2.7.3で動作するプログラムを、さくらインターネットに持って行くと動かなくなります。
さくらインターネットのPythonも2.7.3なのですが、Shelveは環境により動作が変わるのでしょうか?

例えばさくらインターネットでは、shelve.open()で指定したファイル名の後ろに".db"がつけられます。
これは、ファイル名を変更することで修正を行えたのですが、DBにデータが保存されないという現象も起きています。

360:デフォルトの名無しさん
13/02/18 12:01:12.06
>Shelveは環境により動作が変わるのでしょうか?

変わる
以下の11..4.1を参照せよ
URLリンク(docs.python.jp)

361:デフォルトの名無しさん
13/02/18 12:21:34.76
jsonにしとけ

362:359
13/02/18 13:56:04.17
>>360
ありがとうございます。
そのマニュアルは読んでいたのですが、制限というものがわかっておらずshelveで操作
可能なことは共通で利用可能かと思っておりました。
問題は不具合があったコードを書きなおすことで解決できたのですが、今後もshelveを
利用しようと考えているため、shelveについて質問させて頂ければと思います。

まず、shelveのバックエンドが環境に寄って変わるという事ですが、今回のように同じ
バージョンのPythonでもバックエンドが変わるというのはShelveはどこで利用するバッ
クエンドを決めているのでしょうか?
利用するバックエンドはどのように知ることが出来るでしょうか?

363:359
13/02/18 13:57:10.20
また、拡張子が付加される場合があるようですが、こちらも条件としてはどのような条
件で付加される条件が決まるのでしょうか?
shelveファイルが存在しなければ初期データの投入する処理を指定ファイル名のファイ
ルが存在するかということで行なっていたのですが、今回は拡張子が付加されて常に初
期データに戻るという問題も起きておりました。

また、ローカルとリモートのDBファイルを見てみると、バックエンドによって形式が違
うようなのですが、これは互換性が無いと考えてよろしいでしょうか?
この場合ファイルを移動させる際は、pickleでファイルに落とし、リモートでpickleか
らshelveに落とすという手順が必要になるでしょうか?

バックエンドによる制限の違いを調べたのですが見つけることができませんでした。
こちらについても、記載のあるページなどございましたらご案内頂ければと思います。

364:デフォルトの名無しさん
13/02/18 14:16:20.60
>まず、shelveのバックエンドが環境に寄って変わるという事ですが、今回のように同じ
>バージョンのPythonでもバックエンドが変わるというのはShelveはどこで利用するバッ
>クエンドを決めているのでしょうか?

anydbm.openの優先順位に従う
具体的には['dbhash', 'gdbm', 'dbm', 'dumbdbm']の順

>利用するバックエンドはどのように知ることが出来るでしょうか?

print type(shelve.open('hogehuga.db').dict)
あるいは作成されたDBに対してwhichdbを使用する

>また、拡張子が付加される場合があるようですが、こちらも条件としてはどのような条
>件で付加される条件が決まるのでしょうか?
>shelveファイルが存在しなければ初期データの投入する処理を指定ファイル名のファイ
>ルが存在するかということで行なっていたのですが、今回は拡張子が付加されて常に初
>期データに戻るという問題も起きておりました。

BSD DBの場合サフィックス.dbが付与される

URLリンク(docs.python.jp)
>また、BSD DBは拡張子 .db がついたファイルが一つ作成されます。

>また、ローカルとリモートのDBファイルを見てみると、バックエンドによって形式が違
>うようなのですが、これは互換性が無いと考えてよろしいでしょうか?
>この場合ファイルを移動させる際は、pickleでファイルに落とし、リモートでpickleか
>らshelveに落とすという手順が必要になるでしょうか?

互換性が無いと考えてよい。考えるべき
そもそもshelveでなくdictのpickleで代替できないか考えた方がいいが

365:デフォルトの名無しさん
13/02/18 14:27:09.60
あるいはShelfクラスをそのまま使用する
shelve.openの中は以下のようになっている(模式的なものであり厳密には違う)

def open(filename, flag='c', protocol=None, writeback=False):
 Shelf.(anydbm.open(filename, flag), protocol, writeback)

すなわち、使いたいdbmを自分でオープンし、Shelfのコンストラクタに渡せばいい
dumbdbmは遅いけど可搬性が保障されている

366:デフォルトの名無しさん
13/02/18 17:47:38.35
最近みんなのpythonで勉強始めた初心者なんだけどすんごく難しい
これで初学者にはいい言語ってんだからプログラミングって茨の道なんだな

367:デフォルトの名無しさん
13/02/18 17:51:21.52
オブジェクト指向とかクラスとかよく分からんかったけど、
↓みたら少し分かった。

URLリンク(www.youtube.com)

368:デフォルトの名無しさん
13/02/18 18:12:04.72
URLリンク(dotinstall.com)
初心者はこれみりゃいい

369:デフォルトの名無しさん
13/02/18 18:13:01.21
URLリンク(www.codecademy.com)
これも中々良い

370:デフォルトの名無しさん
13/02/18 23:09:47.60
dive into pythonだろ

371:デフォルトの名無しさん
13/02/18 23:31:36.22
from turtle import *

def branch(length):
if length < 10:
return
forward(length)
left(30)
branch(length/2)
right(60)
branch(length/2)
left(30)
forward(-length)

branch(200)

input()

このbranchの中にbranchってのがよく分からないんで教えてくれませんか
200進んで、30曲がって、branch(100)だから、100進んで、30曲がって…branch(12.5)で12.5進んで、30曲がる
で次にlengthが6.75になるからreturn…でこのあとどうなるのかがさっぱり分かりません
実際の描画を見ると行ったり戻ったり奇妙な動きをするのですがどうなればそうなるのかちんぷんかんぷんで

>>370
ずぶの素人は内容以前に文中の用語がまず理解できないんですよあれ

372:デフォルトの名無しさん
13/02/18 23:46:00.52
失礼、6.25ですね

373:デフォルトの名無しさん
13/02/18 23:49:11.58
再帰関数でググれ

374:デフォルトの名無しさん
13/02/19 13:20:17.97
ゴッホ曲線だと思ってた

375:デフォルトの名無しさん
13/02/19 13:23:37.49
これも良かった
URLリンク(www.nicovideo.jp)

376:デフォルトの名無しさん
13/02/19 16:13:03.67
>>371

左の末端に到達の後は、右 60 の後 branch(6.25) を呼出
10以下なので直に return し、左 30 (左30右60左30 で元の向き) 後退 12.5 (分岐点まで戻る)
次に、右 60 の後 branch(12.5) ・・・と、右の枝を描画。先端に到達した後は分岐点まで戻る、を繰り返し。

tinyurl [dot] com [slash] aebgg6z
Visual Execution -> forward でステップ実行
return後、何処に戻ってるかわかると思う。

377:デフォルトの名無しさん
13/02/19 21:39:46.15
知識ゼロの私に何から手を付けていいか教えろください

378:デフォルトの名無しさん
13/02/19 21:47:10.38
まずニュー速VIPに行きます

379:デフォルトの名無しさん
13/02/19 21:51:12.79
>>378
はい

380:デフォルトの名無しさん
13/02/19 22:08:05.29
まず筐体に飛び乗り

381:デフォルトの名無しさん
13/02/19 22:10:18.82
Pythonを露出します

382:デフォルトの名無しさん
13/02/19 22:14:16.52
Aizu Online Judgeでもやれば? 暇つぶしにはなる.

383:デフォルトの名無しさん
13/02/19 23:34:41.51
>>377
URLリンク(www.codecademy.com)

384:デフォルトの名無しさん
13/02/20 00:35:57.32
>>376
あぁ~なんとなく分かって来ました
returnの後は次のright(60)に進んじゃうんですね

えーっとreturn文という物が今度はよく分かんなくなってきました
今までreturn文は関数の結果を関数外で使えるようにするためと理解してたんですけど、今回特に値は使ってないですよね
この場合のreturnは切り上げて次に移るみたいな使われ方というか…

今までの例題だとreturnで関数定義終わっちゃってたので、ここで描画終わっちゃうんじゃないかとか思ってたんですけど

385:デフォルトの名無しさん
13/02/20 05:05:48.42
Windowsのコマンドプロンプトから起動し、ユーザ入力を受け取るスクリプトを書いてるのですが
標準入力からの読み込みを終わらせることができません。
基本的な以下のコードでも、1行目で入力待ちを続けたまま2行目にいきません。

name = raw_input('input your name: ')
print name

本来の動作としては、enterキーで変数nameに入力が渡り、printが実行されると思います。
windowsなので改行コードの違いから、入力の終わりと認識されないのだろうと見込んでいるのですが
どうすればいいんでしょうか。
os.linesepに'\r\n'を代入するのはやってみたんですが、変化なしでした。

386:デフォルトの名無しさん
13/02/20 05:20:30.67
>>384
def foo():
  1

def foo():
  1
  return None

と同じ。またreturn文に値を指定しなかった場合もreturn Noneと同じ
例題の動作が難しければ一方のbranch(length/2)をコメントアウトしてみるのもいい

>>385
Win7+Python2.6.3にコマンドプロンプトで再現しないから
詳しい動作環境書いたほうがいいよ

387:デフォルトの名無しさん
13/02/20 05:38:13.75
>>386
申し訳ありません、入力をUTF-8で受け取ろうと考えて加えていたコードにより、
動作が変わっていました。
この部分をはずしたところ正常な動作を確認できたので、見直してみますm(_ _)m

388:デフォルトの名無しさん
13/02/20 05:44:38.69


389:デフォルトの名無しさん
13/02/20 06:21:26.70
てすと
 てすと
  てすと

390:デフォルトの名無しさん
13/02/20 07:03:59.48
pythonで ruby+railみたいな何かはあるんですか?

391:デフォルトの名無しさん
13/02/20 08:45:37.87
>>390
Django、Pyramid、Flask、Web2py、Bottle、etc…

392:デフォルトの名無しさん
13/02/20 10:28:14.59
werkzeug

393:359
13/02/21 10:34:19.92
>>364
ありがとうございます。非常に勉強になりました。

> BSD DBの場合サフィックス.dbが付与される
> URLリンク(docs.python.jp)
こちらについてなのですが、ローカルとさくらインターネットの環境で比べてみたのですが、
ローカル
<class 'bsddb._DBWithCursor'>
さくらインターネット
<type 'dbm.dbm'>

となり、さくらインターネットで".db"が付加されましたので、dbmモジュールが使われ、そのdbmモジュールでbsddbが使用される場合に、".db"が付加されるという事でよろしいでしょうか?

394:デフォルトの名無しさん
13/02/21 18:00:42.92
>>243
公開されたパーフェクトPythonのジャケもカッコイイ!
6人の著者も有名人?っぽいし期待していいかも

395:デフォルトの名無しさん
13/02/21 18:23:00.78
なんか目次が盛り沢山だけど
ページ数で割ると、それぞれの内容は深くなさそう
前半にページ数を割いて、後半は申し訳程度のオマケだろうが

396:デフォルトの名無しさん
13/02/22 01:18:23.02
本探してたらPython Cookbook 3版もうすぐ出るみたいね。
Early Releaseでもいいな買うか。

397:デフォルトの名無しさん
13/02/22 01:42:30.82
翻訳版が出るのは2年後かな? 2rdの翻訳は削られた章があって非常に残念だった。
3rdは1つも削らずに翻訳して欲しいぜよ

398:デフォルトの名無しさん
13/02/22 08:35:13.09
>>2rd

399:デフォルトの名無しさん
13/02/22 11:51:39.17
セキャードかな?
読みづらいw

400:デフォルトの名無しさん
13/02/22 12:08:53.36
ツァードって読んだけど

401:デフォルトの名無しさん
13/02/22 12:38:56.59
英語苦手なんだろやめてあげろよ

402:デフォルトの名無しさん
13/02/22 15:05:18.40
パイソン厨ってやっぱ阿呆なんだな

403:デフォルトの名無しさん
13/02/22 15:10:06.85
あの、MeCabをPythonバインディングで使いたいんですが、うまくいきません。

手順としては、

・MeCab0.993とmecab-pythonをダウンロードして、解凍&インストールする。
・mecab-pythonのsetup.pyをWindows用に書き換える。
・VC++をインストール、環境変数をいろいろ設定。
・Pythonにインストール
ていう感じです。OSはVista Homeです、

ビルドしてインストールできているようなのですが、(Python27\Lib\site-packagesにコピーされている)
EclipseからMeCabをimportしようとすると、UnSolvedとなってしまうし、
コマンドラインでimportしようとすると
MECAB_ANY_BOUNDARY = _MECAB.MECAB_ANY_BOUNDARY(MeCab.py 194行目)
でMECAB_ANY_BOUNDARYは’module’オブジェクトに含まれてないと怒られてしまいます。

また、なぜかわかりませんが、python.exeと同じフォルダにMeCab.pyがあるとimportできます。
どこか間違ったんでしょうか?

404:デフォルトの名無しさん
13/02/22 15:23:54.45
>>403
Eclipse の Preferences -> PyDev で MeCab のパス追加した?

405:デフォルトの名無しさん
13/02/22 16:40:31.58
1st
2nd
3rd
4th
5th
6th
7th
8th
9th
10th
11st
12nd
13rd
14th

406:デフォルトの名無しさん
13/02/22 18:30:58.44
い、いれぶんすと

>>396
Amazon.comは2013/05になってたけどまだまだ遅れそうな気がするな
なんでここまで難産なんだろ

407:デフォルトの名無しさん
13/02/22 18:35:05.90
11th
12th
13th
14th
...
20th
21st
22nd
23rd
24th

408:デフォルトの名無しさん
13/02/22 18:36:50.10
フランス語の数字や数詞も訳わからんな。

409:デフォルトの名無しさん
13/02/22 18:51:30.92
>>404
Eclipseの方は使えるようになりました。ありがとうございました。

pythonコマンドラインの方はやっぱりダメで
めんどくさいからエラーの3行をコメントにしました。
ちょっと心配だけど動くようになりました。

410:デフォルトの名無しさん
13/02/22 19:10:09.23
Pythonのアクセス修飾子private protectedはPHPとかJavaと同じですか?
Rubyみたいな詐欺ではないですか?

411:デフォルトの名無しさん
13/02/22 19:12:27.57
同じですか?の前にそんな修飾子ねえぞ
狐にでも化かされたんじゃないか

412:デフォルトの名無しさん
13/02/22 19:50:07.09
_
__
で始まるとprivateとか慣習はある
_ 1つだと protected
__ 2つだと private
だったかな
あくまで慣習なので破ることも可能

413:デフォルトの名無しさん
13/02/22 19:57:02.67
2個は名前修飾で何か起こるんじゃなかったっけ
衝突を避けるような云々

414:デフォルトの名無しさん
13/02/22 20:05:54.49
>>> class Hoge(object):
... def __init__(self):
... self.hogea = 1
... self._hogeb = 2
... self.__hogec = 3
...
>>> class Fuga(Hoge):
... def __init__(self):
... super(Fuga, self).__init__()
... print self.hogea
... print self._hogeb
... self.__hogec = 4
... print self.__hogec
... print self._Hoge__hogec
...
>>> Fuga()
1
2
4
3
<__main__.Fuga object at 0x020C17B0>

415:デフォルトの名無しさん
13/02/22 20:20:15.67
__がprotectedで_がprivateじゃね?

416:デフォルトの名無しさん
13/02/22 20:21:30.68
_hogeb は見えてるから protected だよ

417:デフォルトの名無しさん
13/02/22 20:23:21.62
__hogec は見えないから private なんだけど
無理やり _親__hogec でアクセスすることは可能

418:デフォルトの名無しさん
13/02/22 20:24:48.04
慣習と言ってもある程度強制力はある訳ですね。
ありがとうございました。

419:デフォルトの名無しさん
13/02/22 20:26:01.80
詳しくはこちら
URLリンク(docs.python.org)

420:デフォルトの名無しさん
13/02/22 20:31:29.66
ほげほげ ふがふが

421:デフォルトの名無しさん
13/02/22 20:33:08.93
>>411
これは恥ずかしいw

422:デフォルトの名無しさん
13/02/22 20:41:25.26
叩かれる前に自分で叩くと惨めさが軽減されますよね

大丈夫だよここは超初心者用だから

423:デフォルトの名無しさん
13/02/22 20:44:54.15
2rdで盛り上がっちゃうくらいですもんねw

424:デフォルトの名無しさん
13/02/22 20:47:03.57
まあね

425:デフォルトの名無しさん
13/02/22 20:50:19.43
>>413
class Foo(object):
def __init__(self):
self.ss = 'Foo.ss'
self.__name = 'Foo.__name'

class Bar(Foo):
def __init__(self):
super().__init__()
self.ss = 'Bar.ss'
self.__name = 'Bar.__name'

bar = Bar()
print('__dict__ =', bar.__dict__)
bar._Foo__name = 'changed'
print('__dict__ =', bar.__dict__)

__dict__ = {'ss': 'Bar.ss', '_Foo__name': 'Foo.__name', '_Bar__name': 'Bar.__name'}
__dict__ = {'ss': 'Bar.ss', '_Foo__name': 'changed', '_Bar__name': 'Bar.__name'}

426:デフォルトの名無しさん
13/02/22 20:59:24.45
初めてのPythonに書いてあるよ
そう言えばLearning Python 4ndの邦訳全然出てこないな
千ページ超えてるから楽しみなのに

427:デフォルトの名無しさん
13/02/22 21:34:36.86
pychecker, pylint, pyflakes
文法チェッカ、どれがオススメ?

428:デフォルトの名無しさん
13/02/22 22:36:42.16
pep8

429:デフォルトの名無しさん
13/02/22 22:37:13.89
pep8とpylintで良いよ。pep8は厳しすぎて従う気が失せるけど

430:デフォルトの名無しさん
13/02/23 01:25:12.80
>>406
実本はshop.oreilly.comでも2013年5月ってあるからなあ。

431:デフォルトの名無しさん
13/02/25 16:35:50.51
みんなのパイチンくんとポコチンくん

432:427
13/02/25 23:20:40.14
返事しようと思ったら規制された。

>>428,429
ありがとう、暫くPEP8つかってみる。

433:デフォルトの名無しさん
13/02/26 20:00:03.62
例えばこういう構造のものを表示するのに、
>>> obj
{u'1_C': {u'2_A': 300, u'2_B': 400}, u'1_B': 3000, u'1_A': {u'2_A': {u'3_A': 10, u'3_C': 1, u'3_B': 100}, u'2_B': {u'3_A': 10, u'3_C': 1000, u'3_B': 100}}}

こういうフォーマットでなく、
>>> pprint.pprint(obj)
{u'1_A': {u'2_A': {u'3_A': 10, u'3_B': 100, u'3_C': 1},
u'2_B': {u'3_A': 10, u'3_B': 100, u'3_C': 1000}},
u'1_B': 3000,
u'1_C': {u'2_A': 300, u'2_B': 400}}

こういうフォーマットで出すには、自分で構造体内をcrawlしてやる手続きを書かないとならないのでしょうか。
それとも何か使えそうなライブラリがあるでしょうか。
u'1_A': u'2_A': u'3_A': 10,
u'1_A': u'2_A': u'3_B': 100,
u'1_A': u'2_A': u'3_C': 1,
u'1_A': u'2_B': u'3_A': 10,
u'1_A': u'2_B': u'3_B': 100,
u'1_A': u'2_B': u'3_C': 1000,
u'1_B': 3000,
u'1_C': u'2_A': 300,
u'1_C': u'2_B': 400
こういうフォーマットとは、1行は var = val の型で、varの要素名は省略してはならない。

434:デフォルトの名無しさん
13/02/26 20:07:03.90
そのpprintが使えると思うけど正確にそれと一致させるのはできるかどうか

435:デフォルトの名無しさん
13/02/26 20:12:05.84
よく見ないでレスしてしまった。>>434はスルーで

436:デフォルトの名無しさん
13/02/26 20:26:56.28
普通にループで書けばいいんじゃないの

437:デフォルトの名無しさん
13/02/26 21:22:37.54
>>436
> 普通にループで書けば
とは、
> 自分で構造体内をcrawlしてやる手続き
と何が違いますか? 「普通にループ」についてここ読めとかあったらお願いします

438:デフォルトの名無しさん
13/02/26 22:35:45.35
木の全てのパスを列挙するのであれば再帰で書く
あともしobjが辞書であれば構造体と違って順序はないので注意

439:デフォルトの名無しさん
13/02/26 22:47:05.44
>>377
URLリンク(www.learnstreet.com)

440:433
13/02/27 07:21:43.70
>>438
> 木の全てのパスを列挙するのであれば再帰で書く
やはりそれしかないですか。ありがとうございました。
なおsortの必要はありません。お気遣いもありがとうございました。

441:デフォルトの名無しさん
13/02/27 08:14:44.21
ライブラリを探すほどのことか?

442:デフォルトの名無しさん
13/02/27 12:41:10.22
unittestのメソッドってなんでキャメルケースなの?
キモいんだけど

443:デフォルトの名無しさん
13/02/27 12:55:55.66
JUnit由来かと

444:デフォルトの名無しさん
13/02/27 17:43:39.36
だからといって flask のユニットテストみたいに書き直すのはどうかと思う

445:デフォルトの名無しさん
13/02/27 21:41:03.60
assert○○はともかくsetUpなんかsetupでいいだろと思う
これ作った奴Javaにコンプレクスでもあんのか

446:デフォルトの名無しさん
13/02/27 21:45:54.88
そうかもね
興味ないからMLで聞いてくるといいよ

447:デフォルトの名無しさん
13/02/27 21:57:21.29
>>441
> ライブラリを探すほどのことか?
標準的な仕組みがあればそれを使った方が何かとイイてのは言うまでもないことです。

448:デフォルトの名無しさん
13/03/02 15:22:36.57
logging, unittest のソース嫁
コメントに java へのリスペクトが書いてある
>>445 に java コンプレックスがあるのか知らんけど python は java をリスペクトして開発されたモジュールは結構多い
それをコンプレックスと思うなら python 使わなければ良い

449:デフォルトの名無しさん
13/03/02 21:15:58.62
なんかキモい

450:デフォルトの名無しさん
13/03/02 22:01:58.21
pass

451:デフォルトの名無しさん
13/03/02 22:34:08.83
なんでもコンプレックスに結びつけるのがユングフロイトゲガンゲン

452:デフォルトの名無しさん
13/03/03 14:19:44.21
pass

453:デフォルトの名無しさん
13/03/04 23:43:36.01
matplotlibで描いたグラフをwxPythonのパネルに表示して、
テキストボックスに入力した数字にたいして、ボタンを押して更新できるようにしたいんですが、
更新のところのやり方がよくわかりません。
plotを、再設定するだけじゃだめなんでしょうか
plotまでは流れているようですが更新されません。

454:デフォルトの名無しさん
13/03/06 00:32:28.27
canvasのdrawしてないだけでした
ごめんなさい。

455:デフォルトの名無しさん
13/03/06 09:19:42.74
>>451
っせえ
黙ってろ

456:デフォルトの名無しさん
13/03/06 14:54:29.20
pass

457:デフォルトの名無しさん
13/03/06 16:47:51.36
>>454
俺の言った通りだろう

458:デフォルトの名無しさん
13/03/06 22:43:49.62
やる気があればなんでもできる

459:デフォルトの名無しさん
13/03/06 23:46:17.93
pass

460:デフォルトの名無しさん
13/03/07 10:22:31.55
pythonに適したテキストエディタを教えて下さい

461:デフォルトの名無しさん
13/03/07 10:58:46.14
無料の中ではemacsいいよね。

462:デフォルトの名無しさん
13/03/07 12:26:18.69
よいよね、だろ

463:デフォルトの名無しさん
13/03/07 12:55:46.95
いいです
けっこうです

464:デフォルトの名無しさん
13/03/07 13:49:02.75
vimがもっとも優れています

465:デフォルトの名無しさん
13/03/07 15:59:40.78
>>461
>>464
ありがとうございます。

466:デフォルトの名無しさん
13/03/07 18:57:57.54
早まるな。

467:デフォルトの名無しさん
13/03/07 19:48:25.22
pass

468:デフォルトの名無しさん
13/03/07 21:22:27.02
『初めてのPython』ぶ厚すぎだろ
3冊くらいに分けて欲しかった

469:デフォルトの名無しさん
13/03/08 09:39:16.84
xlwt を使いたいんだけどどこからダウンロードできますか?
windowsです

470:デフォルトの名無しさん
13/03/08 09:43:15.02
>>469
ググれ

471:デフォルトの名無しさん
13/03/09 07:43:29.00
xlwt なら、ふつうに easy_install ではいる筈。

472:(;D)笑男 ◆LeBIz0ZWfs
13/03/09 09:19:58.83
URLリンク(livedoor.blogimg.jp)

473:(;D)笑男 ◆LeBIz0ZWfs
13/03/09 09:20:31.31
チョーゴバク (TдT)

474:デフォルトの名無しさん
13/03/09 10:07:12.28
質問です
可変長のリストの入力に対して固定長のリストを出力したいのですが
足りない部分を先頭の要素から0で埋めようと思います

例:出力が固定長 5 のとき
入力 [1, 3] 出力 [0, 0, 0, 1, 3]
入力 [2, 1, 3] 出力 [0, 0, 2, 1, 3]
入力 [5, 4, 2, 1, 3] 出力 [5, 4, 2, 1, 3]

一番シンプルに書く方法はどんなのがありますか?

475:デフォルトの名無しさん
13/03/09 10:08:11.10
URLリンク(i.imgur.com)

476:デフォルトの名無しさん
13/03/09 10:14:14.06
一番シンプルというのが怖いけど

>>> def pad_list(lst, pad, size): return [pad] * (size - len(lst)) + lst
>>> pad_list([2, 3], 0, 5)
[0, 0, 0, 2, 3]

477:デフォルトの名無しさん
13/03/09 10:14:49.11
[0]*(5-len(a))+a

478:デフォルトの名無しさん
13/03/09 10:19:30.12
size - len(lst) が 0 (または負) になってても問題ないんですね

479:デフォルトの名無しさん
13/03/09 10:49:44.30
>>476-477
とりあえずそれでいきます
ありがとうございました

480:デフォルトの名無しさん
13/03/09 12:37:35.13
windowsユーザーだけど、Pythonやろうと思ってます。
Ubuntu入れたほうがいいですか?
16GBのUSBメモリでインストールを検討してるのですが
どうでしょうか?

481:デフォルトの名無しさん
13/03/09 12:44:38.82
>>480
windowsでも問題なくできるよ

482:デフォルトの名無しさん
13/03/09 12:45:53.10
クローラとかフィードフィルタとかWindowsで開発してRaspiで動かしてる

483:デフォルトの名無しさん
13/03/09 13:23:16.14
Rubyと違ってPythonはWindowsでも問題なく使えて良いよね

484:480
13/03/09 13:35:20.01
ありがとうございます m(_ _)m
windowsでやります

485:デフォルトの名無しさん
13/03/09 19:23:07.59
perlのstrict機能を果たす
pythonのlibrary名教えて下さい。

486:デフォルトの名無しさん
13/03/09 19:37:55.20
デコレータってどんなときに使いますか?

487:デフォルトの名無しさん
13/03/09 19:40:20.26
一番よく見るのはメモ化(memoize)かな

488:デフォルトの名無しさん
13/03/09 19:55:06.91
へえ
なるほどね

489:デフォルトの名無しさん
13/03/10 00:40:19.38
再帰がわかりません。

def factorial(x):
if x <= 1:
return 1
return x * factorial(x - 1)

factorial(5)が1×2×3×4×5で120を返すとの事なのですが、計算の流れが理解出来ません。

factorial(x -1)はどんな動きをしているのでしょうか?

490:デフォルトの名無しさん
13/03/10 00:56:18.35
>>489
x*(x-1)*(x-1-1)*(x-1-1-1)...
x<=1を満たすまで自分を呼び出し続けるだけ

491:デフォルトの名無しさん
13/03/10 01:58:53.54
x*((((x-1)*(((x-1-1)*((x-1-1-1)...

492:デフォルトの名無しさん
13/03/10 03:43:40.69
>>490
>>491
ありがとうございます。
なんとなく理解出来たような気がします。

factorial(x)に5を代入すると
return 5 * factorial(4)
4をxとして1行目に戻して最終行で
return 4 * factorial(3)
以後同じように3 *, 2 *, 1 *と入れ子が深くなりつつ繰り返され、
条件が成立した時点では
return 5 * (4 *(3 *(2 *(1))))
となるので5×4×3×2×1で120という事ですよね?

これで先に進む事が出来ます。
本当にありがとうございました。

493:デフォルトの名無しさん
13/03/10 23:04:00.99
import sys, hashlib, hmac
from Crypto.Cipher import AES

def aes_encrypt(msg, key, iv):
encryptor = AES.new(key, AES.MODE_CBC, iv)
return encryptor.encrypt(msg)

aes_encrypt(encrypt.py)は、main.pyからインポートされて呼び出されます。
実行すると、ImportError: No module named Crypto.Cipherというエラーが出ます。
どうしたらいいのでしょうか?
Python 2.7.3 + python2-crypto 2.6

494:デフォルトの名無しさん
13/03/10 23:15:02.35
まずsys.path確認

495:デフォルトの名無しさん
13/03/11 09:27:30.77
linuxで自作のpython野良アプリを作ったとしてそのスクリプトと設定ファイルはどこに配置するのが一般的ですか?

496:デフォルトの名無しさん
13/03/11 11:20:55.12
python関係ない
linux板で聞け

497:デフォルトの名無しさん
13/03/11 13:05:02.67
linux 板の話だな









conf ディレクトリ内
conf を /etc/appname へシンボリックリンク

498:デフォルトの名無しさん
13/03/11 13:53:39.25
>>497
バッドノウハウ

499:デフォルトの名無しさん
13/03/11 14:08:18.05
conf ディレクトリってなんだ?

500:デフォルトの名無しさん
13/03/11 14:32:07.19
別にディレクトリにしなくても良い

501:デフォルトの名無しさん
13/03/11 18:27:02.85
conf = 設定ファイルだろ

502:デフォルトの名無しさん
13/03/11 19:49:58.52
そんな俺様ルール出されても

503: 忍法帖【Lv=4,xxxP】(2+0:5)
13/03/12 21:10:19.36
>>464
ちなみにプラギンは?
jedi-vim?

504:デフォルトの名無しさん
13/03/13 08:31:48.47
windowsで「デスクトップ」にpyファイルを置いて
importすると、日本語が通らなくてダメなの?

505:デフォルトの名無しさん
13/03/13 08:45:42.24
今の3.3はファイルシステムエンコーディングがutf-8以外のシステムで
非ascii文字がパスに含まれている場合
起動中に__main__の設定が失敗するバグがある
まだ公式の修正リリースはありません

506:デフォルトの名無しさん
13/03/13 08:50:07.74
ありがとうございます。

507:デフォルトの名無しさん
13/03/13 10:12:39.40
あほ毛

508:デフォルトの名無しさん
13/03/13 12:34:30.47
3.3.1が3/2リリースだと思ってたけど、まだ出てないってことは延期されたのか
家帰ったら探してみよう

509:デフォルトの名無しさん
13/03/13 14:29:27.58
ここはお前の日記帳じゃねえんだ
チラシの裏にでも書いてろ、なっ!

510:デフォルトの名無しさん
13/03/13 14:36:40.51
>>505
2からあるバグじゃないの。それ。

511:デフォルトの名無しさん
13/03/13 14:52:19.20
URLリンク(bugs.python.org)

512:デフォルトの名無しさん
13/03/13 15:09:45.65
何を根拠に2.7とか

513:デフォルトの名無しさん
13/03/13 16:50:14.17
x. 文字コードについて
PYTHONPATH\Lib\site-packages\sitecustomize.py(なければ作る)に

import sys
from codecs import getwriter
sys.setdefaultencoding('shift_jis')
sys.stdout = getwriter('shift_jis')(sys.stdout)

と書くと日本語のエンコード関係がマシになるかもしれません。

514:デフォルトの名無しさん
13/03/13 18:22:26.52
ああ全然そんな話じゃない

515:デフォルトの名無しさん
13/03/13 20:20:11.72
超初心者です
プログラムを身につけたいと思ったもののプログラムの種類が多すぎて何からやればいいか
わからなかったのでプログラミングが学べる英語動画サイトみてたら初心者向けはpythonが多いようでした

その後本屋にいくとpythonは日本ではマイナー言語のように書籍が少なかったのです

pythonは日本ではマイナーなのでしょうか?pythonの利点と欠点を教えて下さい
プログラムを学ぶ目的は株のシステムトレードをしたいからです


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