1 名前:デフォルトの名無しさん mailto:sage [2013/01/21(月) 16:36:03.35 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その15 toro.2ch.net/test/read.cgi/tech/1350718465/ 関連スレ Pythonのお勉強 Part48 toro.2ch.net/test/read.cgi/tech/1358750040/ 【実験台】 Python 3.0 のお勉強 Part 1 【非互換】 toro.2ch.net/test/read.cgi/tech/1235050215/ ◆関連リンク Python の Home Page ttp://www.python.org/
116 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 10:19:33.26 ] ああ、'ファイル名'の方の文字コードの話なら、 ちょっと注意が必要。 argvに入ってくる文字列のエンコードとかあるし。
121 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 12:04:34.89 ] > つまり、「hogehogeでない要素」という否定の要素の指定をお願いします。 ^^^^ ^^^^
123 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 12:09:57.83 ] >>122 L[4]=0 で4という要素にはアクセスできない。質問者が言葉を間違えてるだけ
124 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 12:56:58.25 ] arrayはリストとして使うときはキャストしなきゃいけないし 用途に合ってないのに使うのは微妙
127 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 13:00:42.80 ] しかも、また要素で判定してて笑える
128 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 13:41:23.65 ] >>117 >>128 なんでリスト内包表記を使わないの? >リストに要素を append() する場合、インタプリタは「リストから append 属性を >取り出してそれを関数として呼び出す」という処理をしなければなりません。 > それに対して、リスト内包表記を使うと、インタプリタに直接「リストに要素を >追加する」という処理をさせることができます。インタプリタが解釈する命令数 >が減る、属性の取り出しが不要になる、関数呼び出しが不要になる、という3つ >の理由で、リスト内包表記を使うと速くなります。 dsas.blog.klab.org/archives/51742727.html
132 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 13:55:47.45 ] そもそも、質問者は L[4]=0 と逆の操作をやりたいのだから for i in range(len(L)): ~ でやるなら代入とスキップでいいだろ なんで新たにリストを作って毎度関数を呼び出すのか
133 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 14:22:07.62 ] >>133 内包表記というのがあってーじゃなくて こういうときはこうすると覚えればいいだけ それにリスト内包表記や三項演算子のネストは止めた方が良いが 今回それぞれ一個だからわかりづらくはない pythonのリスト内包表記や三項演算子はfor文やif文と直交性があるから mapやfilterやlambdaを組み合わせるより遥かに直感的に書ける まるでC言語のようなコードをPythonで書くのは馬鹿らしいことだよ Pythonではどう書くのか覚えて慣れたほうがいい
135 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 14:59:20.33 ] 今回みたいなのは無理に答えないで 質問のどこが悪いのか指摘したうえで再提出要求でいいよ でないとプログラマがするような質問の仕方が身につかない
136 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 15:16:12.99 ] だから、>>128 の下から4行ってことでしょ?
137 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 15:38:55.89 ] いまいち「直交性」の意味が分からない
138 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 15:50:04.55 ] 独立している、無関係である、お互いの領分が重ならない、 という時に使う言葉ではあるが
139 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 15:54:57.27 ] シンタックスで言えば、同じような操作で、同じような結果が得られるときに使う言葉だよ
140 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:10:03.62 ] 「直交性」ていわれると、目が点になるね
141 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:14:15.13 ] > What does Python have that PHP doesn't? > - very clear, concise, and orthogonal syntax PythonにあってPHPにないものは? ・簡潔明瞭で、直交性の高いシンタックス wiki.python.org/moin/PythonVsPhp (公式) > its syntax and toolset are remarkably coherent. Moreover,like math, its design is orthogonal books.google.co.jp/books?id=nEJ-jcYF2fMC&pg=PA16&lpg=PA16&dq=orthogonal#v=onepage&q=orthogonal&f=false (オライリー)
142 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:18:11.31 ] 元の意味は>>138 だろ?そういう文脈では分かるんだけど 応用的な使い方されると、もう分からない。 >>139 とかほとんど真逆の事言われてるような気すらする…
143 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:18:32.04 ] 直行って相反するイメージがあるんだけど、 なんで直行性でそういう意味になるんだろう
144 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:21:47.72 ] 数学で直交性と言えば線形独立性の事であって いかにベクトルが同じ方向を向かないかを意味するのに、 同じ方法で同じ結果が得られるという意味に使おうという ガイジンの発想がよく分からん
145 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:38:59.87 ] ある命令で、その意図以外のことが起こらないことを直交と言って for はイテラブル・オブジェクトを辿るし、if は条件を判定するってだけ これで条件演算子が e1 ? e2:e3 だったらシンタックスのコンパクトさが損なわれる 全部個人的な評価だけど
146 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 17:55:03.33 ] forにelse節があるのが直交ねえ
147 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 18:08:08.99 ] リスト内包表記に内包されるのはfor節とif節であってfor文ではない あとfor文やwhile文のelse節を使ったコードは寡聞にして見たことがない
148 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 18:41:17.44 ] 例 X = mx Y = my こうなってたら、Xは、xによるが、yによらない。
149 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 18:43:22.60 ] Pythonが「誰が書いても同じようなコードになる」と謳われるのは、 ある処理を実現する複数の従属な記述がないから。 本当はいくらでも違う書き方が出来るけど、まあ独立性についてはそんな感じ。でも一貫性と言ったほうが分かりやすい。
150 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 18:47:47.14 ] いや、従属な処理を実現する複数の記述がないから。か
151 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 19:40:22.93 ] >>138 ,142だが 長々とスレ違いな話題ですまん。 皆の意見参考にして自分なりに考えてみた。 こういう解釈でいいんだろうか? 直交性が高いシンタックス = シンタックスと文脈の直交性が高い (キーワードが文脈と独立して解釈出来る) = どんな文脈でも forはiteration、ifは条件分岐を意味する かつ、iteration、条件分岐を意味する他のキーワードはない = >>134 、138 の意味
152 名前:151 mailto:sage [2013/02/02(土) 19:43:29.43 ] ごめん、アンカ間違った。 俺は>>137 ,142だ で最後の行は >>134 ,139
153 名前:116 mailto:sage [2013/02/02(土) 21:33:57.37 ] 添え字とリスト内の要素と紛らわしい質問をして大変申し訳ありませんでした。 そして、丁寧に回答してくださった方々ありがとうございました。 添え字で否定の指定したかったのですが、ここまで大変参考になりました。 リスト内包表記は視覚的にもとても見やすいので使いこなせるよう頑張ります。
154 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 21:45:23.81 ] こうやってまた一人、蛇の道を歩み始めたのであった。
155 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:07:18.96 ] >>142 >>139 の説明が悪いんだろ。 (異なる対象に対して、) 同じような操作で、同じような結果が得られるとき (は、対象と操作の直交性が高い (つまり、対象と操作の独立性が高い)) >>145 とかは、俺も意味がわからん。 直交って言ってるんだから、○○と△△ のようにベクトルは2つ必要だと思うが。
156 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:16:59.40 ] >>155 ベクトルは一切関係ないです。一切。
157 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:24:20.22 ] r, g, b = [1, 2, 3]
159 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:39:51.06 ] >>157 まずもって全て0の配列が代入される意味は分からんが、それ以前に そんなことしたら r, g, b は全部同じオブジェクトを指すことになるのだが、それで良いのか つまり r の要素を変更したら g, b も同じく変更される
160 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:45:58.12 ] それぞれが img のコピーということなら、こうだけど b, c, d = [img.copy() for i in range(3)]
161 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:46:34.26 ] >>159 やはりそれが問題なのでしょうか? すべて値渡しにするためには b, g, r = img.copy(), img.copy(), img.copy() しかないのでしょうか? レスありがとうございました。
162 名前:デフォルトの名無しさん mailto:sage [2013/02/02(土) 23:51:50.12 ] >>160 ありがとうございます これでちゃんと通りました リスト内包表記は便利ですね
163 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 00:08:24.04 ] こええ!
165 名前:デフォルトの名無しさん mailto:sage [2013/02/04(月) 00:17:05.17 ] 実際になにをやりたいかによるけど A,Bをジェネレータにできないようなら 変に工夫するよりmmapつかって富豪プログラミングするかな。 numpy.memmapとか。
166 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 00:53:58.19 ] 多重起動防止でこのサイトのMutexを使った方法をやろうと思ったのですが www.ops.dti.ne.jp/ironpython.beginner/multithread3.html mutex モジュールは Python 3.0 で削除されました。 との事でした。 docs.python.jp/3/library/mutex.html Python 3で多重起動防止をやるにはどうしたらよいでしょうか
167 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 06:29:12.53 ] 排他制御ってことですよね この辺は参考にならないでしょうか d.hatena.ne.jp/yatt/20100107/1262869979 www.phactory.jp/cms/blog/post/admin/2010/02/python_lock/
168 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 16:08:39.88 ] プロセス間の排他制御が必要なので、標準ライブラリのthreadingやmutexは、その用途には使えないと思う。 排他制御の実現方法は幾つかあるけど、多分、各環境毎に実装方法が異なるので Pythonで〜というより、環境が提供してる方法を調べた方がいいかもしれない。 (例えば、wxだったらwx.SingleInstanceChecker みたいなのが用意されてたりする)
169 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 16:32:33.17 ] その手はあんま移植性高くないんだよな flock()がなぜか無駄に有名だけど、flock()はPosix標準ですらないので 少なくともPosix標準で定義されていて高機能なfcntl系のlockf()を使った方がいいよ あと紛らわしいのがmutexってPosix系とWindowsで意味が違っていて pthreadだとスレッド同期オブジェクトだがWindowsではプロセス間排他に使える グローバルなカーネルオブジェクト なのでWindowsならばmutexを使うのはこの場合一つの妥当な解だけど ctypesとかwin32専用のモジュールを使う必要があるはず
170 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 16:35:22.63 ] ついでに調べてみた、 multiprocessingの方のSemaphoreは、内部で名前付きセマフォを使ってるんだけど、 引数で名前を指定する方法がないので、惜しいけど、多重起動防止には使えない。 ちなみに、ロック・ファイル方式は、システムがクラッシュした時、 ロックが残ってしまった場合を考慮すると運用面で難有りです。
171 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 16:49:07.46 ] >>166 pypi.python.org/pypi/justme/ Prohibit to run two process/instance at same time. to use a transaction behavior via sqlite3. 頑張って作ってみたよ。どうぞ。
172 名前:デフォルトの名無しさん mailto:sage [2013/02/05(火) 20:29:37.92 ] こんなにわかりやすい自演に遭遇したのは久しぶりだ
173 名前:デフォルトの名無しさん [2013/02/06(水) 00:15:59.16 ] デスクトップに置いた、メモ帳で作成した英文テキストファイルを f = open(ファイルパス、r、UTF-8)で読み込ませたかったんですが、 'unicodeescape' codec can't decode 〜 というエラーが出てしまい読み込みません。どうしたらいいのでしょうか?
174 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 00:37:22.92 ] >173 たぶんコレだろ ttp://stackoverflow.com/questions/1347791/unicode-error-unicodeescape-codec-cant-decode-bytes-cannot-open-text-file
175 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 00:41:41.81 ] >>173 まずは、環境を明記し実際のコードとエラーメッセージを省略せずに貼り付けて よくあるケースだと、メモ帳でutf-8のファイル作るとBOMが付くのが原因 Pythonで BOM付き utf8 読むときは "utf8-sig" を指定する。
176 名前:173 [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:12:04.33 ] >>176 俺の環境では、パスの\を/にしたら行けた
178 名前:173 [2013/02/06(水) 02:16:20.34 ] >>177 解決しました!ありがとうございます! しかしなぜバックスラッシュを入れるべきところでスラッシュが許可されるのでしょう? 他いろんな箇所でもバックスラッシュとスラッシュが入れ替わり可能なんでしょうか 御存じの方教えていただけませんか
179 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:17:00.46 ] エスケープシーケンスに引っかかってたんだな \を\\にしても行ける
180 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 02:37:35.94 ] raw文字列を使おう
181 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 09:12:59.85 ] >>178 パス名として扱われる文字列中ではディレクトリ階層の区切り文字として ↓の2つが使えると考えればおk ・python標準の区切り文字 / ・os標準の区切り文字 (Windowsなら)\ \は扱いが面倒くさいし移植性も低いから素直に/を使うのがいいかと >>180 os.listdir(r'C:\Users\ore\') SyntaxError: (ry このように出ま(ry ってなったり\区切りは何かと面倒くさいよね
182 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 09:47:32.41 ] raw文字列でも引用符はエスケープされるんだな。 知らなかった。
183 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 10:02:48.29 ] 激しく概出ネタなのに ここには書かれてないよね ttp://python.rdy.jp/
184 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 11:30:28.13 ] ナマ文字列を囲んでる文字('")をエスケープできなかったら困るからね
185 名前:173 [2013/02/06(水) 12:25:29.76 ] 助かりました。ありがとうございました。 区切り文字が複数ある場合があるんですね os.listdir(r'C:\Users\ore\') だと最後の'がraw文字列になって引用終わりになってないってことですよね? os.listdir(r'C:\Users\ore\'')でやってみたらできますね… みなさんありがとうございました^o^
186 名前:デフォルトの名無しさん [2013/02/06(水) 12:49:18.07 ] 人の話聞けよタコ
187 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 14:21:03.54 ] os.path 派に +1 windowsでパス区切りに / を使うと、区切り文字が混ざったりする
189 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 15:26:14.16 ] 手元の自分用スクリプトでしょw
190 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 17:10:52.16 ] os.sep派
191 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 17:59:22.13 ] >>171 166じゃないけど横レス失礼 起動履歴にもなるのは良いね。使ってみたので幾つかフィードバック * SQLのコメントは -- (エラーが出た、修正したら動いた) * 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ * lock/unlock は with 文に対応すると隠せる * 起動中のアプリケーションのPIDを知る方法があれば、より良いかもしれない。 多重起動しない代わりに、シグナル等を送ってウィンドウをアクティブにしたりする等の需要がある
192 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 19:02:44.94 ] >>191 > * SQLのコメントは -- (エラーが出た、修正したら動いた) これは、手元で対応済みです。 ご迷惑お掛けしました。 > * 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ 指摘の点で、ここだけちょっと分からないのですが。 > * lock/unlock は with 文に対応すると隠せる こちらも、手元で対応済みです。 > * 起動中のアプリケーションのPIDを知る方法があれば、より良いかもしれない。 > 多重起動しない代わりに、シグナル等を送ってウィンドウをアクティブにしたりする等の需要がある これは対応しようと思っていました。 誰かに言われたら考えよーって思ってました。 早速指摘されたので対応策を考えようと思います。
193 名前:192 mailto:sage [2013/02/06(水) 19:20:32.97 ] >>191 > * 辞書の順序、トリッキーな事しなくても、名前つきプレースホルダ使えば辞書のまま渡せるよ 分かりましたので修正しました。 ご指摘ありがとうございます。
194 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 22:19:38.57 ] わざわざ指摘→改善の自作自演なんかしないで 自分のブログででも宣伝したらいいのに
195 名前:デフォルトの名無しさん mailto:sage [2013/02/06(水) 23:57:11.03 ] >>194 おまえ根性腐ってるな
196 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 00:00:32.06 ] ↑得意の自演で自分を援護ですねわかります
197 名前:デフォルトの名無しさん [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:16:02.69 ] >>199 あまりにも美すぃ >>200 あまりにもゴリゴリすぃ
203 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:19:37.04 ] >>199 僕もそういうコーディングできるようになりたいんで どういう本を読んでその域に達したのかとか 通ってる(た)大学とか 年収とか 彼女の有無とか 教えてくださいm(_ _)m
204 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:20:49.75 ] >>203 あなたと同じ低学歴童貞ニートです
205 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:23:23.40 ] >>204 僕が低学歴なのも童貞なのもニートなのもあたってますけど… そういう冗談はいいのでマジで教えてください せめて一個目の質問だけでも
206 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:56:33.41 ] Linuxコミュニティが選ぶ人気オープンソースプロジェクトの年次調査、言語は「Python」、デスクトップは「Slackware」がトップにsourceforge.jp/magazine/13/02/06/0516242
207 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 02:59:06.85 ] ttp://docs.python.org/2/library/itertools.html#recipes
208 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 05:04:41.44 ] 素朴な疑問なのですが、PEP8ってなんで読むのでしょう? 心の中では「ペップエイト」と呼んでいるのですが、正解はピーイーピーエイトあたりでしょうか? いつか口に出す機会が訪れたときに備えておきたいです。
209 名前:デフォルトの名無しさん [2013/02/07(木) 08:10:32.66 ] >>194 ↑これも自演 >>195 ↑これも自演 >>196 ↑これも自演
210 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 08:59:21.76 ] >>206 記念に釣られてみるが ここ最近の Python の伸びは node.js の影響かもな
211 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 09:20:46.03 ] >>208 ペッペイト
212 名前:171=192 mailto:sage [2013/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 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 09:33:02.59 ] ねえ、githubじゃなくてもさあ。ツイッターもはてブもやってないの? 臭すぎるよ
214 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 09:33:44.36 ] 超初心者スレでひたすら自演とかさ。然るべき場所に行く脳みそ持ってないのかね 最悪の開発者だな
215 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 09:36:39.77 ] こいつの薄汚いコミットを宇宙全体から排除する方法はないだろうか
216 名前:デフォルトの名無しさん mailto:sage [2013/02/07(木) 09:42:46.77 ] 3レスもどこの誤爆?