2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

くだすれPython(超初心者用) その24

1 :デフォルトの名無しさん:2014/08/03(日) 04:42:31.25 ID:nSUL9jmo
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その23
http://peace.2ch.net/test/read.cgi/tech/1400479217/
関連スレ
Pythonのお勉強 Part49
http://toro.2ch.net/test/read.cgi/tech/1387528488/

◆関連リンク Python の Home Page
ttp://www.python.org/

◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/

◆まとめwiki
ttp://python.rdy.jp/

2 :デフォルトの名無しさん:2014/08/03(日) 04:43:50.86 ID:nSUL9jmo
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|

3 :デフォルトの名無しさん:2014/08/03(日) 04:46:53.92 ID:bPGWsjSY
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

4 :デフォルトの名無しさん:2014/08/03(日) 06:51:11.15 ID:Qqzbedo3
http://www.buzzword.jp/img/face10.png

5 :デフォルトの名無しさん:2014/08/03(日) 06:53:32.59 ID:OFXCnhud
pythonで2chに書きこむ方法教えてください 

6 :デフォルトの名無しさん:2014/08/03(日) 06:57:33.93 ID:PE5P6N+l
1ch夏休み電話相談室で聞いてみよう

7 :デフォルトの名無しさん:2014/08/03(日) 07:19:11.31 ID:zU4sk6Ng
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::

8 :デフォルトの名無しさん:2014/08/03(日) 07:34:08.35 ID:OFXCnhud
お願いします 教えてください

9 :デフォルトの名無しさん:2014/08/03(日) 07:40:16.12 ID:zU4sk6Ng
>>4
どこかで見た顔だと思ったら
javascript ぐぐったらいつも出て来るあれか

10 :デフォルトの名無しさん:2014/08/03(日) 07:41:45.56 ID:OFXCnhud
>>4
こいつうざいからadblockで顔面消してるわ

11 :デフォルトの名無しさん:2014/08/03(日) 12:28:44.93 ID:OFXCnhud
#coding:utf-8
import urllib

keyword = u"テスト"
print urllib.urlencode(keyword)

これでやるとエラーが出ます。なぜですか?

12 :デフォルトの名無しさん:2014/08/03(日) 12:38:42.66 ID:4e8mKRmq
いまどき仕事でもないのにPython2使ってるって人前でよく言えるよな。

13 :デフォルトの名無しさん:2014/08/03(日) 13:25:36.46 ID:6r413W6I
超初心者用って書いてあるけど最近湧いてくる超初心者未満のクレクレ君はなんなの?
自分で作る気ないならPythonじゃなくて他所でGoogleの使い方教えてもらえよ

14 :デフォルトの名無しさん:2014/08/03(日) 13:34:58.83 ID:2WFJIVoF
>>11
英語苦手ならPythonはやめといた方がいいよ

15 :デフォルトの名無しさん:2014/08/03(日) 14:07:07.05 ID:+KLBY5j7
>>10
悪役商会って俳優団体に顔面陳列罪ってのがいてだな

16 :デフォルトの名無しさん:2014/08/03(日) 14:23:03.31 ID:T59meZIw
>>11
馬鹿には無理

17 :デフォルトの名無しさん:2014/08/03(日) 14:29:33.86 ID:+KLBY5j7
>>12
正直わざわざ地雷原に踏み込む自殺志願者にしか見えないよね
そんな馬鹿救ってやる気がおきるはずもない

18 :デフォルトの名無しさん:2014/08/03(日) 20:14:42.16 ID:mooYogGV
numpyとmatplotlibを調べなきゃーと思いつつも手が動かない
numpyの配列が使えて、matplotlibで棒グラフと折れ線グラフを出したいだけなのだけど
参考にしやすいサイトありませんかね・・・

というかPythonの普通のオブジェクトの理解もまだ出来てないのに
いきなり外部ライブラリにいくのは無理があるのかなあ

19 :デフォルトの名無しさん:2014/08/03(日) 20:26:25.78 ID:+KLBY5j7
それぞれのチュートリアルの1ページ目読めば事足りんじゃね
numpyはthe basicsだけ読めばいいような気もする

http://wiki.scipy.org/Tentative_NumPy_Tutorial#head-6a1bc005bd80e1b19f812e1e64e0d25d50f99fe2
http://matplotlib.org/users/pyplot_tutorial.html

matplotlibのチュートリアルの中ではnumpy使ってるところもある

20 :デフォルトの名無しさん:2014/08/03(日) 20:47:51.24 ID:mooYogGV
>>19
ありがとう、ここのthe basicsを勉強してからmatplotlibに行こうと思います
この位の量ならなんとかなりそうな気がします

matplotlibの公式サンプルは試していたのですが
numpyが前提な感じなので先にmatplotlibにいくと辛い感じでした
せめてthe basicsを読んでから行くことにします

ありがとうございました!

21 :デフォルトの名無しさん:2014/08/03(日) 21:19:44.51 ID:mooYogGV
追記で原因が分かったので・・・

from numpy import *
この辺の理解があやふやだったみたいで(matplotlibのサンプルでもこの系統で四苦八苦していました)
今は理解しましたが、表記は簡単だけど、対話モード以外でこれを使うことはあるのだろうか・・・

他の言語は少し触ったことはあるのですが、Python自体の初心者なので
import numpy as np
みたく頭の中で翻訳して
np.array([1,2,3,4])
で実際書いて練習して見ることにします

Pythonの配列型は大分他の言語と変わっている気がするので
それとの違いなんかも一緒に違いを踏まえながら勉強してみます

一年後にはネットワーク関係のスクリプトも組めるようなんとかしたいですのですが
ここで詰まっているようだと大分先は長そうだ・・・orz

22 :デフォルトの名無しさん:2014/08/03(日) 23:11:57.77 ID:aN4Ndech
GAEならpython2だろ

23 :デフォルトの名無しさん:2014/08/03(日) 23:50:20.18 ID:YEfQO8dP
初心者です。前々から誰かに訊いてみたかったんですが
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.show()
みたいな書き方をちょっと気持ち悪く感じて、
myplot = plt.Plot()
myplot.plot([1,2,3])
myplot.show()
のように、なにかしらのインスタンスを作ってそのメソッド呼ぶ感じでプロットしていきたい
というように感じることがあるんですが、
これは「その感覚はないわ〜」みたいな感じ、それとも「あーわからんじゃない」みたいな感じですか?

24 :デフォルトの名無しさん:2014/08/03(日) 23:52:02.01 ID:+KLBY5j7
その状況ならその感覚はない
myplotが状態を持ってるようには見えないから

25 :デフォルトの名無しさん:2014/08/03(日) 23:59:04.93 ID:+KLBY5j7
ただし、モジュール関数にするとimportした時に特大のオーバーヘッド生じるような場合なら
そのパターンは十分あり得る

26 :デフォルトの名無しさん:2014/08/04(月) 00:48:44.87 ID:CJ83fxk4
>>23
C/FORTRAN 向け科学技術計算パッケージのプロットライブラリや
gnuplot を使った経験があれば、matplotlib は素直な設計だから、
「その感覚はないわ〜」みたいに感じる

ただ最近はオブジェクト指向の考え方が普及しているから、
上記の手続き型プロットライブラリを気持ち悪く感じる人がいても
「あーわからんじゃない」みたいに感じる

たとえば「手元にX-Yプロッタ装置を1台だけ所有していて、
その装置にあれこれコマンド(=手続き)実行を命令している.....」
みたいな感じで考えればいいんじゃないかと思う

27 :デフォルトの名無しさん:2014/08/04(月) 08:12:31.68 ID:MisW0pwU
設計思想の古いライブラリ由来のものはそういうものだと思って使うしかないな
OpenGLとかもキモい

28 :デフォルトの名無しさん:2014/08/04(月) 08:48:39.79 ID:fW6TrluV
OpenGL は設計が古いのもあるかも知れないけど
当時の感覚からしても設計思想自体ちょっとダサい方だと思う

29 :デフォルトの名無しさん:2014/08/04(月) 11:10:44.04 ID:VkhvqJe+
>>11
#coding:utf-8
import urllib

keyword = u"テスト"
print urllib.urlencode(keyword.encode('utf-8'))

30 :デフォルトの名無しさん:2014/08/04(月) 11:33:17.60 ID:5GCVsUHq
>>29
そいつ>>13が指摘してる前スレで2ch書き込みスクリプトくれくれ言ってたやつだぞ
2ch荒らすのに使うの見え見えなやつを手助けするなよ

31 :デフォルトの名無しさん:2014/08/04(月) 12:11:45.07 ID:TGYEvOJ0
findUnvisitedChildってなんですか?ググっても情報ないんですけど

32 :デフォルトの名無しさん:2014/08/04(月) 12:19:40.66 ID:TGYEvOJ0
あとすいませんStack()ってなんてライブラリですか?
http://ja.wikipedia.org/wiki/%E6%B7%B1%E3%81%95%E5%84%AA%E5%85%88%E6%8E%A2%E7%B4%A2

33 :23:2014/08/04(月) 12:54:29.55 ID:WexAwjaP
>>24-28
ありがとうございます。とくに >>26 さん親切にどうもありがとう。
だいぶ雰囲気掴めたと思います。

34 :デフォルトの名無しさん:2014/08/04(月) 13:41:03.22 ID:VkhvqJe+
>>30
領海

35 :デフォルトの名無しさん:2014/08/04(月) 19:50:55.97 ID:z+yz5IZL
10年以上前にWindowsプログラムで遊んでいた時
OpenGLの他にDirect3Dしか選択肢がなくてなんとなくDirectXを選んだけど
公開サンプルソースの少なさに泣いたのを思い出して鬱になった
というか今学問系だとどういう3Dライブラリを使うのが普通なの?

ってPython関係ないな

36 :デフォルトの名無しさん:2014/08/04(月) 23:21:09.94 ID:J4k0EnNa
http://codepad.org/UITexHiK
↑リストを使ったキューをfrom collections import dequeを使ったものに書き換えました↓
http://codepad.org/8NGcgQ5h
TypeError: 'int' object is unsubscriptableが出たんですけどどうか着替えたらいいのか教えてください

37 :デフォルトの名無しさん:2014/08/04(月) 23:21:46.19 ID:J4k0EnNa
どうか着替えたら

どう書き換えたら

38 :デフォルトの名無しさん:2014/08/05(火) 00:36:25.51 ID:pv4OEjEt
a = 5
for i in range(0, a, 1):
print(i)
a = 3
途中でaを3に変えたのに0 1 2 3 4と表示されます
なぜですか?

39 :デフォルトの名無しさん:2014/08/05(火) 00:36:34.21 ID:HLOzo43t
q.append(v)→q.append(newPath)

40 :デフォルトの名無しさん:2014/08/05(火) 01:15:43.70 ID:jUXvba1w
>>38
それでrange()の挙動が変わるような実装がクソめんどくさそうな仕様の言語ってあんの?

41 :デフォルトの名無しさん:2014/08/05(火) 02:47:27.94 ID:+4GKMU4F
>>38
正確な説明とはいえないけど、変数自体ではなく、変数に入っているモノが関数に渡される
2行目のrange()にはaではなく5を渡している
4行目でaに3を入れなおしてもrange()に渡した5には影響しない

42 :デフォルトの名無しさん:2014/08/05(火) 08:04:43.14 ID:v7EbVobV
なるほどたしかに
たとえばPHPならこうやると0 1 2って表示されますが
$a = 5;
for ($i=0; $i<$a; $i++){
$a = 3;
echo $i;
}
pythonでやる場合は
a = 5
i = 0
while a > i:
print(i)
a = 3
ってやる方法しか無いでしょうか?

43 :デフォルトの名無しさん:2014/08/05(火) 08:20:44.86 ID:0Nh3i6Wx
>>42
a = 5
for i in range(a):
 if i >= a:
  break
 print(i)
 a = 3

44 :デフォルトの名無しさん:2014/08/05(火) 09:38:36.40 ID:Hz72ppwZ
>>38の質問をはっきりさせた方がいいと思う
for inがわからないという事なのか。
それとも、↓のlist(r)の出力がa=3した後も変わらない事を何故かと聞いてるのか。

>>> a = 5
>>> r = range(a)
>>> list(r)
[0, 1, 2, 3, 4]
>>> a = 3
>>> list(r)
[0, 1, 2, 3, 4]

あと、ループ内でaを再定義するぐらいなら、ループ入る前にやっとけよって思いました

45 :デフォルトの名無しさん:2014/08/05(火) 10:02:26.44 ID:0Nh3i6Wx
見返したら>>43はマズイな
import sys
for i in range(sys.maxsize):
aもiも変更したいならwhileだな

46 :デフォルトの名無しさん:2014/08/05(火) 20:49:22.56 ID:+4GKMU4F
>>42
ループの終了条件を変えられる関数は作れるけど、Pythonのfor文の流儀に反している気がしてお勧めできない

def my_range(cond):
 i = cond[0]
 while i < cond[1]:
  yield i
  i += cond[2]

c = [0, 5, 1]
for i in my_range(c):
 print(i)
 c[1] = 3

47 :デフォルトの名無しさん:2014/08/05(火) 21:08:55.48 ID:3MsCZ4lI
>>39
そこは関係ないようです

48 :デフォルトの名無しさん:2014/08/05(火) 21:38:14.43 ID:0mdzPr1d
>>47
このスクリプトで q がどうなってて、従って path に何が入ることになるかは理解できてますか?

49 :デフォルトの名無しさん:2014/08/05(火) 22:12:26.80 ID:HLOzo43t
>>47
わかった
>>39のに加えてdequeの初期化の仕方が間違ってる

deque([start])→deque([[start]])
http://codepad.org/RGKUJCCu

50 :デフォルトの名無しさん:2014/08/06(水) 09:50:31.72 ID:4kkHNvLc
>>46
>Pythonのfor文の流儀

なにそれkwsk

51 :デフォルトの名無しさん:2014/08/06(水) 19:35:59.89 ID:IBfbXB7R
Pythonで計算したデータをJavaに渡したいのですがどうするのがよいでしょうか?
ファイルに書き出すくらいしか分からないのですが

52 :デフォルトの名無しさん:2014/08/06(水) 20:19:09.28 ID:6xA8BSBL
RPC
RMI

53 :デフォルトの名無しさん:2014/08/06(水) 22:37:34.13 ID:Hc5bYjkL
>>51
ありがとうございます

54 :デフォルトの名無しさん:2014/08/08(金) 12:19:52.03 ID:2ZXfhlXJ
pythonからctypesでdll呼んでdll側のクラスを引き継ぐことできる?
やっぱりpythonでdll呼ぶようのdllを作ったほうがいいのかな

55 :デフォルトの名無しさん:2014/08/08(金) 13:58:01.23 ID:LVetnHZi
ミラーニューロン

56 :デフォルトの名無しさん:2014/08/08(金) 19:03:08.34 ID:YG2OXIF+
IDLEでのPythonファイルの作り方をここのwiki見てやっと知ったぜ・・・
長い長い道のりだった

対話モードみたくインデントを自動でしてくれなくてしょんぼりしてるけど

57 :デフォルトの名無しさん:2014/08/09(土) 00:29:01.22 ID:l2WdSHx9
https://www.youtube.com/watch?v=ZYShUXFVLvQ
https://www.youtube.com/watch?v=oi2PEmrOs3o
https://www.youtube.com/watch?v=u4KcM6EBOcM

58 :デフォルトの名無しさん:2014/08/09(土) 06:49:31.07 ID:l2WdSHx9
https://www.youtube.com/watch?v=nTGCZAHm6ao

59 :デフォルトの名無しさん:2014/08/09(土) 11:01:15.36 ID:cMAC0zr6
>>57-58
糞過ぎワロス

60 :デフォルトの名無しさん:2014/08/09(土) 13:46:44.09 ID:t54vu+MJ
知らんがPygameってまともな速度出るの?
GDI使ってるのと変わんないんじゃないかって気がするけど

61 :デフォルトの名無しさん:2014/08/09(土) 14:02:57.80 ID:odLGSBLG
DirectXやOpenGLなどグラボの恩恵受けられるってこと?

62 :デフォルトの名無しさん:2014/08/09(土) 14:04:57.17 ID:lFfYI/Nk
GDIで速度的に十分じゃないか。
もっと遥かに遅いFlashですらゲーム作れるんだし。

63 :デフォルトの名無しさん:2014/08/09(土) 14:08:47.59 ID:pfgkOg0q
どんなゲームかによるべさ
少なくとも何もできないようなライブラリが数年にわたって精力的に開発されているようなら
それは正気の沙汰じゃない

64 :デフォルトの名無しさん:2014/08/09(土) 14:29:00.61 ID:cMAC0zr6
日本語でおながいしやす

65 :デフォルトの名無しさん:2014/08/09(土) 14:53:51.79 ID:pfgkOg0q
ニホンゴワカリマセン

66 :デフォルトの名無しさん:2014/08/09(土) 15:27:47.30 ID:l2WdSHx9
動画自分で作ってみれば大変さ判ると思う

67 :デフォルトの名無しさん:2014/08/09(土) 15:51:28.58 ID:odLGSBLG
速度が問題になるようならpygameよりpython自体の頭打ちが
先に問題になりそう。
その場合cythonやnumpy使うことになると思うが。

経緯的にはPySDL > pygame > PySDL2
ってまた元のさやに戻りつつあるんだっけ?

68 :デフォルトの名無しさん:2014/08/09(土) 17:38:17.96 ID:fubXRsBH
元のさや姉

69 :デフォルトの名無しさん:2014/08/09(土) 21:24:42.48 ID:K1gOBgfb
CodeEvalのFizzBuzzで90点しか出ないのですが、何が問題なのかわかる方教えてくださいませんか?
https://www.codeeval.com/open_challenges/1/

import sys
test_cases = open(sys.argv[1], 'r')
for test in test_cases:
(F, B, N) = map(int, test.split())
FB = F * B
for num in range(1,N+1):
if num > 1:
print(" ",end = "")
if num % (FB) == 0:
print('FB', end ="")
elif num % F == 0:
print('F', end = "")
elif num % B == 0:
print('B', end = "")
else:
print(num, end = "")
print("")
test_cases.close()

70 :デフォルトの名無しさん:2014/08/09(土) 21:40:51.15 ID:pfgkOg0q
何が原因か告げない例外メッセージと同じですこぶる腹の立つパターンだ

71 :デフォルトの名無しさん:2014/08/09(土) 21:45:26.46 ID:FjFHc6TX
2 2 10 とかFとBが同じときの考慮不足

72 :デフォルトの名無しさん:2014/08/09(土) 22:58:20.66 ID:K1gOBgfb
>>70
CodeEval自体、スコアは表示されるけれども、
どのテストがエラーなのか表示されないので困っていたのです。すみません。

>>71
ありがとうございます。どうやらそのようです。
確かに、2 2 x だと、4の倍数しかFBにならないですね、これ。
if num % F == 0 and num % B == 0:
  print('FB', end="")
でいいのかな…?

73 :デフォルトの名無しさん:2014/08/09(土) 23:41:03.41 ID:K1gOBgfb
>>71
if num % F == 0 and num % B == 0:
  print('FB', end="")
で、無事100点取れました。
ありがとうございました。

74 :デフォルトの名無しさん:2014/08/10(日) 08:22:41.98 ID:frgBbTF3
仕様満たしてないから減点されたのを
どこが原因か判らんとか言いがかりもいいところ

75 :デフォルトの名無しさん:2014/08/10(日) 10:04:00.43 ID:zo9IFsz+
言いがかり?
どっちかって言うと >>74 の方が言いがかり臭いが

76 :デフォルトの名無しさん:2014/08/14(木) 00:51:32.26 ID:ztsop+v9
まあこの手のコード評価サイトってくだらない。
githubのアカウントでも見た方が100倍有意義。

77 :デフォルトの名無しさん:2014/08/14(木) 00:55:21.75 ID:IvD2O8+W
どこのコードが参考になる?
Googleのは綺麗だけど普通のコードだったなぁ

78 :デフォルトの名無しさん:2014/08/14(木) 01:01:52.85 ID:ztsop+v9
ちげーよ個人のスキルを判断するのにって意味だよクソマヌケスポンジ脳みそ野郎

79 :デフォルトの名無しさん:2014/08/14(木) 01:09:37.28 ID:eZDslbUX
[[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]] を

[[2, ['D']], [8, ['C']], [12, ['D', 'H', 'S']]]


とするにはどうコードを書けばいい?

80 :デフォルトの名無しさん:2014/08/14(木) 01:41:33.89 ID:czQ8Caut
a=[]
str="0123456789"

for i in range(10):
a.append(strのi番目の文字を数字として代入)

ってどうやればいいですか・・・
str[i]でi番目の文字を数字としては取り出せないですよね?

0~9までの数字で作られた文字列strのi番目の文字(数字)を
数字として配列a[i]に入れたいのですが

81 :デフォルトの名無しさん:2014/08/14(木) 01:45:20.01 ID:Z2XhePMe
>>80
ドキュメント読む気ねえならせめて自分で一回試してから来いカス

82 :デフォルトの名無しさん:2014/08/14(木) 02:13:38.80 ID:RnqN7Gme
>str="0123456789"
なぜ、文字列を使うの?

最初から、0〜9の数値を入れた配列(数値Array)を使えば?

83 :デフォルトの名無しさん:2014/08/14(木) 02:20:02.65 ID:Sj8LF1t/
>>79
http://ideone.com/8nnDa8

そもそも辞書型で管理したほうがよいのでは

84 :デフォルトの名無しさん:2014/08/14(木) 02:33:48.17 ID:XQOz8skT
>>80
>>> str = "31415926"
>>> a = list(str) # 数字としてリストに入れる
>>> a = [int(s) for s in str] # 数値に変換してリストに入れる

85 :デフォルトの名無しさん:2014/08/14(木) 02:43:02.34 ID:Z2XhePMe
バカどもはいますぐ死ねよ。
str型はイミュータブルなシーケンス。

> str = "31415926"

の後

>>>str[3]

とかしてみろ低能ども。
そしてお前ら10年ROMれ。

86 :デフォルトの名無しさん:2014/08/14(木) 03:16:36.47 ID:9X7JikwT
>>80
文字列を数値にするときはintを使う
http://docs.python.jp/3.3/library/functions.html#int

87 :デフォルトの名無しさん:2014/08/14(木) 03:17:50.48 ID:/Ygxu31/
余裕無い奴がいるな

88 :デフォルトの名無しさん:2014/08/14(木) 03:19:31.89 ID:czQ8Caut
>>85
出来ると仕様を理解して使うとは違うと思うの
試して動いたからおkってのは愚の骨頂じゃない

89 :デフォルトの名無しさん:2014/08/14(木) 03:56:24.39 ID:CQ3J9/oq
a = map(int, '31415927')

90 :デフォルトの名無しさん:2014/08/14(木) 05:14:58.78 ID:CAjda4jb
>>87
ID が正規表現リテラルです。これより異端審問を開始します

91 :デフォルトの名無しさん:2014/08/14(木) 07:49:41.23 ID:smA0xrmN
>>72さん
>>83さんの案でいきました。

>>> from collections import defaultdict
>>> import pprint
>>> dd = defaultdict(list)
>>> LL = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
>>> for x in LL:
... key = x[0]
... value = x[1][0]
... dd[key].append(value)
...
>>> pprint.pprint(dd)
defaultdict(<class 'list'>, {8: ['C'], 2: ['D'], 12: ['D', 'H', 'S']})

>>90さん
>>> "str" in dir(__builtins__)
True

str
は、予約されているので、変数名として使用するのを止めましょう。

>>> s = "0123456789"
>>> a = []
>>> s[1]
'1'
>>> for i in range(10):
... n = int(s[i])
... a.append(n)
...
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

92 :デフォルトの名無しさん:2014/08/14(木) 07:59:40.47 ID:smA0xrmN
訂正

>>91
>>83さん
×>>72さん

93 :デフォルトの名無しさん:2014/08/14(木) 08:42:33.11 ID:CAjda4jb
上で出てるけど添え字使わずに map したり内包表記使ったほうがいい
あと str は予約語なりキーワードではない

94 :デフォルトの名無しさん:2014/08/14(木) 08:46:22.89 ID:JEIgFwEX
LL = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
LL2 = [[c, [f for d, e in LL if d==c for f in e]] for c in set(a for a, b in LL)]
print(LL2)

a = []
s = "0123456789"
a[:] = [int(c) for c in s]
print(a)

95 :デフォルトの名無しさん:2014/08/14(木) 12:06:05.09 ID:sq+uQd00
>>79
関数型プログラミング・スタイルで....

http://play.island.ac/codepaste/code?id=1589

96 :デフォルトの名無しさん:2014/08/14(木) 12:41:41.25 ID:sq+uQd00
>>95を訂正
http://play.island.ac/codepaste/code?id=1590
(配列からタプルへの暗黙の型変換を排除した)


あと、せっかく Python にはタプルがあるのだから、
二項関係(=ペア)はタプルで表現したほうが
コードにメリハリがついて読みやすくなると思う

LL = [(2, ['D']), (8, ['C']), (12, ['D']), (12, ['H']), (12, ['S'])]

97 :デフォルトの名無しさん:2014/08/14(木) 13:20:38.06 ID:sq+uQd00
辞書や集合を利用する場合には、解きたい課題の仕様に応じて
適切なデータ構造を選ぶ必要がある
たとえば >>83,94 は辞書または集合を利用しているから、
ペアが連続していなくともキーが一致していれば値をマトメてしまう

>>83 のケース(辞書):
  L = [[12, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  # 途中は省略
  print map(list, d.iteritems())
  # => [[12, ['D', 'D', 'H', 'S']], [8, ['C']]]

>>94 のケース(集合):
  LL1 = [[12, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  LL1_2 = [[c, [f for d, e in LL if d==c for f in e]] for c in set(a for a, b in LL)]
  print(LL1_2)
  => [[8, ['C']], [12, ['D', 'D', 'H', 'S']]]

もしもキーの一致よりペアの連続性を優先する仕様であれば、>>96 になる

>>96 のケース(配列):
  arr2 = [[2, ['D']], [8, ['C']], [12, ['D']], [12, ['H']], [12, ['S']]]
  print(f(arr2))
  => [[12, ['D']], [8, ['C']], [12, ['D', 'H', 'S']]]

どのコードの振る舞いが適切かは、出題者の >>79 だけが知っている

98 :デフォルトの名無しさん:2014/08/14(木) 13:44:29.82 ID:sq+uQd00
>>97 の末尾にあるコードの一部を訂正(コピペのミス)

X: arr2 = [[2, ['D']], ....]
O: arr2 = [[12, ['D']], ....]

99 :デフォルトの名無しさん:2014/08/14(木) 19:56:05.14 ID:sq+uQd00
もしも仕様が:
 「要素間に順序性がなく、なおかつあるキーにおける要素間で重複を許さない」
であれば、
 「集合を値とする辞書」
というデータ構造が適切になる
この場合、>>96 のコードはずっと単純になる
  http://play.island.ac/codepaste/code?id=1591


なお、さらに短く書こうと(>>94 を参考にして)辞書内包表記に挑戦してみたけど、
型エラーを回避できず、挫折した(Python 2.7 と 3.3 で確認)

>>> {(k, set(v)) for (k, v) in [[1, 'A'], [2, 'B']]}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <setcomp>
TypeError: unhashable type: 'set'

この型エラーの回避方法を知っている人がいれば、教えて欲しい

100 :デフォルトの名無しさん:2014/08/14(木) 20:14:48.54 ID:31aNAkg3
馬鹿には無理

101 :デフォルトの名無しさん:2014/08/14(木) 20:42:36.28 ID:JEIgFwEX
>>99
辞書のキーをkに、値をset(v)にしたいという意味なら
{k:set(v) for k, v in [[1, 'A'], [2, 'B']]}

102 :デフォルトの名無しさん:2014/08/14(木) 22:18:32.96 ID:sq+uQd00
>>101
ありがとうございます
おかげで >>94 を「集合を値とする辞書」に書き換えることができました

LL3 = {c: set([f for d, e in LL if d==c for f in e]) for c in set(a for a, b in LL)}

ただ、内包表記だと入力リストの各要素の反復について更に全要素を反復する(?)ので、
入力リストの大きさに対して処理時間が指数関数的に長くなるように見えます(???)
これを何とか一重の反復にできないか格闘しいぇみたけど、自分では無理でした
まあスクリプト言語で性能うんぬんを考える事が間抜けかもしれませんが....

103 :デフォルトの名無しさん:2014/08/14(木) 23:28:54.58 ID:XQFcvtlU
from itertools import groupby
from operator import itemgetter

d = {k: set(x for _, xs in g for x in xs)
     for k, g in groupby(LL, itemgetter(0))}

104 :デフォルトの名無しさん:2014/08/15(金) 01:35:13.72 ID:y89IBkND
>>100
出た〜馬鹿の一つ覚えw

105 :デフォルトの名無しさん:2014/08/16(土) 02:12:20.20 ID:nQiWsyll
やっぱりおっぱいそんスレにはエロが必要
あは〜ん

106 ::デフォルトの名無しさん:2014/08/16(土) 20:22:20.73 ID:oKz+epnN
なんか映像関係と相性のいいプログラム言語らしいけど
具体的に何ができるの?

107 :デフォルトの名無しさん:2014/08/16(土) 21:29:41.92 ID:nQiWsyll
エロCG作成が可能

108 :デフォルトの名無しさん:2014/08/16(土) 21:35:13.48 ID:hV65QHhV
>>106
できるも何も、Pythonは映像を扱う機能は一切持っていませんぞ

109 :デフォルトの名無しさん:2014/08/16(土) 22:08:04.08 ID:ewaXkA++
エロ動画のクロールしやすい

110 :デフォルトの名無しさん:2014/08/16(土) 22:38:35.06 ID:Ut3Ho2cw
そう、pythonならね

111 :デフォルトの名無しさん:2014/08/16(土) 22:40:14.86 ID:nQiWsyll
使い道が増えたな

112 :デフォルトの名無しさん:2014/08/17(日) 07:47:50.63 ID:1D4ghaF5
>>86
ありがとうございます
0~9とa~fまでの文字で0~15の数字を表し、それで作られた文字列への拡張もいけました

実際にはstrnはランダムで0^9かa^fの文字を任意の数だけ入れますが
strn="0123456789abcdef"
n=16
a=[]

for i in range(len(strn)):
a.append(int(strn[i],base=n))

for i in range(len(strn)):
print(a[i])

>>89,91,93,94
mapも便利そうなので後で仕様を調べて練習してみます
ちょっと難しそうに見えますが、応用範囲が広そうでいいですね
ありがとうございます



後はファイルに記録された8文字の文字列を任意の数読み込んで
それぞれの文字列について平均、最大を出すという操作を作ります
2日位で出来るといいなっ!

113 :デフォルトの名無しさん:2014/08/17(日) 08:36:55.71 ID:S2ZyfJtL
>>112
for文と内包表記の使い方を覚えるともっとシンプルに書けるようになる
strn = "0123456789abcdef"
n = 16
a = [int(s, base=n) for s in strn]

for num in a:
 print(num)

114 :デフォルトの名無しさん:2014/08/17(日) 12:43:21.18 ID:jHvAACNT
PYTHON 2.7 で 2000Hバイトのバイナリデータ(データはすべてFF)を作成したいと思います。
例が示されているサイト等があれば教えていただけないでしょうか。

115 :デフォルトの名無しさん:2014/08/17(日) 12:50:52.28 ID:dhYg7xlG
>>114
open("hoge.bin", "wb").write("\xFF" * 0x2000)

116 :デフォルトの名無しさん:2014/08/17(日) 14:59:24.06 ID:jHvAACNT
>>115
ありがとう。
うまくいきまいした。

117 :デフォルトの名無しさん:2014/08/17(日) 17:48:26.33 ID:1D4ghaF5
>>113
ありがとうございます
for文のそういう書き方や、内包表現を覚えたほうが直感的に書けそうですね
他人のソースがそれで書かれていたら直ぐ読める自信はありませんが、
自分で後で読む用途だとそちらのほうが分かりやすそうです

仕様を理解しつつ具体的に練習して身に付ける方向でやってみようと思います
いつか恩返しが出来るようなれるといいな

118 :デフォルトの名無しさん:2014/08/18(月) 08:06:33.74 ID:51w8WhmP
今時C-styleのforってどこで覚えてくるんだろう
やっぱCか

119 :デフォルトの名無しさん:2014/08/18(月) 19:28:55.88 ID:K5hwgM95
>>113
>for num in a:
> print(num)
print(*a, sep="\n")

ループ処理いらん

120 :デフォルトの名無しさん:2014/08/18(月) 22:38:58.65 ID:HLTZAqws
>>> l = ["a", "b" "c"]
>>> l
>>> ['a', 'bc']
なんでこうなるんだろ
ふつうにエラーにしたほうがいいと思うんだけど
なんかメリットあるんだろうか

121 :デフォルトの名無しさん:2014/08/18(月) 23:01:35.09 ID:K5hwgM95
>>120
文字列リテラルの仕様
>単式の一部であり間に空白のみを含む文字列リテラルは、一つの文字列リテラルに暗黙に変換されます。
http://docs.python.jp/3.4/library/stdtypes.html#text-sequence-type-str
>>> "b""c"
'bc'

メリットは何だろ。文字列結合するのにそのまま並べられる?

122 :デフォルトの名無しさん:2014/08/18(月) 23:04:05.12 ID:7X6VrPC7
pack の引数のコメント書くのとかに使える
あと変数名 l はあんまりよくない

123 :デフォルトの名無しさん:2014/08/18(月) 23:04:33.51 ID:FhzY8b4Z
文字列リテラルを並べると一まとめになるのはC言語系の仕様だろ

124 :デフォルトの名無しさん:2014/08/18(月) 23:07:27.74 ID:yNFe71fP
言語リファレンスの方が
ttp://docs.python.jp/3/reference/lexical_analysis.html#string-literal-concatenation
主になんがーい文字用じゃないかね

125 :デフォルトの名無しさん:2014/08/18(月) 23:10:21.53 ID:mqTO4sep
PEP8に頑なに従おうとしたときすごく助かるよ。

126 :デフォルトの名無しさん:2014/08/20(水) 12:51:32.19 ID:T9kvMX30
なんてこったずっと + 書いてたわ
("This" +
"is a very long line")

127 :デフォルトの名無しさん:2014/08/20(水) 13:02:45.35 ID:GuTaDa5L
"This" \
"is a very long line"

128 :デフォルトの名無しさん:2014/08/20(水) 16:27:20.44 ID:SAxc93tu
Thisis a very long line

129 :デフォルトの名無しさん:2014/08/20(水) 19:09:26.04 ID:FiV4cMVv
横80文字なんて、ワイドディスプレイが普及した今の時代に守る必要はない
あれはパンチカードやキャラクタディスプレイ時代の習慣だ
頻繁に改行することで見にくくなったりエンバグするリスクの方が高い

130 :デフォルトの名無しさん:2014/08/20(水) 19:11:44.34 ID:vOLIf7/C
まあ普通に書けば80桁を越える事なんか滅多にない訳だが

131 :デフォルトの名無しさん:2014/08/20(水) 19:31:39.62 ID:PK2Z8X8/
小さめのノートでターミナル横二分割すると80文字でギリぐらい

132 :デフォルトの名無しさん:2014/08/20(水) 20:44:06.63 ID:FiV4cMVv
>>130
自分はprintで超えまくるよ
Python3になって、printにカッコを使うようになったのと
format()を併用するようになったことが実に痛い

133 :デフォルトの名無しさん:2014/08/20(水) 20:57:52.89 ID:5yBlZ/IM
内包表記はよく80越えするな

134 :デフォルトの名無しさん:2014/08/21(木) 21:04:40.79 ID:hkentYzf
内包表記も print の括弧もその中で改行できるから逆にめったに超えない

135 :デフォルトの名無しさん:2014/08/21(木) 21:32:17.51 ID:EEmj9GE5
そうだよな、改行した方が読みやすい。
わざわざ一行で書くとか何の苦行だよ?

136 :デフォルトの名無しさん:2014/08/21(木) 21:39:03.62 ID:MhWq0pC7
俺の場合、改行するとそこで思考が途切れて
コードが読めなくなるんだよ
printで文字列を二行に分けて、なおかつ後ろに
formatが付いていたりするともう大変で、視線が
上と下を行ったり来たりしているうちに発狂する

137 :デフォルトの名無しさん:2014/08/22(金) 00:17:18.47 ID:8tYB1M2a
今時のモニタだと、横に400-500文字表示できるから、
短くてもバランスが悪いんだよね

138 :デフォルトの名無しさん:2014/08/22(金) 08:34:47.26 ID:FzGWd/ot
頑なにコーデイングルール守ろうとしてイライラしてる奴を眺めるのが最近の趣味

139 :デフォルトの名無しさん:2014/08/23(土) 12:12:00.39 ID:G8fmeh+A
Python初心者です。
reモジュールはスレッドセーフですか?
複数のスレッドから同時に正規表現を扱いたいのでスレッドセーフでないと困っちゃいます

140 :デフォルトの名無しさん:2014/08/23(土) 12:41:33.64 ID:7Oq9lst2
こういうファイルがあるとして(さしすせその後も改行があります)
str1.txt
あいうえお
かきくけこ
さしすせそ


次のように文字列をlist_strにリストとして格納します
list_str=[]

f=open()
list_str=f.readlines()
f.close()

で、改行込みの文字列のリストがlist_strに代入されますが
そこから改行文字を取り除きたいです
どうやるのが尤も一般的でしょうか?

141 :デフォルトの名無しさん:2014/08/23(土) 13:01:38.90 ID:FMBFCiJo
>>140
with open("str1.txt", "r", encoding="utf-8") as f:
list_str = [line.strip() for line in f.readlines()]
print(list_str)

python3だとこんな感じ

142 :デフォルトの名無しさん:2014/08/23(土) 13:15:42.30 ID:+i5yzvna
.strip() だと先頭/末尾の空白やタブまで削除されてしまうから
.rstrip("\r\n") の方がいいよ

143 :デフォルトの名無しさん:2014/08/23(土) 16:30:53.87 ID:gEc2W+i3
replace でいいだろ

144 :デフォルトの名無しさん:2014/08/23(土) 19:15:01.22 ID:7Oq9lst2
>>140-141
ありがとうございます
大分酷い書き方になっていると思いますが、思ったような動作になりました
洗練された表現は後で周辺も調べつつ取り入れて見ようと思います
また、ここがおかしいという指摘あれば、よろしければご教授下さいm(__)m

list_str = []

f = open("str1.txt")
list_str = f.readlines()
f.close()
print(list_str)

for i in range(3):
line = list_str[i].strip()
# line = list_str[i].rstrip("\r\n")
list_str[i] = line
print(list_str)

all_str = "".join(list_str)
print(all_str)

>>>
['あいうえお\n', 'かきくけこ\n', 'さしすせそ\n']
['あいうえお', 'かきくけこ', 'さしすせそ']
あいうえおかきくけこさしすせそ

145 :139:2014/08/23(土) 19:24:32.33 ID:3qnNklS6
誰かわかる人いませんか?

146 :デフォルトの名無しさん:2014/08/23(土) 20:14:09.61 ID:+i5yzvna
>>145
わざわざスレッドセーフするためのグローバルインタプリタロックだし
JavaScriptみたいにグローバルな正規表現オブジェクトを使い回す訳でもないし
大丈夫でしょ

グローバルインタプリタロックがあるから処理時間短縮目的ならマルチプロセス化する必要あるよ

147 :デフォルトの名無しさん:2014/08/23(土) 20:59:56.96 ID:FMBFCiJo
>>144
f = open("str1.txt")
list_str = f.readlines()
f.close()

with open("str1.txt") as f:
  list_str = f.readlines()
にするといちいちcloseよばなくてすむから楽

あと,テキストをリストに移すときは普通は一気にやる
list_str = []
with open("str1.txt") as f:
  for line in f.readlines():
    list_str.append(line.strip())
print(list_str)

148 :デフォルトの名無しさん:2014/08/23(土) 21:06:16.75 ID:i5J5SJBK
>>142,144
Pythonは>>144ででてるようにテキスト読み込み時に改行文字を\nに変換するから
.strip("\n") で良い。

149 :デフォルトの名無しさん:2014/08/23(土) 21:08:47.47 ID:i5J5SJBK
>>147
readlines()でいったん全部読み込んでからそれを for でまわすとか、
for でまわしてリストに append とかバッドノウハウばっか教えんなよ。

150 :デフォルトの名無しさん:2014/08/23(土) 21:16:32.39 ID:Hu2+AkgU
どこがバッドノウハウなのかね
forで回して条件に合う物をリストにappendって
Pyhtonの定番中の定番処理だぞ

151 :デフォルトの名無しさん:2014/08/23(土) 21:37:48.68 ID:+i5yzvna
すぐ加工して破棄するんだし readlines() で全部メモリ上に保持する必要はないってことでしょ
append も、少しずつ加えるよりイテレータや内包表記で一気にリストにする方がメモリ効率がいい

with open("str1.txt") as f:
 list_str = [line.rstrip("\n") for line in f]

152 :デフォルトの名無しさん:2014/08/23(土) 22:02:31.40 ID:FMBFCiJo
リスト内包は>>141で書いたけど
>>144に"洗練された表現は後で周辺も調べつつ取り入れて見ようと思います"ってあるから
本人の書いたコードになるべくあわせて修正した

153 :デフォルトの名無しさん:2014/08/23(土) 22:04:58.66 ID:1z1AuVul
>>149
そんなもん規模次第だろ
数十行程度の設定ファイルとかなら、メモリー効率とか実行速度を気にするレベルじゃないだろうし

154 :デフォルトの名無しさん:2014/08/23(土) 22:15:34.69 ID:3qnNklS6
>>151の方が読みやすいし短いし効率もいいだろ
規模の問題ですらない

155 :デフォルトの名無しさん:2014/08/23(土) 22:26:23.33 ID:Hu2+AkgU
いやいや
内包表記は読みづらいですから

156 :デフォルトの名無しさん:2014/08/23(土) 22:30:44.45 ID:NSY3QuJK
戦の予感

157 :デフォルトの名無しさん:2014/08/23(土) 22:33:30.14 ID:PmTjLBQU
それほど読みづらくはないほうだと思う

158 :デフォルトの名無しさん:2014/08/23(土) 22:36:09.93 ID:Hu2+AkgU
何にでも速度・効率をふりかざし
コードを見れば脊椎反射で批評・添削を加えたがる輩は
それが暴力に近いことだと自覚して欲しい

159 :デフォルトの名無しさん:2014/08/23(土) 22:38:18.68 ID:1z1AuVul
>>154
読みやすいかどうかは人によるし、規模が小さいならどっちでも好きな方でいいだろ

160 :デフォルトの名無しさん:2014/08/23(土) 22:48:29.19 ID:+i5yzvna
読み易さはともかく
readlines() で作られるリストと、加工結果を入れるリストとで、
一時的に本来必要な量の2倍メモリ消費してしまうことには気を付けといた方がいいね
ここ最近、巨大なテキストファイルの加工にPython使ってるけど
そろそろ処理終わったかな〜と見に行くとメモリ不足で止まってたりするw

161 :デフォルトの名無しさん:2014/08/23(土) 22:48:36.35 ID:gEc2W+i3
メモリ云々抜かすなら yield 使え

162 :デフォルトの名無しさん:2014/08/23(土) 22:50:08.39 ID:3qnNklS6
内包表記の方が余計な変数も使わないし簡潔で読みやすいよ

163 :デフォルトの名無しさん:2014/08/23(土) 22:50:15.21 ID:Jwg/Lhcu
>>151 くらいなら一目で理解できるけど、
よほど慣れた人を除けば >>94>>102
無理ゲーな人が大半ではないかと思われ

164 :デフォルトの名無しさん:2014/08/23(土) 23:30:51.50 ID:XzPg74sm
内包表記が適さない場面なら
with open('str1.txt') as f:list_str = map(str.rstrip,f)
で良いじゃん?リストに入れるのが目的ならだけどね

規模が小さかろうとシステムリソースは有限だし
スケーリング可能な最適をチョイスをするのが基本だと思うがね
動けばいいなんて処理を理解しないままもまたバグの元だが

165 :デフォルトの名無しさん:2014/08/23(土) 23:36:23.23 ID:6csT3QKU
>>163
慣れた人というより、もはやサヴァン症候群なんじゃないかと思うレベル。

166 :デフォルトの名無しさん:2014/08/23(土) 23:44:24.92 ID:3qnNklS6
この程度の表記で大騒ぎしすぎだろ
メタプログラミングならもっとヤバいのがいっぱいあるのに

167 :デフォルトの名無しさん:2014/08/23(土) 23:48:37.89 ID:Hu2+AkgU
>>164
話の流れ見えてないだろ
頼まれたわけでもないのに、人のコードに横から口を挟んで
速度・効率のチューニングを始めるのは自重しろと言っているのだよ

168 :デフォルトの名無しさん:2014/08/23(土) 23:57:17.07 ID:Dp/sG2ok
今の流れから言うと(ちなみに)こうするとええでみたいなのはあってもいいんじゃとはおもう

169 :デフォルトの名無しさん:2014/08/24(日) 00:05:43.11 ID:NdITZsIB
>>167
彼のはただの突っ込みあるいは些細な齟齬に見えるが?
話の流れではなく貴方が自分の主張で過剰反応してるだけでしょう?
悪いけどそんな下らんことを議論するつもりはない

170 :デフォルトの名無しさん:2014/08/24(日) 00:11:25.82 ID:frySUXyC
流れは>>144
> また、ここがおかしいという指摘あれば、よろしければご教授下さいm(__)m
からきていると思う

171 :デフォルトの名無しさん:2014/08/24(日) 00:17:22.57 ID:1zGm5FNX
>>167
速度効率の問題というより readlines が余計
f はイテレータ

172 :デフォルトの名無しさん:2014/08/24(日) 00:17:52.28 ID:TeY476kZ
>>166
メタプログラミングって読みにくいコードを書く事じゃないぞ

173 :デフォルトの名無しさん:2014/08/24(日) 00:56:14.63 ID:jWy1bnP0
自己満コードのことですよね分かります

174 :デフォルトの名無しさん:2014/08/24(日) 01:13:41.67 ID:0MtXF8e+
多少冗長でもだれが読んでも一発でわかるコードが最良なんだよ
ド素人が多すぎる

175 :デフォルトの名無しさん:2014/08/24(日) 01:29:48.23 ID:+Pte+GGf
そろそろpass又は馬鹿には無理が現れるころ

176 :デフォルトの名無しさん:2014/08/24(日) 01:53:06.56 ID:Mo/xSCgr
>>174
自分の知識がないのを「多少冗長でも誰が読んでもわかる方が良い」などとトンチンカンな
エスクキューズにするコーダーは100%クズ

177 :デフォルトの名無しさん:2014/08/24(日) 02:05:18.29 ID:VbHcfS42
早速ド素人が釣れたようだなw

178 :デフォルトの名無しさん:2014/08/24(日) 02:06:58.64 ID:jlCuRdJh
初心者の馬鹿が発狂しているな

179 :デフォルトの名無しさん:2014/08/24(日) 02:10:53.57 ID:Mo/xSCgr
>>150
いや、>>147みたいな単純なappendはバッドノウハウ中のバッドノウハウ。
自分が使うのは勝手だが、人にすすめていいコードじゃない。
私バカですと言ってるようなもの。

内包表記がわかりにくい云々とか言ってるのは自分が頭悪いので言語の仕様を使い切れません、
と言ってるのと同じなので、それを人にさらして良い話ではない。
私バカですと言ってるようなもの。

規模の大小とコードの効率や質とは無関係。
人様に見せないでてめえの中だけで自己満足できればいいなら好きにすれば良い話。
でもそれを人前で言うな。
私バカですと言ってるようなもの。

>>140 はその程度の知識はあってやってそうなのに対し、
>>147 が上から目線で>>140よりバカで無駄だらけなコードをひけらかしてるので痛さが際立つ。

180 :デフォルトの名無しさん:2014/08/24(日) 04:05:04.08 ID:jlCuRdJh
結論:このスレは馬鹿の集まり

181 :デフォルトの名無しさん:2014/08/24(日) 04:38:47.54 ID:Mxca/0uN
>>179
単純なappendをバッドノウハウと主張する根拠は?
根拠を述べ、それを皆が納得してくれないと
逆に君がバカだと思われるぜ

182 :デフォルトの名無しさん:2014/08/24(日) 04:44:44.19 ID:jlCuRdJh
はい論破

183 :デフォルトの名無しさん:2014/08/24(日) 05:28:05.91 ID:fB1dx/82
ここ、超初心者用のスレだから、効率まで追求しなくていいと思う。

184 :デフォルトの名無しさん:2014/08/24(日) 05:58:46.88 ID:Mxca/0uN
全くだ
スクリプト言語はお手軽さが命
そもそも内包表記は、rubyに毒されたワンライナー厨の
オナニー用に後から追加された機能だろ?
Pythonの公式ドキュメントにも、内包表記はわかりづらい
うんぬんという記述があったはず

185 :デフォルトの名無しさん:2014/08/24(日) 08:06:45.59 ID:TeY476kZ
もしかして一行で書いた方が効率がいいとか思ってるやついる?

186 :デフォルトの名無しさん:2014/08/24(日) 08:08:25.35 ID:3Y+Mzxe1
>>179
> 規模の大小とコードの効率や質とは無関係。

データの大小で処理方法を変えることは普通にあるだろ。

> 私バカですと言ってるようなもの。

ブーメラン乙 (w

187 :デフォルトの名無しさん:2014/08/24(日) 08:57:04.93 ID:1zGm5FNX
内包表記アレルギーもこまったもんだけど
ループ内でリストに append はバッドノウハウとか言い出すのもなんだな

188 :デフォルトの名無しさん:2014/08/24(日) 09:20:30.22 ID:jWy1bnP0
何を生み出すこともない戦がまだ続いてます
こんなことやるくらいならオナニーでもしていた方がいいでしょうね

189 :デフォルトの名無しさん:2014/08/24(日) 10:07:03.45 ID:2j22PZGE
言い出すもクソも、そもそもバッドノウハウとは真逆のごく自然なやり方だし

190 :デフォルトの名無しさん:2014/08/24(日) 10:08:29.80 ID:gu+/Plpk
通常は人に見せる事も目的に持ちたいけど
思った事を直ぐ記述だと、ある程度の内包表記をしたほうが直感的に書けるだろうし
後からも分かりやすい気がするし・・・

ってよく分からなくなる
ここまでは内包表記をしましょうみたいなコンセンサスがあるといいなって
ある程度以上のレベルになればこちらの表記を採用みたいな
初心者もここまでの内包表記は目指したほうが後から力になりやすいって感じで

逆に内包表記しないほうがいいって感じのものを挙げたほうが良さそうな気もしてきたw

191 :デフォルトの名無しさん:2014/08/24(日) 10:17:31.08 ID:2j22PZGE
内包表記ってループを一行で書いただけだぞ?
初心者だから分からないんじゃない。
読みにくいから分かりにくいんだよ。

192 :デフォルトの名無しさん:2014/08/24(日) 11:04:46.88 ID:87IKCXeE
例えば 0〜99 の数値のリストを作る
x = range(100)
をforで作る人は多分いない。
それはrangeで作られるリストが容易に想像できるから。

複雑な内包表現でもそのようなもの(例えば言葉で説明できるもの)ならループよりも可読性があると思う。
ただし、複雑過ぎると動作を変更しようとしたときに面倒臭い。

193 :デフォルトの名無しさん:2014/08/24(日) 11:21:39.10 ID:gu+/Plpk
>>191

>>144の場合だと
for i in range(3):
line = list_str[i].strip()
list_str[i] = line

>>151>>160
>>144の例は読み込むのが3行だからどっちでもいいとは思うんだけど
こういう感じのファイルからの読み込みだと大量のデータを処理する目的がある場合が十分考えられる

>>151
f = open("str1.txt")
list_str=[line.rstrip("\n") for line in f]
f.close()

3行なのを記録したり、調べないでもいいし、ファイルの性質を分かっていれば読みにくいことはないし、
書くくなら多分こちらを書くかなって気がする
他人が書いたものを読むのも、内包表記を知っている方だと、こちらのほうが読みやすい気がする

ファイルからの一行ごとの処理がこの内包表記で出来るというのは多分覚えないといけないでしょうけど
というかファイルオブジェクトがファイルが一行ごとを要素として持つリストで認識? しているって感じで理解したほうがいいのかな?

194 :デフォルトの名無しさん:2014/08/24(日) 11:50:15.24 ID:jWy1bnP0
お前らのソースコードなんか読まれないから可読性とかイチイチ語らなくていいぞ
それでも語りたいならgithubのアカウント晒せよ
それでお前の語る可読性がどれだけ高尚なものか評価してやる
テストがまったくないとか言ったら笑うけどな

195 :デフォルトの名無しさん:2014/08/24(日) 11:51:26.70 ID:jWy1bnP0
さぞ徹底的に実践されていることだろうな?
それとも机上の空論で自らのコードはずぼらとか?
偉そうな方はどちらに当てはまるかな

196 :デフォルトの名無しさん:2014/08/24(日) 12:39:33.97 ID:lc4tmy8G
>>194
なんか糞コードしかかけなそう

197 :デフォルトの名無しさん:2014/08/24(日) 12:41:09.68 ID:EYMdVqe7
西アフリカで、アウトブレイクした潜伏期間延長型エボラの死者・罹患者の数を散布図にし近似曲線を出してみたら
片対数グラフで直線だから既に指数関数的増加だった

2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱

2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生

2015年大晦日で1000万人。

ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している

エボラ出血熱は蚊やアブに刺されただけで感染する。

:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では

や る 気 は 皆 無

198 :デフォルトの名無しさん:2014/08/24(日) 12:48:28.63 ID:+Bp9t+G+
いきなりテストがどうのこうのとか、分裂症の兆候が見られますね

199 :デフォルトの名無しさん:2014/08/24(日) 13:24:17.80 ID:frySUXyC
>>193
どこでcloseしてるか探さないといけない書き方より、with使う方が好みだなあ
withのインデント範囲が、ファイルの開いてる範囲だと直感的に分かるから

テキストエディタの色分け表示された環境で見れば、短い内包表記なら気にならなくなるよ

200 :デフォルトの名無しさん:2014/08/24(日) 14:00:30.54 ID:gu+/Plpk
>>194
人に見せないまでも自分に対する可読性もあると思うの
直感的に書いて、尚且つ10年後も自分で読みやすいスクリプトを書きたいじゃない
散文的に書いたものが何かの拍子に必要になる可能性もあるし

というかこれには関係ないけど昔別言語の自分の書いた変態ソースが読みにくくて大分めんどくさいです
ドキュメント位作っておけばよかった

>>199
他の言語から移るって感じの時に
withだと内包表記と共に2つの理解が必要だとしんどいかなって思ってばらしてみました
Pythonを使い慣れている方なら普通にwithを使うでしょうね

201 :デフォルトの名無しさん:2014/08/24(日) 14:08:01.22 ID:gDuWOCL6
withと同等の構文は大抵のメジャー言語に備わってるよw

202 :デフォルトの名無しさん:2014/08/24(日) 14:27:30.36 ID:Mxca/0uN
withで聞きたいことがあったんだった
入力ファイルと出力ファイルを一つずつ開き
読み書きを全て一つのブロック内で行う場合、これでいいのかな?
動いてはいるのだけど、openがネストになるのが気持ち悪い

with open(...) as infile:
  with open(...) as outfile:
    # 以下、読んだり書いたりの処理

203 :デフォルトの名無しさん:2014/08/24(日) 14:48:42.01 ID:frySUXyC
こんな風にも書けるよ

with open(...) as infile, \
   open(...) as outfile:
  # 以下、読んだり書いたりの処理

204 :デフォルトの名無しさん:2014/08/24(日) 14:54:05.63 ID:jlCuRdJh
ゴミコードです

205 :デフォルトの名無しさん:2014/08/24(日) 15:00:05.12 ID:gGOWG3Gv
>>202
with open(...) as infile, open(...) as outfile:
 # 以下、読んだり書いたりの処理
2.7から普通にコンマで繋げられるよ
3.3からでたくさんある場合はcontextlib.ExitStackが使える
2.6以下ならcontextlib.nestedでできる

206 :デフォルトの名無しさん:2014/08/24(日) 18:44:45.65 ID:Mxca/0uN
>>203,205
サンクス
withを使ったファイルアクセスは頻繁に使うので
スッキリ書けると助かる

207 :デフォルトの名無しさん:2014/08/25(月) 02:10:28.08 ID:OTL7uAT+
>>149 >>151 >>160 >>171
readlinesって一旦全部メモリに読んでるの?
最近のpythonだとgeneratorにしてくれてるんじゃなくて?

>>161
だよね

208 :デフォルトの名無しさん:2014/08/25(月) 02:33:00.21 ID:WeZbZEp1
>>207
Pythonのドキュメントをちゃんと読めばわかる話なんだが。

「リストを返す」というのはメモリに全部読み込んで返してますということ。

wiith ... as f なら f はイテレータになってる。

イテレータを返すというのはその時点ではまだ読み込んでませんよということ。

ジェネレータはイテレータのシンタックスシュガー。
内包表記でかくとややこしくなるところで使うのが yield を使うジェネレータ。

209 :デフォルトの名無しさん:2014/08/25(月) 02:39:43.37 ID:r8v+sX3h
なんか滅茶苦茶だな

210 :デフォルトの名無しさん:2014/08/25(月) 08:54:52.76 ID:C6MCmCjo
>>207
自分 >>171 なんだけどメモリがどうとかなん一言も言ってない
単に(>>147 後段の)readlines() が余計だというだけ

211 :デフォルトの名無しさん:2014/08/25(月) 09:39:28.38 ID:LIV+GZ8D
一言も言ってないとかそんなことはどうでもいいんだよ
俺には聞こえたんだ文句あっかクソが

212 :デフォルトの名無しさん:2014/08/25(月) 20:01:33.97 ID:OTL7uAT+
漏れも聞こえた気がする

213 :デフォルトの名無しさん:2014/08/26(火) 00:23:41.72 ID:cOpcHFf6
>>210
速度もメモリーも気にしないなら readlines あってもいいじゃん

214 :デフォルトの名無しさん:2014/08/27(水) 18:23:29.22 ID:kQryo2X9
readlinesを使う場合が思いつかない罠
\n付きのデータが欲しい時は使うのかなあ

215 :デフォルトの名無しさん:2014/08/27(水) 18:35:30.33 ID:cWbvRQEv
使うとしたら、どうしても最終行→先頭行の順で処理したい時くらいかなあ

216 :デフォルトの名無しさん:2014/08/27(水) 19:35:30.52 ID:9+bGMQe/
csvとかで行の先頭に日時が書いてあって、昇順降順を逆にして表示したい時とか、
先頭行に行数を明記したい時とかかな?

217 :デフォルトの名無しさん:2014/08/27(水) 19:36:55.50 ID:9+bGMQe/
あと、処理が全体の何%進んでます
って表示する時かな?

218 :デフォルトの名無しさん:2014/08/27(水) 20:34:24.19 ID:W7LoG7Mi
超初歩的な質問をいくつかさせてもらいます。
bool_one = False and True
この「and」とはどういう意味を持つのでしょうか?
「!=」と「+=」の意味は同じですか?

219 :デフォルトの名無しさん:2014/08/27(水) 20:57:36.11 ID:36wAJh8p
>>218
くだすれPython(超初心者用) その17
http://peace.2ch.net/test/read.cgi/tech/1365323116/937-938

220 :デフォルトの名無しさん:2014/08/27(水) 21:11:58.77 ID:F5daRA4V
>>218
ちょっとよくわかりません

221 :デフォルトの名無しさん:2014/08/27(水) 21:17:34.91 ID:lz8X5B5x
Jack and Betty
Bonnie and Clyde
みたいな感じじゃね?

222 :デフォルトの名無しさん:2014/08/27(水) 21:29:34.59 ID:W7LoG7Mi
>>219
なるほど、良く分かりました!ありがとうございます。
ちなみにこのコードは、codecademyのレッスン中にでてきます。

223 :デフォルトの名無しさん:2014/08/27(水) 21:45:04.28 ID:l9xcBY8F
>>218
andの左にある式がFalseと評価できるなら左の式を返す、逆にTrueと評価できるならandの右にある式を返す
>>> [] and True
[]
>>> 1.0 - 1.0 and 3.14
0.0
>>> -1 and 2
2
>>> 'hello' and 'world'
'world'

224 :デフォルトの名無しさん:2014/08/28(木) 02:33:42.69 ID:8lkzYc52
codecademy クラスの所の順番(基本と応用)おかしくない?

225 :デフォルトの名無しさん:2014/08/28(木) 06:43:05.78 ID:3Gu0DZv8
>>223
うーん、これは初心者には難解だなあ
ifで条件つなぎに使うやつと毛色が違うよね
でもこれを使うと、ラムダ式などifを使えない場所に
条件分岐を仕込めそうな感じがするので、学ぶ価値はありそうなんだよな

226 :デフォルトの名無しさん:2014/08/28(木) 06:55:05.71 ID:DXb3g9Xw
>ifで条件つなぎに使うやつと毛色が違うよね
毛色が違う・・・?

>でもこれを使うと、ラムダ式などifを使えない場所に
三項演算子はステートメントじゃなくて演算子だから使える

227 :デフォルトの名無しさん:2014/08/28(木) 07:19:23.35 ID:3Gu0DZv8
>>226
ifの条件式に使うandとこのandは働きが違う感じがしません?
どこがどうとは言えないのだけど

228 :デフォルトの名無しさん:2014/08/28(木) 07:36:36.16 ID:NvaMglSs
>>227
論理演算子はどこで使おうが短絡演算で評価対象を返すよ
この特性は三項演算子っぽく使えなくも無いが、それとしては不完全なので
返す値をちょっとだけ変えたいくらいの時には便利

if用の論理演算子なんてものはない、論理演算子があり、if文があり、それらが連携してry

229 :デフォルトの名無しさん:2014/08/28(木) 08:25:08.74 ID:C6oDC4Qo
人減ってレベル下ったな

230 :デフォルトの名無しさん:2014/08/28(木) 12:38:56.86 ID:NYfr88ea
>>227
if文やwhile文などの条件部分はbool型の値じゃなくてもエラーにならない
False、None、数値のゼロ、空のシーケンス(文字列やリスト)などが偽と見なされる

>>> if [] and True: print(1)
は[] and Trueのブール演算で返った[]が偽と見なされるのでprint(1)は実行されない

231 :デフォルトの名無しさん:2014/08/28(木) 18:43:17.03 ID:+ATeOtQu
>>227
ifの条件式と全く同じ。
ただ、条件式以外でandやorを使うのは、Pythonに三項演算が無かった頃のテクニックで
今そんなの使うのはCode Golfするときくらいだな。

232 :デフォルトの名無しさん:2014/08/28(木) 19:10:09.62 ID:u3Kwqg++
x = a or b or c or d or default_value
みたいなのはよく使うけどなあ

233 :デフォルトの名無しさん:2014/08/28(木) 19:54:13.35 ID:n/glzhXg
優柔不断すぎるだろ

234 :デフォルトの名無しさん:2014/08/28(木) 20:11:27.58 ID:u3Kwqg++
優柔不断かなあ。ifで書くより分かりやすいと思うけど

if a:
 x = a
elif b:
 x = b
elif c:
 x = c
elif d:
 x = d
else:
 x = default_value

235 :デフォルトの名無しさん:2014/08/28(木) 20:18:39.82 ID:1NG60ApY
orでつなげる方が見やすいとは思うけど、if使う方が直感的で読みやすいかな。
三項演算も長くなるとキモいし一長一短。

236 :デフォルトの名無しさん:2014/08/28(木) 20:20:45.90 ID:TSExhEQp
re.findall() みたいに必ずリストで返す奴でのシンプルな要素取りみたいな用途ではよく使うかな。

m = re.findall(pattern, s)
m = m and m[0]

if で2行にわたって書くとか無駄でイヤ。

237 :デフォルトの名無しさん:2014/08/28(木) 21:24:11.38 ID:CCJAHAKH
デフォルトな値設定に使うなあ
def __init__(self, a=None):
 self.a = a or {}

238 :デフォルトの名無しさん:2014/08/29(金) 01:58:45.79 ID:idGYnHkN
>>236
コードによるけど、結局mにちゃんと値が入ってるかどうかのif的処理が必要になるんじゃないかね。

>>237
> def __init__(self, a=None):
>  self.a = a or {}

こんなクソコードを2chで晒してんじゃねえ。
クソだってわからないんだとしたら、そんなおまえがクソです。

239 :デフォルトの名無しさん:2014/08/29(金) 02:45:03.76 ID:SC5ypxkr
>>238
>>237は何度か見たことある書き方だけど問題があるのなら具体的に指摘してくれ。

240 :デフォルトの名無しさん:2014/08/29(金) 05:17:47.45 ID:C06ZUAqI
def __init__(self, a={}):
 self.a = a

とか書くと意味が変わるんだよな
インスタンス生成のタイミングが一回になるから云々

241 :デフォルトの名無しさん:2014/08/29(金) 06:19:30.41 ID:EluQu91K
>>239
a が None のとき {} にするつもりで記述したかもしれないけど
a に 0 [ ] '' false などを指定した場合も self.a = {} になってしまうから
思わぬバグを生む原因になったりするかもしれない
そのクラスの使用者側からすると、確実に 0 を指定したのになぜか思い通りに動いてくれない・・・みたいなバグ

計算結果や返値の型が明確なものに使うのはいいけど
引数のように何が渡されるか分からないものには慎重に使うべきなんだと思う

242 :デフォルトの名無しさん:2014/08/29(金) 09:07:46.34 ID:H83Cnhn6
>>241
偽になる値を有効なものとして受け取るなら>>237はバグだけど、例えばdictを期待してるなら問題ないよね

>引数のように何が渡されるか分からないものには慎重に使うべきなんだと思う
これが違和感ある
引数にも何か期待してる型があるのでは
それを無視してバグるのは使用者の責任だと思う

偽になる値を受け取るときは「a = {} if a is None else a」と書く必要があるけど、
dictを期待してるときは「a = a or {}」と書けて便利だねってことでしょうよ

243 :デフォルトの名無しさん:2014/08/29(金) 09:17:43.83 ID:QcgTGGrU
dict期待してるならNoneは例外吐くべき

244 :デフォルトの名無しさん:2014/08/29(金) 09:27:48.96 ID:tA6eYT/j
asaert

245 :デフォルトの名無しさん:2014/08/29(金) 09:29:02.29 ID:tA6eYT/j
typo つД`)

246 :デフォルトの名無しさん:2014/08/29(金) 11:23:22.37 ID:mu02bUZX
>>237の用途なら以下の通りで十分。
def __init__(self, a={}):
 self.a = a

あと、引数に期待するtypeがある時に、
有効な初期値があるならその値で良いし、
そうでないなら、期待するtypeの偽を初期値にして欲しい。

def __init__(self, d={}, L=[], n=0, flt=0.0, st=set(), tup=()):
pass

これなら、grepで__init__を検索すれば、
dはdict, Lはlist, nは整数, fltは少数, stはsetを期待しているって明瞭でしょう?

247 :デフォルトの名無しさん:2014/08/29(金) 16:15:28.98 ID:VYyiJktz
>>246
http://ideone.com/FJthAF
こういう事になるからその書き方はあまりおすすめできないが

248 :デフォルトの名無しさん:2014/08/29(金) 18:14:53.18 ID:6XulYCBt
【翻訳】Python 2.7.x と 3.x の決定的な違いを例とともに | POSTD
 http://postd.cc/the-key-differences-between-python-2-7-x-and-python-3-x-with-examples/

249 :デフォルトの名無しさん:2014/08/29(金) 18:40:46.68 ID:uMORzI9c
Python3はまだ早い
あと2年待て

250 :デフォルトの名無しさん:2014/08/29(金) 18:47:25.87 ID:caa7zuwv
Mac に載ってるのが 3 系になったら本気出す

251 :デフォルトの名無しさん:2014/08/29(金) 20:04:08.50 ID:EluQu91K
>>242
中途半端に動作してしまうと何所に原因があるのか見つけづらい場合もあるし
コメントに注意書きするよりチェック処理の方が簡潔かもしれないね

def __init__(self, a=None):
 assert isinstance(a, (dict, type(None)))
 self.a = a or {}

252 :デフォルトの名無しさん:2014/08/29(金) 20:16:41.71 ID:/xquer/h
>>250
インストーラ用意されてても駄目なのか・・
https://www.python.org/downloads/release/python-341/

253 :デフォルトの名無しさん:2014/08/29(金) 21:12:43.50 ID:QcgTGGrU
assertはあくまでデバッグ用だからユーザーに対してはちゃんとTypeErrorなり吐きましょう

254 :デフォルトの名無しさん:2014/08/29(金) 23:47:41.71 ID:mu02bUZX
>>247
y.a と x.a が共通になるとは思いませんでした。
勉強になりました。

という事で、こんな風にしておくのが無難ですか?

class Hoge(object):
def __init__(self, a={}):
self.a = a or {}

if __name__ == "__main__":
x = Hoge()
y = Hoge()
x.a[0] = 1
y.a[1] = 2

print(y.a)

255 :デフォルトの名無しさん:2014/08/29(金) 23:49:30.39 ID:NQcdY+S7
細かいけど吐くのはエラーログ、例外は投げるもんだろ?

256 :デフォルトの名無しさん:2014/08/30(土) 02:08:22.27 ID:9i4rki/q
本題からずれるけど、クラスや関数の引数にミュータブルなオブジェクトを渡して、クラスや関数内で
それを変更するようなコードを書いてるとそのオブジェクトの挙動は保証しないのでやらないの推奨
みたいなのドキュメントで読んだ記憶があるけどどこだったかなあそれ。
ていうか実装の統一が利用者から見た挙動の統一より優先されてるのがちょっと気に入らないね。

257 :デフォルトの名無しさん:2014/08/30(土) 05:03:58.06 ID:EIzseELq
>>254
だめ
x = Hoge()
x.a[0] = 1
y = Hoge()
y.a[1] = 2

結局x.aとy.aが共通になってる

258 :デフォルトの名無しさん:2014/08/30(土) 05:14:29.53 ID:86Qko6ZX
Pythonにもアクセス修飾子の導入を!
privateが付いていない変数は恐くて使えない

259 :デフォルトの名無しさん:2014/08/30(土) 05:38:48.39 ID:uyO2lJ7J
良い子は命名規則で察してね、アンダースコア2つ付ければ触ったら○すと脅す意味になるよとPEP8に書いてあった

260 :デフォルトの名無しさん:2014/08/30(土) 07:15:21.91 ID:KLyDeToE
>>257
???

$ python3 --version
}Python 3.4.0

以下の実行結果でしたが。
{1: 2}

261 :デフォルトの名無しさん:2014/08/30(土) 07:38:12.17 ID:ja3NQGax
無難じゃないし怖くて使えない

262 :デフォルトの名無しさん:2014/08/30(土) 08:02:41.96 ID:uyO2lJ7J
>>257
>>254で重要だと思う点は仮引数aのデフォルト値{}はself.aに全く代入されないということだ
辞書としての役目を果すことがないデフォルト{}に不条理を感じて眠れない夜を明かした

263 :デフォルトの名無しさん:2014/08/30(土) 09:17:06.38 ID:mREiC7TA
>>254
ちがうんよ
デフォルト引数は一度しか評価されない
つまりメソッド呼び出し時に毎回評価されるわけじゃないので
デフォルト引数にミュータブルなオブジェクトを指定すると惨いことになる
Python の有名な落とし穴で >>240 が指摘してること

264 :デフォルトの名無しさん:2014/08/30(土) 16:22:49.56 ID:CNskXuGO
urllib.requestのRequestも>>254に近いことやってるしありなんじゃね?

265 :デフォルトの名無しさん:2014/08/30(土) 16:28:06.56 ID:KdcOI92s
>>256
FAQ のデザインと歴史

これは意図された実装で、(C言語で言う) static 変数的な領域を確保するのに便利な側面もあります。

デフォルト引数が一度しか評価されない、という仕様も使い処があって

例えば、定数は、ローカル変数宣言代わりにデフォルト引数に書いておくと、
呼び出し毎に毎回変数へ代入される処理は省略される。
また、こうすることで関数の結合度が弱まり、単体テストが書きやすくなるといった利点もあります。


辞書やタプルの初期化はこんな方法も有

class Hoge:
 def __init__(self, **kwargs):
  self.a = kwargs

266 :デフォルトの名無しさん:2014/08/30(土) 17:08:03.32 ID:KdcOI92s
>>264
用途次第だと思うけど。標準ライブラリ内でも幾つか利用されてます。キャッシュ的な用途で。

但し、歴史的な理由でもあるので(旧バージョンの互換/資産活用等)
新しいコードで積極的に使う理由は特に無く、(書捨てのコードで手短に済ませたい場合、位)
可能ならデコレータやクロージャにする等、別の方法を検討します。

ちなみに、デフォルト引数でのミュータブルなオブジェクトを、
使うなと書いてるのは、google の coding スタイルガイド

267 :デフォルトの名無しさん:2014/08/30(土) 20:25:41.58 ID:KLyDeToE
>>263
>>240を最初は知りませんでしたが、理解できましたので、
>>254で or の後に 「{}」 を書いたのですが。

class Hoge(object):
def __init__(self, a={}):
d = {}
print("default id(a) =", id(a))
print(" new id(d) =", id(d))
print()
self.a = a or d

if __name__ == "__main__":
x = Hoge()
x.a[0] = 1
y = Hoge()
y.a[1] = 2

print(y.a)

実行結果は以下の通りで、
id(a) の値は上下で毎回一致しますが、
id(d) の値は上下で毎回違いますから、
思った通りの結果を得ています。

default id(a) = 140676218322168
new id(d) = 140676218321664

default id(a) = 140676218322168
new id(d) = 140676192340088

{1: 2}

268 :デフォルトの名無しさん:2014/08/30(土) 21:45:07.57 ID:O1vhFAMe
>>267
そうゆう書き方だと__init__に{}を渡した場合インスタンスが入れ替わってしまうので注意してね
使い所を誤るとバグの原因になってしまう

x = {}
h = Hoge(x)
print(h.a is x) #False

269 :デフォルトの名無しさん:2014/08/31(日) 01:16:31.29 ID:4zKdmr70
>>265
> 例えば、定数は、ローカル変数宣言代わりにデフォルト引数に書いておくと、
> 呼び出し毎に毎回変数へ代入される処理は省略される。

それはわかるけど、そのせいで
> この種のバグがよく初心者プログラマに噛み付きます。
みたいな状況になるのとどっちが大事なのかなあ、って思ったりします。

> また、こうすることで関数の結合度が弱まり、単体テストが書きやすくなるといった利点もあります。

ごめんなさい、私のようなあくまでプライベートでPython使ってるだけの人間にはその意味がよくわからないです。

単なる揚げ足取りで実際にはないケースかもかもしれないけれど、
>>237 にしても、

270 :269:2014/08/31(日) 01:23:25.79 ID:4zKdmr70
途中で書き込んじゃった。

単なる揚げ足取りで実際にはないケースかもかもしれないけれど、
>>237 にしても、
>>> class Test:
... def __init__(self,a):
... self.a = a or []

>>> L = ['a']

>>> x = Test(a=L)

>>> y = Test(a=L)

>>> x.a
['a']

>>> y.a
['a']

>>> x.a.append('c')

>>> x.a
['a', 'c']

>>> y.a
['a', 'c']

ってなっちゃうよね。

271 :デフォルトの名無しさん:2014/08/31(日) 06:26:37.35 ID:g3F9HZkc
意味がわからないなら黙ってたらいいのに

272 :デフォルトの名無しさん:2014/08/31(日) 07:03:06.70 ID:4Dleen0X
>>269-270
そこまで言うなら

>>> class TestA:
... def __init__(self,a):
... self.a = a or []

>>> L = ['a']
>>> x = TestA(a=copy.deepcopy(L))
>>> y = TestA(a=copy.deepcopy(L))


比べてみ


>>> class TestB:
... def __init__(self,a=copy.deepcopy(['a'])):
... self.a = a

>>> x = TestB()
>>> y = TestB()

273 :デフォルトの名無しさん:2014/08/31(日) 08:11:42.11 ID:B6N6ow9m
>>268
> print(h.a is x) #False
これは予想外でした。勉強になりました。
でも、or {} ってやってますから当然と言えば当然なんですよね。。。

>>272
どのような考えかは分かりませんが、
TestA x と Text B y が一致しますから、例として不適切ではないでしょうか?
おそらく、予想外の結果では?
GCがイタズラしているのでしょうか?

TestA x = <__main__.TestA object at 0x7fa6562052d0>
TestA y = <__main__.TestA object at 0x7fa656205310>

TestB x = <__main__.TestB object at 0x7fa656205790>
TestB y = <__main__.TestB object at 0x7fa6562052d0>

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))

print("TestA x =", x)
print("TestA y =", y)
print()

x = TestB()
y = TestB()

print("TestB x =", x)
print("TestB y =", y)

274 :デフォルトの名無しさん:2014/08/31(日) 08:21:30.62 ID:rw/ZY9R1
馬鹿には無理

275 :デフォルトの名無しさん:2014/08/31(日) 09:18:29.34 ID:fQnSs+yg
>>274
馬鹿の一つ覚え

276 :デフォルトの名無しさん:2014/08/31(日) 10:26:37.86 ID:k/gc3SDA
>>273
TestAのxとTestBのyのidが一致するのはGCによるもの
でもこれは主題じゃなくて、>>272が言ってるのはTestA、TestBの各x、yのaについてだろ

277 :デフォルトの名無しさん:2014/08/31(日) 12:13:50.17 ID:kY+m/tLd
>>273

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))

z = TestB()
w = TestB()

278 :デフォルトの名無しさん:2014/08/31(日) 22:53:55.21 ID:B6N6ow9m
>>269,272,277
こんなもんでどうでしょう?

import copy
class TestA:
def __init__(self,a):
self.a = a or []

class TestB:
def __init__(self,a=copy.deepcopy(['a'])):
self.a = a

L = ['a']
x = TestA(a=copy.deepcopy(L))
y = TestA(a=copy.deepcopy(L))
y.a.append("y.a")

print("TestA x =", x)
print("TestA x.a =", x.a)
print("TestA y =", y)
print("TestA y.a =", y.a)
print()

z = TestB()
w = TestB()
w.a.append("w.a")

print("TestB z =", z)
print("TestB z.a =", z.a) # !
print("TestB w =", w)
print("TestB w.a =", w.a) # !
print()

279 :デフォルトの名無しさん:2014/09/01(月) 01:17:47.31 ID:0WGpUPMm
下手の考え休むに似たり

280 :269:2014/09/01(月) 02:35:10.29 ID:k1ciVbjZ
すんません、レス先が絞れないので。

import copy してる時点である意味負けだと思うんですが。

ミュータブルなオブジェクトを引数で渡されたときは、デフォルトでオブジェクト.copy()にすれば、
利用者にとって優しいと思うんです。
スコープの保持的にも。

281 :デフォルトの名無しさん:2014/09/01(月) 02:56:34.39 ID:SfHA5O2Z
ただでさえ遅いのにインド人もびっくりな発言をするんじゃねえ

282 :デフォルトの名無しさん:2014/09/01(月) 07:44:30.11 ID:Q1FYYJR2
python 3.4.1です。
response = urllib.request.urlopen(req)
として得たレスポンスから
html = response.read()
とやると、同じ関数内では正常に取得できるのですが、
nanotka(response)
とレスポンスを他の関数に渡してその先でread()しようとすると中身が空になってしまいます。
渡した先でBeautifulSoup4に読ませようとしても同様です。
どうやればresponse自体を他の関数に渡せるでしょうか?

283 :デフォルトの名無しさん:2014/09/01(月) 07:50:36.93 ID:zQucGkuf
httplib 使え

284 :デフォルトの名無しさん:2014/09/01(月) 08:00:54.27 ID:YudmxTbc
Requests 使え

285 :デフォルトの名無しさん:2014/09/01(月) 09:55:46.60 ID:tsV5zXYj
>>282
html を渡すようにしようよ。
って思いますが。

最初に読んだ人勝ちになるのがread()
read()呼び出しが二回目以降の人は空を読み込むの。
なので、fseek()とかでfpを先頭に戻しておくと、
>>282の要望を満たせるんだろうけど、
fpを先頭に戻す方法はお勧めしない。

やっぱり、html自体を渡すようにしようよ。

でも改造したいんなら、

class Foo(keisho):
def read(self):
if not self.text:
su = super(Foo, self)
self.text = su.read()
return self.text

とか改造すると良いよ。

286 :デフォルトの名無しさん:2014/09/01(月) 10:27:46.48 ID:srwG2aQM
>>282
response.seek(0)
してから渡せば良くね?

287 :デフォルトの名無しさん:2014/09/01(月) 10:33:59.51 ID:B+PXzyfJ
そもそも response って seekable なんだろうか
ふつうやらないけど

288 :デフォルトの名無しさん:2014/09/01(月) 10:36:08.89 ID:IJ3Nr0Wt
>>283-284
とりあえず標準のurllib使ってみただけなので調べて比較検討してみます。
>>285
ああー元関数で既にreadしてるからなのか…ファイル読み込みと同じ感じなんですね。
渡した先でヘッダーとhtml両方使うのでresponseごと渡したかったのですが
うまくないやり方のようなので仰るとおりにhtmlはhtmlで渡すことにします。

どうもありがとうございました。

289 :デフォルトの名無しさん:2014/09/02(火) 00:02:55.31 ID:xFjNzjIT
djangoを個人で翻訳したい
この場合はdjangoのライセンスに従えば勝手に翻訳しても大丈夫?

290 :デフォルトの名無しさん:2014/09/02(火) 00:04:24.39 ID:AEXaLIIW
pyconの参加費高すぎ
2万もとるとか学生からも5000円とるとかボリすぎ
pythonってオープンソースだよね

291 :デフォルトの名無しさん:2014/09/02(火) 00:14:26.30 ID:HaUEKjfA
>>289
もちろん

292 :デフォルトの名無しさん:2014/09/02(火) 00:28:16.07 ID:rj4rVkNc
スクリプトバトルロワイヤルスレの116のコード見てて気になったんですが、
active_journal.undo()した時に_関数が呼ばれてundoを呼び出してますよね、
このクラス変数いつの間にlambda:print('Bye')が束縛されたんでしょうか
実引数ではないですよね?

293 :デフォルトの名無しさん:2014/09/02(火) 00:46:44.21 ID:YYDqev7Y
android端末内の複数のフォルダを外付けSDにコピー(バックアップ用途)するスクリプトを書いたのですが、エラーが出ます。

フォルダパスをリストとして読み込み、forでフォルダ個数分、
shutil.copytree(src, dst)
としたのですが、SL4AでOperation not permittedとなります。
リスト1個目のフォルダコピー後に上記エラーで中断され、それ以降の処理がされません。

PCで試した時点ではエラーはありませんでした。
コピー元フォルダはシステムフォルダなどではなく、パーミッションはコピー元・先両方rwxrwxr-xとなっています。

どなたか、解決策をご教示頂けますか?

294 :デフォルトの名無しさん:2014/09/02(火) 01:55:56.14 ID:zdu1Qxxi
>>281
インタプリタ型言語に速度を追求するクズですか?

295 :デフォルトの名無しさん:2014/09/02(火) 03:33:39.16 ID:eu1sh5+C
そうだよ

296 :デフォルトの名無しさん:2014/09/02(火) 13:04:05.12 ID:qb4+F2QT
>>299
クラス属性(Journal.undo)・インスタンス属性(self.undo)・引数(undo)の3つがあるので混同に注意
それと
クロージャを理解してる必要がある

>>293
rwxrwxr-x で怒られるならコピー先 rwxrwxrwx でどうなる

297 :デフォルトの名無しさん:2014/09/02(火) 13:06:15.08 ID:qb4+F2QT
× 299
○ 292

298 :デフォルトの名無しさん:2014/09/02(火) 16:47:38.57 ID:VDCsBZvR
apache+mod_phpみたいに
バーチャルホストを設定してxxx.localhost/にアクセスしたらページが見られるようにしたいんですが
pythonの場合はプロジェクト枚に例えばgunicornとかpassenjarを起動しないとだめですか?

299 :デフォルトの名無しさん:2014/09/02(火) 18:58:35.42 ID:eu1sh5+C
何でだよ
mod_pythonにvirtual host設定しとけ
ペチパーはペチパーらしくしていればいい

300 :デフォルトの名無しさん:2014/09/02(火) 19:00:53.72 ID:VDCsBZvR
mod_pythonってapache限定じゃないですか
おれはnginxでやりたいんすよ

301 :デフォルトの名無しさん:2014/09/02(火) 19:08:54.11 ID:mt5THT+8
サーバでPython3と非公式の外部ライブラリを動かしたい
と思いつつ全然勉強が進まない
敷居が高いわ・・・

302 :デフォルトの名無しさん:2014/09/02(火) 22:30:46.56 ID:2UqIo9/b
>>300
mod_phpって書いたからじゃないの?
NginxならPHP-FPMとか書けばいいのに。

303 :デフォルトの名無しさん:2014/09/02(火) 23:33:31.12 ID:rj4rVkNc
そうそれですよ兄貴
それがやりたいんですよ

304 :デフォルトの名無しさん:2014/09/03(水) 03:10:30.13 ID:pl/pTCkk
プロジェクト枚

305 :デフォルトの名無しさん:2014/09/03(水) 03:49:57.97 ID:Ipv4EIPT
>>289
応援してます
がんばってください

306 :デフォルトの名無しさん:2014/09/03(水) 11:13:39.14 ID:DmnNJKZp
GUIツールキットでオススメはやっぱりwxPython?

307 :デフォルトの名無しさん:2014/09/03(水) 12:45:46.18 ID:8RxcontV
>>306
割と定期的にこの手の話題出るな。
金あるならPyQt、金ないけどリッチなGUI作りたいなら
wxPythonっていうのが大方の見解かと。

308 :デフォルトの名無しさん:2014/09/03(水) 13:01:38.58 ID:MAtMcWe1
wxPython に使い慣れてると
C++ で wxWidgets するときも
ほとんど抵抗なく移行作業捗る

309 :デフォルトの名無しさん:2014/09/03(水) 13:06:40.87 ID:DmnNJKZp
wxPythonなんて使ってる奴のセンスを疑う

310 :デフォルトの名無しさん:2014/09/03(水) 13:07:17.88 ID:DmnNJKZp
ID被ったw

311 :デフォルトの名無しさん:2014/09/03(水) 13:20:49.22 ID:O8D1iFyt
PySideって手もあるでよ

312 :デフォルトの名無しさん:2014/09/03(水) 14:13:41.36 ID:SUoPpak6
このスレの速度でID被ったってのはそうそうあり得ないな。自演乙。

313 :デフォルトの名無しさん:2014/09/03(水) 15:15:45.87 ID:DmnNJKZp
いや、マジでID被ってます
専門版で被ったのは初めてかも知れない、ってかこんな近くで被ったことは無い気がする・・・

>>307
金はないのでwxPythonとwxGladeの組み合わせにしようかなあ
PyQtの状況がかなり良さそうですが、ライセンスが面倒そうだし

>>308
C++は少し触ったことがあるのですが、もう触りたくないですね・・・

>>311
了解、少し調べてみます

314 :デフォルトの名無しさん:2014/09/03(水) 15:32:52.00 ID:MAtMcWe1
>>306
>>309-310
>>313

315 :デフォルトの名無しさん:2014/09/03(水) 16:29:04.66 ID:wQfYusgM
おい、となりの部屋とかみてまわれ
かーちゃんとかが2ch画面開いてたら・・・Pyrhonスレに来んなって言え

316 :デフォルトの名無しさん:2014/09/03(水) 18:25:23.53 ID:DmnNJKZp
カーチャンからメールが・・・

J( 'ー`)し「たかしへ。スタンフォード大学のサーバーへハッキングをかけ、
      経済学部とMBAの学位取得者の中にたかしを紛れ込ませました。
      これでたかしの履歴書も立派になると思います。
      就職活動頑張ってね。」

317 :デフォルトの名無しさん:2014/09/03(水) 18:27:01.27 ID:7tHdUujr
githubでアカウント凍結されたひとか

318 :デフォルトの名無しさん:2014/09/03(水) 19:31:32.72 ID:MwmGE5u2
PythonでわざわざGUIなんて必要?
コンソールでinputとprint使えば何とでもなるでしょうに

319 :デフォルトの名無しさん:2014/09/03(水) 20:07:34.43 ID:8RxcontV
人の使い方にいちいちケチ付けんなよ。

320 :デフォルトの名無しさん:2014/09/03(水) 20:17:24.51 ID:ifyJjDEv
TkinterとかTixでいいわ

321 :デフォルトの名無しさん:2014/09/03(水) 20:47:42.17 ID:yrbx30gA
Tkinterのきちんとしたドキュメントって何所かにない? 可能なら日本語で
Python標準ライブラリのドキュメントだとTkを解ってる人向けなのか、何言ってるのかサッパリ分からんw
GUIだから図解で説明してくれると有り難いんだが

322 :デフォルトの名無しさん:2014/09/03(水) 21:10:29.38 ID:mb+i3RoN
python3.3ではtkinterぐらいしか動かないの?

323 :デフォルトの名無しさん:2014/09/03(水) 22:59:56.46 ID:ziplIhf2
3系はPySide使えるよ

324 :デフォルトの名無しさん:2014/09/03(水) 23:06:44.46 ID:SUoPpak6
>>315
同じ会社の奴が書き込んでる可能性があるな

325 :デフォルトの名無しさん:2014/09/04(木) 11:46:06.76 ID:o42KfBCO
日本語の資料も多そうだしwxPythonとwxGladeを早速インストールしようと思ったら
Python3に対応していなくてうああって頭抱えてる

326 :デフォルトの名無しさん:2014/09/04(木) 13:50:46.00 ID:MHZTueb1
pgr

327 :デフォルトの名無しさん:2014/09/04(木) 16:02:50.83 ID:h4TpAEJ2
デベロッパー版と使え
意外と・・・だぞ

328 :デフォルトの名無しさん:2014/09/04(木) 19:30:09.35 ID:o42KfBCO
それはWindowsのPythonでも動くのでしょうか・・・
Linux版しかなかった記憶が

329 :デフォルトの名無しさん:2014/09/04(木) 19:34:01.03 ID:89WWur94
GUIはVB使っといたらええねん

330 :デフォルトの名無しさん:2014/09/04(木) 19:47:40.94 ID:okNlOH27
pyqtでいいじゃん
外部ライブラリを使って大きな事するわけじゃないんだろ?
GPLでもいいじゃん
ソースコードを公開したくないとかだったらインタプリタでGUIはやるな

331 :デフォルトの名無しさん:2014/09/04(木) 21:31:58.28 ID:14KwuRYz
pysideとcythonで全部解決ね

332 :デフォルトの名無しさん:2014/09/04(木) 22:25:30.80 ID:uXZedlGY
>>328
ダウンロード http://wxpython.org/Phoenix/snapshot-builds/
ドキュメント http://wxpython.org/Phoenix/docs/html/main.html
ファイル名にwinとあるのがWindows用で、cp33とあるのがPython3.3用
whlファイルはインストーラ使わなくても
拡張子をzipに変えて解凍し\Lib\site-packagesフォルダに入れれば動く

333 :デフォルトの名無しさん:2014/09/05(金) 03:29:00.33 ID:ntZcqOEB
>>330
pyqtって外部ライブラリを使うと金が掛かるの?

334 :デフォルトの名無しさん:2014/09/05(金) 08:54:26.18 ID:vSgfL4D2
変数名にも2バイト文字を使えるようにしろ

335 :デフォルトの名無しさん:2014/09/05(金) 08:58:44.47 ID:NMfZE3Cv
ジャップ脳どうにかしろ

336 :デフォルトの名無しさん:2014/09/05(金) 09:16:52.85 ID:SzRzlQrZ
今時2バイト文字とか言っちゃう奴

337 :デフォルトの名無しさん:2014/09/05(金) 13:31:24.75 ID:EqZl1vUZ
DJangoを翻訳したら日本のDJangoプロジェクトに潰されるだけ
知名度が無い奴が翻訳に手を出したら知名度ある奴の声で干されるよ
不満があっても縄張りは守るべき

338 :デフォルトの名無しさん:2014/09/05(金) 15:09:42.85 ID:B+t3kUZb
>>334
Python3 ならある程度使える

339 :デフォルトの名無しさん:2014/09/05(金) 16:55:34.89 ID:C4S9TPhj
>>337
さっそく基地外が現れたなw

340 :デフォルトの名無しさん:2014/09/05(金) 17:54:52.41 ID:NMfZE3Cv
別にこんなスレで聞いてる奴が何かを成せるとも思えないし
好きに翻訳したらいいだろ
断言するけど1月後には忘れてるよ

341 :デフォルトの名無しさん:2014/09/05(金) 18:28:14.14 ID:jzMG0f6n
pythonのスクリプトで画像ファイルをリネームして
約400枚の画像のうち100枚くらいが消えてしまったんですけど、この100枚はどこに行ったんでしょうか?

342 :デフォルトの名無しさん:2014/09/05(金) 18:31:31.35 ID:H8H20MG/
pythonが働いたぶんの給料になった

343 :デフォルトの名無しさん:2014/09/05(金) 18:42:51.84 ID:+gwocEcR
上書きしたかPythonに見せかけたRubyの陰謀

344 :デフォルトの名無しさん:2014/09/05(金) 18:47:28.69 ID:/RgpSIEc
scipyのインストールはwindowsが一番楽
linuxはとてつもなく面倒くさい

345 :デフォルトの名無しさん:2014/09/05(金) 18:57:53.26 ID:73PYqi2a
>>344
知ってるけど、それが何か?

346 :デフォルトの名無しさん:2014/09/05(金) 19:03:11.46 ID:B+t3kUZb
簡単に入りそうだけど具体的にどこが難しいん

347 :デフォルトの名無しさん:2014/09/05(金) 19:38:26.87 ID:/RgpSIEc
入りそうって予測じゃなくて結果で語れ

348 :デフォルトの名無しさん:2014/09/05(金) 19:50:43.32 ID:H8H20MG/
apt-get install python-scipy

349 :デフォルトの名無しさん:2014/09/05(金) 20:02:23.65 ID:B+t3kUZb
>>347
2chに結果だけ書いてあってそれを信じるのか?

350 :デフォルトの名無しさん:2014/09/05(金) 20:41:00.38 ID:N3l99Mqq
すんません、以下のようにタプルのリストの中身を
csvファイルとして書き出すにはどうすればいいですか

[(1,2,3),(4,5,6),(7,8,9)]

1,2,3改行
4,5,6改行
7,8,9改行

351 :デフォルトの名無しさん:2014/09/05(金) 21:03:09.38 ID:B+t3kUZb
import csv
writer = csv.writer(open(...))
for tup in [(1,2,3), ...]: writer.writerow(tup)

352 :デフォルトの名無しさん:2014/09/05(金) 21:33:05.09 ID:yYkcJRXP
>>350
#1, #2 お好きな方をどうぞ。

if __name__ == "__main__":
import csv
L = [(1,2,3),(4,5,6),(7,8,9)]
path = "a.csv"
with open(path, "w") as csv_file:

csv_writer = csv.writer(csv_file)

for tup in L: # 1.
csv_writer.writerow(tup) # 1.
# or
#
# csv_writer.writerows(L) # 2.

353 :デフォルトの名無しさん:2014/09/05(金) 21:37:39.84 ID:uS50mHWr
>>344
ど素人乙。

354 :デフォルトの名無しさん:2014/09/05(金) 22:37:37.05 ID:BuYJkYis
scipy のインストール pip でも apt でも特に苦労した記憶ないけどなぁ

355 :デフォルトの名無しさん:2014/09/06(土) 11:20:53.48 ID:qFRbG2Z2
ふつうの Linux ユーザは自分で make install なんてふだんしないからな。
scipy の make install がめんどくさいかどうかしらんけど。

356 :デフォルトの名無しさん:2014/09/06(土) 15:43:10.65 ID:NtkIEr6D
マルチスレッドを使っちゃいけない環境なんですけど
Pythonの標準ライブラリ限定で
http://docs.python.jp/3/library/concurrency.htmlを使わなければ大丈夫という認識でいいですか?

357 :デフォルトの名無しさん:2014/09/06(土) 15:46:55.13 ID:3Ci1QYt7
> マルチスレッドを使っちゃいけない環境
なんでこんな環境なの?
その理由によるとしか言えない。

358 :デフォルトの名無しさん:2014/09/06(土) 15:49:34.19 ID:73g62t4Z
インタプリタの実装によってはネイティブスレッド使ってるかも知れないし、変な前提おくのは危険

359 :デフォルトの名無しさん:2014/09/06(土) 15:50:45.68 ID:NtkIEr6D
マルチスレッドを使うと落ちるプログラムだから

360 :デフォルトの名無しさん:2014/09/06(土) 16:01:39.42 ID:73g62t4Z
そのプログラムのreadmeにさぁ
もう少し「マルチスレッド」が正確に定義されてないわけ?

361 :デフォルトの名無しさん:2014/09/06(土) 16:05:03.14 ID:NtkIEr6D
マルチスレッドはこちらを見てください
http://e-words.jp/w/E3839EE383ABE38381E382B9E383ACE38383E38389.html
質問締めます

362 :デフォルトの名無しさん:2014/09/06(土) 16:05:44.35 ID:NtkIEr6D
この時間はスレッドすら知らないバカしかいないな

363 :デフォルトの名無しさん:2014/09/06(土) 16:06:10.15 ID:73g62t4Z
そういう辞書の単語の話してんじゃねえよクソカス
てめえの首締めろ

364 :デフォルトの名無しさん:2014/09/06(土) 16:39:05.17 ID:ewJ1qW7A
エスパーでレスできない奴に2chを使うのは難しい

365 :デフォルトの名無しさん:2014/09/06(土) 16:44:17.65 ID:ChfT6Oe0
自演を見て見ぬふりをするー力ですね

366 :デフォルトの名無しさん:2014/09/06(土) 16:51:19.96 ID:Ya/Sb4GC
マルチスレッドが駄目ならマルチプロセスを使えばいいじゃない

367 :デフォルトの名無しさん:2014/09/06(土) 19:57:34.69 ID:+c/XgZRA
pygame使って書かれてる 1000行以下のコードをたくさん写経したい

368 :デフォルトの名無しさん:2014/09/06(土) 21:20:09.98 ID:aSqZC9W5
>>366
マリーアントワネット乙

369 :デフォルトの名無しさん:2014/09/06(土) 22:08:31.22 ID:s8SMoxGr
マルチ商法でPythonを使う方法を教えて下さい

370 :デフォルトの名無しさん:2014/09/06(土) 22:31:16.99 ID:Xltmdnlr
>>351-352
出来ましたサンクスです
タプルの各要素を文字列に変換してカンマでつないで改行を付けて…と
やるのは大変だなあと思っていたので助かりました

371 :デフォルトの名無しさん:2014/09/07(日) 04:31:27.38 ID:qQBINkdt
>>370
別に大変でもないだろう
for tup in [(1,2,3),(4,5,6),(7,8,9)]: print ",".join(map(str, tup))

372 :デフォルトの名無しさん:2014/09/07(日) 08:30:55.48 ID:eY6muIbX
なぜcsvは消えないのか

373 :デフォルトの名無しさん:2014/09/07(日) 08:44:35.48 ID:pkIO4dh2
柔軟さは無いけど一番シンプルなデータ交換形式だからなあ

374 :デフォルトの名無しさん:2014/09/07(日) 08:54:56.12 ID:aeHwCaJX
SuperCalcは偉大だったな

375 :デフォルトの名無しさん:2014/09/07(日) 10:02:43.05 ID:SXktbayV
csv って RFC とかあるんだっけ

376 :デフォルトの名無しさん:2014/09/07(日) 11:32:55.03 ID:rexNlDPn
import mycodeを書かないで
mycode.alert()って書いたら
mycode.pyを読み込んでmycode.pyで定義したalert()を呼び出すことを自動でやりたいんですが
オートローダっていうのはpythonでやってるのほぼ見かけません
pythonではオートローダはやらないものですか?

377 :デフォルトの名無しさん:2014/09/07(日) 12:53:49.04 ID:7c+Hv3u7
>ほぼ見かけません -> 見たことがある訳だな

>やらないものですか? -> 見たことあるのにやらないと思うのはなぜ?

378 :デフォルトの名無しさん:2014/09/07(日) 13:33:39.11 ID:rexNlDPn
見たことあること==やるべきではない

バカ回答者は引っ込んどけよ

379 :デフォルトの名無しさん:2014/09/07(日) 13:55:48.46 ID:v5LNVtzh
似たようなのはできると思う
でもPythonの世界でトリッキーなコードはイカンでしょ
import thisしてみよう

380 :デフォルトの名無しさん:2014/09/07(日) 14:22:18.08 ID:MFWv1auY
>>376
プログラミング歴は長いけどオートローダという仕組み自体初めて聞いた
調べてみたらPHPの機能のようだが…(PHPは一度も触ったことがないから知らない)
http://php.net/manual/ja/language.oop5.autoload.php

IDEを使えばimportは自動で補完されてそのモジュールの情報が入力候補に反映されるようになる
オートローダは実行時にモジュールを指定するからIDEの入力支援が得られない
ゆえにPythonに限らずオートローダとやらを使いたがる人はメモ帳で開発してる人など少数派ではないかな

381 :デフォルトの名無しさん:2014/09/07(日) 14:34:15.31 ID:wcTCVDdd
[見たことあること==やるべき] ではない
[見たことあること==やるべきではないこと]

382 :デフォルトの名無しさん:2014/09/07(日) 15:23:05.69 ID:tMQWCYQT
(歴が長いのにautoload知らないってことはperlやruby触ったことがない人なのかな)

383 :デフォルトの名無しさん:2014/09/07(日) 15:27:25.45 ID:eUMfgX6t
そりゃ誰が好き好んでゴミ箱に手を突っ込むんだ?
おまえの趣味なら普通に引くから止めた方がいいぞ

384 :デフォルトの名無しさん:2014/09/07(日) 15:42:08.05 ID:qGzfz7wC
漏れも引くわ
Basic の
On Error Resume Next
に通じるものがあるな

385 :デフォルトの名無しさん:2014/09/07(日) 18:39:24.77 ID:LouszFLz
遅延ロードしてスタートアップを速めたいのかも
しかしバカ回答者とか過激ね

386 :デフォルトの名無しさん:2014/09/07(日) 18:45:28.34 ID:eUMfgX6t
昨日から沸いてるマルチスレッドがどうとか君じゃないの

387 :デフォルトの名無しさん:2014/09/07(日) 21:01:43.28 ID:8sSyeZUl
まあ、Pythonではやらない(やるべきでない)が答えでいいじゃない終わり終わり

388 :デフォルトの名無しさん:2014/09/08(月) 00:04:05.59 ID:MQoHZ59l
>>382
PerlとRubyのautoloadは遅延読み込みの機能でPHPの未定義モジュール自動読み込み機能とは別じゃね?

389 :デフォルトの名無しさん:2014/09/08(月) 01:59:20.03 ID:295S7C6I
超初心者なのでPython3xにwxPythonをpipで入れる方法でハマったんで
これからの人用に書いときますん。
pip install -U --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix

検索で調べた結果のやつはwxPython_PhoenixじゃなくてwxPython-Phoenixになってるので
コピペ実行するとエラーでインストールできなかったんで。

ところで、3.4.1が扱えるおすすめのエディタ教えてください。
pyscripterが使えないようなのでPyCharm使ってるんですが、
他におすすめがあれば是非

390 :デフォルトの名無しさん:2014/09/08(月) 02:07:51.88 ID:jLwgo0pq
初心者向けじゃないけどvim

391 :デフォルトの名無しさん:2014/09/08(月) 02:22:17.72 ID:qdDflaMT
秀丸とipythonを連携して賢い補完使ってる

392 :デフォルトの名無しさん:2014/09/08(月) 03:02:16.77 ID:tbHi8RxM
言語や言語のバージョンごとにエディタ使い分けるとか言う輩からは知性やプログラミングセンスを感じられない。

393 :デフォルトの名無しさん:2014/09/08(月) 03:46:00.76 ID:f5Blo0Jc
atom

394 :デフォルトの名無しさん:2014/09/08(月) 06:15:54.66 ID:B3WRwJbR
pycharmで不満とか、vimくらいしか希望がないと思うわ

395 :デフォルトの名無しさん:2014/09/08(月) 16:18:32.22 ID:7mMD4zWs
すみません、素人ですが正規表現で
リストの中から、アンダーバー2個+数字3桁〜4桁 を検索して、個数をカウントしたいんですがどうかけばいいでしょうか?
["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]

__7621 ...2個
__762 ...1個
_7629...1個

396 :デフォルトの名無しさん:2014/09/08(月) 16:23:35.33 ID:dO+Fd23e
import re
s=["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]
re.findall('_\d', ''.join(s))
print(len(s))

397 :デフォルトの名無しさん:2014/09/08(月) 17:32:55.85 ID:7mMD4zWs
>>396
ありがとう兄貴

398 :デフォルトの名無しさん:2014/09/08(月) 17:38:36.41 ID:jHIpD0hc
import re
from collections import defaultdict
L = ["ehwhuuw__7621xbu","ehuuw__762","ew__7629ewbu","e3uw__7621w"]
d = defaultdict(int)
for s in re.findall(r"__\d{3,4}", "\n".join(L)):
 d[s] += 1
for k, v in d.items():
 print("{} ...{}個".format(k, v))

399 :デフォルトの名無しさん:2014/09/08(月) 19:12:15.84 ID:2hDWn5Kx
ランダム値を4つ格納したタプルを作ろうと思って
以下のコードを書いたんですが
変数 i が何にも使われないのでもったいなく思います
iを使わないで4回ランダム値を作る方法はありますか

import random
r4 = tuple(random.randint(0, 9) for i in range(4))

400 :デフォルトの名無しさん:2014/09/08(月) 19:26:07.70 ID:jHIpD0hc
r4 = (random.randint(0, 9), random.randint(0, 9), random.randint(0, 9), random.randint(0, 9))

401 :デフォルトの名無しさん:2014/09/08(月) 19:26:57.42 ID:JJm3d9pE
>>400
絶対書くと思ったw

思い留まってよかった

402 :デフォルトの名無しさん:2014/09/08(月) 19:50:09.43 ID:PbRMq4gS
r4 = tuple('%04d' % random.randint(0,9999))

403 :デフォルトの名無しさん:2014/09/08(月) 22:10:17.54 ID:05qoBtOF
(random.randint(0,9),)*4

404 :デフォルトの名無しさん:2014/09/08(月) 22:12:30.02 ID:05qoBtOF
今の無し

405 :デフォルトの名無しさん:2014/09/08(月) 23:24:33.62 ID:2hDWn5Kx
助言ありがとうございます
自分でもitertoolsのドキュメントを見て何とか作ったんですが
すごく見づらくて、変数を一つなくすために敢えてこれを採用する
理由はないと思った
>>399の方がマシに見える

import random, itertools
r4 = tuple(itertools.starmap(random.randint, itertools.repeat((0, 9), 4)))

406 :デフォルトの名無しさん:2014/09/08(月) 23:26:21.10 ID:4KrAPuZv
numpy使っちゃダメなんか?

import numpy as np
r4 = np.random.randint(0, 9, 4)

407 :デフォルトの名無しさん:2014/09/09(火) 00:23:43.34 ID:O602X3BE
iを_にしたらこれは使わないぞって見た目になる

408 :デフォルトの名無しさん:2014/09/09(火) 01:32:39.94 ID:qMrOeKwe
>>399
もったいないから使いたくないって発想が意味分からん
ループで回す時はどの言語でもindexは使うけど

409 :デフォルトの名無しさん:2014/09/09(火) 04:51:15.63 ID:1Ho4xFY0
2.x だと内包表記内で使う一時変数のスコープ問題と、
lint等で未使用変数の検査に引っ掛かる事、くらいかな。

後者は、変数名を _ にする事でこの変数は使わないという意図を伝えられます。

410 :デフォルトの名無しさん:2014/09/09(火) 08:29:53.02 ID:SEObCJuW
リスト内包じゃなくてジェネレータ式だから
スコープの問題は2.xでも無いと思う

411 :デフォルトの名無しさん:2014/09/09(火) 21:49:36.95 ID:QKhHrQUh
python -r "print(1)"
こんな感じでコマンドラインからコードを渡して実行する方法を教えてください

412 :デフォルトの名無しさん:2014/09/09(火) 21:50:25.81 ID:QKhHrQUh
pythonに引数を渡さないで起動するインタラクティブシェルとかipythonじゃなくて
python 引数 "コード"
で実行できるのがやりたいんです

413 :デフォルトの名無しさん:2014/09/09(火) 21:51:02.84 ID:1Ho4xFY0
>>411
-c

414 :デフォルトの名無しさん:2014/09/09(火) 21:54:55.57 ID:QKhHrQUh
>>413
ありがとうございます。

415 :デフォルトの名無しさん:2014/09/10(水) 18:36:38.61 ID:/KH51cxp
      \       ヽ           |        /        /
          \      ヽ               /      /
‐、、         殺 伐 と し た ス レ に 鳥 取 県 が ! !      _,,−''
  `−、、                  __/\            _,,−''
      `−、、              _|    `〜┐         _,,−''
                      _ノ       ∫
                  _,.〜’        /
───────‐     ,「~             ノ    ───────‐
               ,/              ` ̄7
                |     島 根 県     /
           _,,−'   ~`⌒^7            /    `−、、
        _,,−''            丿            \,      `−、、
 ,'´\           /  _7       /`⌒ーへ_,._⊃         /`i
 !   \       _,,-┐    \    _,.,ノ          r‐-、、      /   !
 ゙、   `ー--<´   /      L. ,〜’             ゙、  >−一'′   ,'
  y'  U      `ヽ/     /            ヽ      ヽ '´     U   イ
                                ____
         /      __        |       \____\
    ___/__ / ̄    ____|____ \ \____\
       //ヽ   /___         /|\       \ \____\
     / / ヽ  / /__     /  |  \       \_______
   /  /   / /   /     /    |    \          |    \
  /   /  / /  _/   __/      |      \__      |     \  ̄―_

416 :デフォルトの名無しさん:2014/09/10(水) 18:59:05.86 ID:hXO3q56q
Ruby スレでどうぞ

417 :デフォルトの名無しさん:2014/09/10(水) 23:53:54.94 ID:hgFKfnel
a = [1, 2]
b = [1, 2, 3]
c = list(set(a) - set(b))
print(c)
d = list(set(b) - set(a))
print(d)

aとbから重複しない値のみ取得したいんですがこうやって引き算すると順番が違うだけで結果が変わってきます
ここでは重複してない値は3なので[3]の結果が欲しいんですが良い方法を教えてください

418 :デフォルトの名無しさん:2014/09/11(木) 00:02:19.06 ID:+cqss+B2
set(a) ^ set(b)

419 :デフォルトの名無しさん:2014/09/11(木) 00:07:58.68 ID:NkzLw49L
set(a).symmetric_difference(set(b)) も同じ

420 :デフォルトの名無しさん:2014/09/11(木) 00:20:59.39 ID:SkcYUdPe
>>418-419
覚えましたありがとうございます

421 :デフォルトの名無しさん:2014/09/11(木) 08:06:46.97 ID:2Pzpu/rd
>>> La = [1, 2, 4]
>>> Lb = [1, 2, 3]
>>> sta = set(La)
>>> stb = set(Lb)
>>> sta ^ stb
{3, 4}
>>> sta - (sta & stb)
{4}
>>> stb - (sta & stb)
{3}

422 :デフォルトの名無しさん:2014/09/11(木) 08:45:20.82 ID:BpRRpzGv
>>> La = [1, 2, 4]
>>> Lb = [1, 2, 3]
>>> sta = set(La)
>>> stb = set(Lb)
>>> sta = sta ^ stb
>>> stb = sta ^ stb
>>> sta = sta ^ stb
>>> sta
{1, 2, 3}
>>> stb
{1, 2, 4}

423 :デフォルトの名無しさん:2014/09/11(木) 16:36:14.20 ID:fJPG+Epr
何でパイソンでは
1 or 0 # 1
-1 or 1 # 1
帰ってくる値がboolじゃなくて大きい値が返ってくるのは何故ですか?

そして
-1 or 0 # -1
これが0にならないのは何故ですか?0のほうが-1より大きいのに何故ですか?

424 :デフォルトの名無しさん:2014/09/11(木) 16:40:22.95 ID:SNUYrGFx
>>> 0 or 1
1
>>> 1 or -1
1
>>> -1 or 1
-1
>>> -1 or 0
-1
>>> 0 or -1
-1

425 :デフォルトの名無しさん:2014/09/11(木) 16:59:20.81 ID:fJPG+Epr
あと
not not -1 # True
なのに
True == not not -1
て書くとシンタックスエラーになるのはどうしてですか?
True == (not not -1)書かないといけなのですか?

426 :デフォルトの名無しさん:2014/09/11(木) 17:12:36.46 ID:FGYKtmPM
>>423
http://docs.python.jp/3.3/reference/expressions.html#boolean-operations
>>425
http://docs.python.jp/3.3/reference/expressions.html#operator-precedence
言語仕様くらい読めよ

427 :デフォルトの名無しさん:2014/09/11(木) 18:25:04.21 ID:zsr7lN4z
CGIで次のようなことをやりたいと思っています。

ブラウザからtest.cgiに次のパラメータをセットします
http://xxx.xx.xx/test.cgi?ADR=****
(****の部分は住所文字列をEUC-JPでURLエンコードしたもの)

test.cgiで、****を取り出したいです。
(その後別のURL
http://aaaa.aa.aa/hoge.cgi?ADR=****&amp;HOGE=
のようなものを作りたいです。)

test.cgiは今こんな感じです。
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import cgi
import os

if 'QUERY_STRING' in os.environ:
query = cgi.parse_qs(os.environ['QUERY_STRING'])
else:
query = {}

if query.has_key('ADR'):
#
# ここらへん
#
else:
qstring = "%c5%ec%b5%fe%c5%d4%c0%e9%c2%e5%c5%c4%b6%e8%b4%dd%a4%ce%c6%e2%b0%ec%c3%fa%cc%dc"
#上は「東京都千代田区丸の内一丁目」をeuc-jpでエンコードしたもの

「ここらへん」のところをどのように書けばいいでしょうか?
バージョンは2.7です。

428 :デフォルトの名無しさん:2014/09/11(木) 18:27:17.36 ID:SNUYrGFx
ぐぐれ

429 :デフォルトの名無しさん:2014/09/11(木) 19:00:53.66 ID:IKu3TPqx
EUC(苦笑)

430 :デフォルトの名無しさん:2014/09/11(木) 19:28:49.11 ID:/zpmHeuB
PyMouseってどうやって使うの?
PyMouseというモジュールがどこにもない

win-64bitです

431 :デフォルトの名無しさん:2014/09/11(木) 19:31:48.33 ID:NzeRUD4Z
https://github.com/SavinaRoja/PyUserInput
説明読んだの?

432 :デフォルトの名無しさん:2014/09/12(金) 19:52:51.46 ID:PX2u49pT
リストが空かどうか調べる場合

list1 == []
list1 == None
どれもTrueになるけどどれが一番いい?

433 :デフォルトの名無しさん:2014/09/12(金) 19:55:12.96 ID:ndpp7y5u
if no list1:
print("list1は空です。")

434 :デフォルトの名無しさん:2014/09/12(金) 19:56:05.39 ID:ndpp7y5u
>>433 は間違い。

こっちが正解
if not list1:
print("list1は空です。")

435 :デフォルトの名無しさん:2014/09/12(金) 20:04:52.80 ID:ylwL1QX/
not len(list1)

436 :デフォルトの名無しさん:2014/09/12(金) 20:20:00.55 ID:r3UiEGpM
ここいらはPythonのよろしくない面だよね
is Noneでも、== Noneでもエラーにならないのでバグの元
「if not オブジェクト名」の形式って、慣れないと違和感ありまくりだし
オブジェクト名のあとに何か比較演算子を書き忘れたケースと区別が付かない

Rubyには オブジェクト名.Empty?という形式の、空かどうかを調べるための
専用メソッドがあるらしい
文字列やリストが空であることを調べる処理は、実践でよく出てくるので
こっちのアプローチの方がいいよね

437 :デフォルトの名無しさん:2014/09/12(金) 20:22:47.52 ID:yP3LRu33
list1 == None は False ですよね?

>>436 個人的にはあんまりメソッドが肥大化するのもなぁ…という気もちょっとするぜ

438 :デフォルトの名無しさん:2014/09/12(金) 20:32:52.43 ID:nceQ+kAP
そんなのセマンティック次第としか

439 :デフォルトの名無しさん:2014/09/12(金) 20:50:38.60 ID:6/MBgQha
ちゃんとアンカーはって話しようぜ。

>>432
>>437もいってるけど、

「リストが空」の意味が「要素が一つもないリストオブジェクト [] 」なら、

list1 == []
は True

list1 == None
は False

if 文でつかうなら>>434
それがリストであり、かつ空かどうかまで調べたい(っていう用途があるのかどうかしらんけど)なら、
list1 == []

440 :デフォルトの名無しさん:2014/09/12(金) 21:32:59.99 ID:0egAJuXf
>>439
型を気にしないのは慣れの問題だと思うけど、習得時のつまづき発生ポイントの一つだった
細かく調べなくても大丈夫だよ楽しようぜ、という型に対する姿勢をPythonから感じている

441 :デフォルトの名無しさん:2014/09/12(金) 21:49:59.15 ID:42d4Lifz
list1 = []
print([] == list1) # True by Python 3.4

442 :デフォルトの名無しさん:2014/09/12(金) 22:18:13.02 ID:w7Q0XV7Q
>>436
==Noneと、is Noneの違いでバグは起こり得ないよ
意味は同じだけど、「シングルトンだから」とか「早いから」とかでisが推奨されてるだけだと思ってる

>オブジェクト名のあとに何か比較演算子を書き忘れたケースと区別が付かない
そういうときはnotの優先順位の低さ的にnot (number == 42)のようにかっこをつけることになる
だから書き忘れと区別がつかないことはないよ

443 :デフォルトの名無しさん:2014/09/12(金) 22:57:04.97 ID:ey3J6Nj0
空か調べるだけのことにリストの新規インスタンス作ってから破棄させるのは無駄が多いよ

444 :デフォルトの名無しさん:2014/09/13(土) 01:07:17.12 ID:orQ+g9GD
True by Python 3.4てことはPython 3.5で変わったのか

445 :デフォルトの名無しさん:2014/09/13(土) 06:24:29.70 ID:wsjksV8g
絶対にリストってわかってたら要素数を調べる
他の可能性もあるならそこらへんも考慮して他の比較する

446 :デフォルトの名無しさん:2014/09/13(土) 09:55:01.17 ID:MVvvLNTb
比較する変数が絶対にリストである保証があるならnotでいいんだけど・・・

not None # True
not [] # True
not [1] # False
not 1 # False
not "1" # False

notだけで判定するのは危ないと思う

not None and len(None) > 0 # TypeError
not 1 and len(1) > 0 # False
not [1] and len([1]) > 0 # False
not 1 and len(1) > 0 # False
not "1" and len("1") > 0 # False

447 :デフォルトの名無しさん:2014/09/13(土) 10:23:27.54 ID:6NBWszmd
>>446
listが空かどうかの判定と、等号を組み合わせることあるの?

448 :デフォルトの名無しさん:2014/09/13(土) 10:29:26.61 ID:2tjB89qC
len(list)が負になるケースがあるのかも知れないぞ

449 :デフォルトの名無しさん:2014/09/13(土) 10:29:36.85 ID:JzuVyG0H
>>446
その例で何を示したいのかよくわからん

> not [1] and len([1]) > 0 # False
これは「[1]が空であってしかも長さが0より大きい」って意味だからlistなどでは必ずFalseになるよ

not Lで空か判定しましょうってのはGoogleスタイルガイドなどでも書かれてるから、これはもはやPythonの流儀じゃね

450 :デフォルトの名無しさん:2014/09/13(土) 10:37:03.93 ID:ls6jz6C9
Pythonのローカル変数って関数内でしか生成されないですよね?
次のコードを実行すると、変数 i は外側も内側もきちんと0から9まで
回っているように見えるのはなぜでしょ
本来なら、内側のループで i が 9 に更新きされてしまうので
外側のループは1度しか実行されないと思うんですが

for i in range(10):
  print('外:{}'.format(i))
  for i in range(10):
    print('内:{}'.format(i))

451 :デフォルトの名無しさん:2014/09/13(土) 10:44:48.70 ID:pJQFHgIC
>>446
リストであるかと、空であるかを組み合わせるなら、普通に…
if isinstance(x, list) and not x:

>>450
iの値に1が加算されるんじゃない
rangeが保持してるカウンタの値がループが回るごとにiへ代入される

452 :デフォルトの名無しさん:2014/09/13(土) 11:50:05.10 ID:0s9sqgks
>>432
空のリストか判定する式をまとめるとこうなるか

# ブール値のコンテキストでFalseと評価される値が真
not value
# 空のシーケンスかマッピングが真
not len(value)
# 又は
len(value) == 0
# 空のリストが真
isinstance(value, list) and not value
# 又は
repr(value) == '[]'
# 又は
value == []

453 :デフォルトの名無しさん:2014/09/13(土) 11:56:28.31 ID:MVvvLNTb
type([]) == list and len([])

454 :デフォルトの名無しさん:2014/09/13(土) 19:49:14.17 ID:6NBWszmd
>>432
1番良い方法を教えて下さいって奴に
複数の方法を教えるってなんだいそれ?
しかもまとまってないし。
複数の方法をダラダラ並べてるだけだ。

>>451 の書いてる通り、
if isinstance(obj, list) and not list:

が「1番」いいんじゃないの?

455 :デフォルトの名無しさん:2014/09/13(土) 19:52:31.44 ID:6NBWszmd
>>450
うーん、以下の結果で分かると思ってたけど分かりませんでした。
range() と変数のscopeの実装について知る必要があると思いましたよ。

挙動からシッタカで答えると、
Pythonでは、range()毎にindexを生成していて、
前のrange()のindexが生きている時に再びrange()を使うと、
当然に新しくindexを生成するんだけど、
生成するときには前のrange()のindexと
名前が被っているか?いないか?を考慮しない。

参照するときの名前解決の方法として、
参照するindexの名前と一致するrange()のindexが複数あれば、
新しくできたindexを優先して使っているんじゃないでしょうか?

if __name__ == "__main__":
for i in range(10):
print('外:i={}, id(i)={}'.format(i, id(i)))
for i in range(10):
print('内:i={}, id(i)={}'.format(i, id(i)))
print()

for j in range(10):
print('j={}, id(j)={}'.format(j, id(j)))

正確な話を知りたければ、本家に行って実装を聞くしかないんじゃない?

456 :デフォルトの名無しさん:2014/09/13(土) 21:08:23.51 ID:yoZ+gn+2
>>450
>>> for i in [0, 1, 2]:
print('外:{}'.format(i))
for i in [0, 1, 2]:
print('内:{}'.format(i), end=" ")
print('\n外:{}\n'.format(i))


外:0
内:0 内:1 内:2
外:2

外:1
内:0 内:1 内:2
外:2

外:2
内:0 内:1 内:2
外:2

457 :456:2014/09/13(土) 21:11:10.33 ID:yoZ+gn+2
>>> for i in [0, 1, 2]:
    print('外:{}'.format(i))
    for i in [0, 1, 2]:
     print('内:{}'.format(i), end=" ")
    print('\n外:{}\n'.format(i))

458 :456:2014/09/13(土) 21:33:16.48 ID:yoZ+gn+2
外側のループは外側のrange(10)で生成されるオブジェクトに対する処理
内側のループは内側のrange(10)で生成されるオブジェクトに対する処理
iは外側のループのたびに、外側オブジェクトの各要素に書き換えられる

459 :デフォルトの名無しさん:2014/09/13(土) 22:34:57.50 ID:cX8bnUuM
>>450
for ループは in の右にあるコンテナなりイテレータの値を取り出し尽くしたら終了する
そのコードだと外側のループはまだ 0 しか取り出してないので終了しない
C の for (; i < 10; i++) とは違う

460 :デフォルトの名無しさん:2014/09/13(土) 22:38:15.24 ID:p5KhMtpi
venvで仮想環境を作ったんですけど特定のディレクトリに言ったら自動でアクティブにする方法ありませんか?
~/python-root/flask以下ならflask関係のパッケージをインストールした環境
~/python-root/scraping以下ならスクレイピング関係のパッケージをインストールした環境
ってな具合に自動で切り替えたいんです

461 :デフォルトの名無しさん:2014/09/13(土) 23:10:16.78 ID:Mqgtp+Th
シェルでcdコマンド再定義するくらいしかねえだろ
virtualenv wrapperでそんなtipsあった気がする

462 :デフォルトの名無しさん:2014/09/13(土) 23:10:24.72 ID:NpwSNp6m
分からねえくせに長文とか何がしたいの

463 :デフォルトの名無しさん:2014/09/14(日) 00:40:39.25 ID:WjxSscFS
つまりそのあたりを面倒見てくれるpyenvを使うのがpython開発環境では楽ってことですね

464 :デフォルトの名無しさん:2014/09/14(日) 12:48:41.37 ID:+tpH58Gc
ABC=re.compile("abc")
s="xyzabcPQR"
ABC.search(s)
としたとき、左の"xyz"や右の"PQR"を拾う方法はありますか。
perlの$`とか$'に相当するものが欲しいのですが。

465 :デフォルトの名無しさん:2014/09/14(日) 13:15:20.04 ID:nmqX8w92
import re

r = re.compile(".*abc.*")
s="xyzabcPQR"
print(r.search(s))

466 :デフォルトの名無しさん:2014/09/14(日) 13:24:27.67 ID:3Uu/YUkP
>>464
import re

ABC = re.compile('(.*)abc(.*)')
s = 'xyzabcPQR'
ABC.search(s).groups()[0]
ABC.search(s).groups()[1]

467 :デフォルトの名無しさん:2014/09/14(日) 13:40:13.93 ID:GfzrwnZs
これはpythonとあまり関係ないですが皆さんエディタってなに使ってますか?

468 :デフォルトの名無しさん:2014/09/14(日) 13:40:14.17 ID:3Uu/YUkP
>>464
もう1つ

import re

ABC = re.compile('abc')
s = 'xyzabcPQR'
m = ABC.search(s)
s[:m.start()] # xyz
s[m.end():] # PQR

469 :464:2014/09/14(日) 13:44:15.09 ID:+tpH58Gc
ありがとうございます。

sの例が良くなかったかもしれませんが、
(.*)abc(.*)
だと、(正規表現がgreedyなため)最右のabcにマッチしてしまうのです。
s="aXbYcZabcDEFabcHIJ"
などというとき、左はaXbYcZ、右はDEF... と取り出す方法を探しています。

470 :464:2014/09/14(日) 13:48:26.98 ID:+tpH58Gc
>>468
この手がありましたか !
大変わかりやすいので、使いたいと思います。ありがとうございました。

471 :デフォルトの名無しさん:2014/09/14(日) 14:17:49.27 ID:DRyo//L5
s.split('abc', 1)

472 :デフォルトの名無しさん:2014/09/14(日) 15:37:15.25 ID:3Uu/YUkP
>>471
目的が文字列の分割だけならそれでOKだけど文字列メソッドのsplitはセパレータに正規表現を使えないのでre.split

import re
re.split('abc', s, maxsplit=1)

Perlの正規表現の特殊変数の代替なら >>468 のマッチオブジェクトを使ってスライスするのが無難かな
それか二度手間だけどマッチして確認した後にre.split

473 :464:2014/09/14(日) 21:36:44.44 ID:+tpH58Gc
いろいろとありがとうございました。
re.split()を使うのも、きれいだと思いましたが、ただ、split()は、
re.split(r"abc","xyz")
のように、マッチしなくても値を返してしまうので、判定が難しく、
>>468 法で行こうと思います。
ありがとうございました。

474 :デフォルトの名無しさん:2014/09/14(日) 22:09:01.99 ID:JKMJIKev
0xFFFFという数値からb'\xff\xff'というバイト列をつくりたいんですが
どのようにすればいいですか?
今は1バイトずつとりだしてbytes([0xff, 0xff])みたいにして作ってるんですが
もっといい方法ありませんか?

475 :デフォルトの名無しさん:2014/09/14(日) 22:20:03.03 ID:FgYFu2VK
Pythonの正規表現には、前方または後方から、
最短または最長で一致、という機能は無いの?

476 :デフォルトの名無しさん:2014/09/14(日) 22:29:07.66 ID:zLtoNInf
>>474
Python3.xのみ
>>> (0xffccaa).to_bytes(3, 'big')
b'\xff\xcc\xaa'

477 :デフォルトの名無しさん:2014/09/14(日) 22:35:06.61 ID:JKMJIKev
>>476
こういうの探してました!
ありがとうございます

478 :デフォルトの名無しさん:2014/09/14(日) 22:51:14.51 ID:gO6moQCP
>>475
他の言語でいいから、欲しい正規表現検索のコード書いてみて

何となく答えても、単語の意味が食い違いそうな気がしてならない

479 :475:2014/09/15(月) 01:29:41.72 ID:J5zOsfVv
>>478
>>469
>s="aXbYcZabcDEFabcHIJ"
>で、(正規表現がgreedyなため)最右のabcにマッチしてしまう

これを読んで、Pythonの正規表現には、前方または後方から、
最短または最長で一致、という機能は無いのかなと思っただけ

480 :デフォルトの名無しさん:2014/09/15(月) 01:50:35.09 ID:uGBCfR31
>>479
non greedy 一致なら *? がある

けれど、要望の取得なら、
re.split(s)で、['aXbYcZ', 'DEF', 'HIJ'] が得られるが?

481 :デフォルトの名無しさん:2014/09/15(月) 01:57:13.92 ID:QhVLGney
つうかさ、一通りドキュメント読んでから来いよと。
くだすれだからってなに質問してもいいわけじゃないよと。

482 :デフォルトの名無しさん:2014/09/15(月) 03:19:37.26 ID:PuXt1P2q
>>> ABC = re.compile('(.*?)abc(.*)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 18)
>>> m.group(0)
'aXbYcZabcDEFabcHIJ'
>>> m.group(1)
'aXbYcZ'
>>> m.group(2)
'DEFabcHIJ'
>>> ABC = re.compile('(.*)abc(.*?)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 15)
>>> m.group(0)
'aXbYcZabcDEFabc'
>>> m.group(1)
'aXbYcZabcDEF'
>>> m.group(2)
''
>>> ABC = re.compile('(.*?)abc(.*?)')
>>> m = ABC.search(s)
>>> m.start(), m.end()
(0, 9)
>>> m.group(0)
'aXbYcZabc'
>>> m.group(1)
'aXbYcZ'
>>> m.group(2)
''

483 :デフォルトの名無しさん:2014/09/15(月) 03:49:27.13 ID:byOIOgff
macにpygameをインストールしようと思って、このサイト(http://eimu-dev.hatenablog.com/entry/2013/03/05/210916)の通りにやりましたが、

pygame setup.py build のところで

error: command 'cc' failed with exit status 1

となってインストール出来ませんでした。

正しくインストールする方法を教えてください。
OS X 10.9.4です。

あとLibraryにFrameworksがなかったので、自分でmkdirで作ったんですけど大丈夫ですか?

484 :デフォルトの名無しさん:2014/09/15(月) 06:49:03.52 ID:/z9Uo8Hl
>>481
超初心者スレで何言ってんだお前?

485 :デフォルトの名無しさん:2014/09/15(月) 16:06:07.30 ID:Yn38ScJw
print int(float(111111111111111111111111111111111))
> 111111111111111115071913726050304

どうしたらいい?

486 :デフォルトの名無しさん:2014/09/15(月) 16:09:13.73 ID:GI5SOlSu
どうしたいの?

487 :デフォルトの名無しさん:2014/09/15(月) 16:14:18.67 ID:PuXt1P2q
>>485
http://jutememo.blogspot.jp/2008/09/python-3-float-decimal.html
http://piro-suke.hatenablog.com/entry/20070822/1187756537

488 :デフォルトの名無しさん:2014/09/15(月) 23:54:32.18 ID:OAdSsJdN
def a(s, l=[]):
l.append(s)
return l

for i in range(7):
print(a(i))

これ実行すると
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]
[0, 1, 2, 3, 4]
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 4, 5, 6]
ってなるのは何故ですか?
[0]
[1]
[2]
[3]
[4]
[5]
[6]
なると思ったのに

489 :デフォルトの名無しさん:2014/09/16(火) 00:02:12.57 ID:pfOEMVAs
>>488
return l ← リスト

490 :デフォルトの名無しさん:2014/09/16(火) 00:11:08.16 ID:+Ut5bl5+
>>488
Python だと、オプション仮引数への代入 l=[] は
(Ruby のように手続き a がコールされるたびではなく)
プログラムの実行開始時に1回だけ評価されるから

491 :デフォルトの名無しさん:2014/09/16(火) 00:35:51.35 ID:WETulgbf
その情報ってドキュメントのどこに載ってますか?

492 :デフォルトの名無しさん:2014/09/16(火) 00:41:42.43 ID:cG0GrrN4
>>491
http://docs.python.jp/3.3/reference/compound_stmts.html#function-definitions
太字で「デフォルトパラメタ値は関数定義が〜」の部分

493 :デフォルトの名無しさん:2014/09/16(火) 00:42:49.23 ID:FKFqnJBn
>>490
知らなかった
http://ideone.com/vVGytn

494 :デフォルトの名無しさん:2014/09/16(火) 00:45:50.35 ID:gOOnD5p7
>>492
ドキュメント中のそのページをどうやって見つけましたか?

495 :デフォルトの名無しさん:2014/09/16(火) 00:49:10.44 ID:WETulgbf
勉強になりました

496 :デフォルトの名無しさん:2014/09/16(火) 00:55:20.05 ID:O2mNZQJ7
じゃあ一度、引数指定して呼び出したら
次に省略して呼び出した時は前回の値が使われるのか?

497 :デフォルトの名無しさん:2014/09/16(火) 01:00:14.87 ID:cG0GrrN4
>>494
ごく普通に「Python 言語リファレンス」から「関数定義」を探すだけ

>>496
ちがう
a.__defaults__ のタプルとしてデフォルトパラメタ値が記憶されている
呼び出しのたびにそこから値がコピーされるだけ

498 :デフォルトの名無しさん:2014/09/16(火) 01:03:49.79 ID:WETulgbf
辞書を指定したらやっぱり同じようになったけど数値を指定しても引き継がないのはなぜですか?
リストとタプルと辞書限定ですか?

def a(n, l=0):
return n+l
print(a(1))
print(a(1))
print(a(1))

理想
1
2
3
現実
1
1
1

499 :デフォルトの名無しさん:2014/09/16(火) 01:07:48.97 ID:FKFqnJBn
>>498
>return n+l
この段階でn+1というオブジェクトが生成されるから

500 :デフォルトの名無しさん:2014/09/16(火) 01:11:45.46 ID:FKFqnJBn
明示的に第二引数を渡した場合
http://ideone.com/tvomMK

501 :デフォルトの名無しさん:2014/09/16(火) 01:23:27.04 ID:WETulgbf
def a(n, l=0):
l += n
return l
print(a(1))
print(a(1))
print(a(1))

502 :デフォルトの名無しさん:2014/09/16(火) 01:24:32.28 ID:WETulgbf
こうやってもリストとかと同じように値が使い回しになりませんでした

503 :デフォルトの名無しさん:2014/09/16(火) 01:24:54.05 ID:cG0GrrN4
>>498
ミュータブルであるかイミュータブルであるかの違い
イミュータブルなオブジェクト(数値や文字列やタプルなど)は、生成後に内容を書き換えることができない
一方、ミュータブルは(リストや辞書など)は、生成後でも内容を書き換えができる
i = 1
i = 2
これは一見内容を書き換えてるように見えるけど
実際は別のオブジェクトに差し替えている(内容書き換えではない)

504 :デフォルトの名無しさん:2014/09/16(火) 01:31:33.44 ID:WETulgbf
そういうふうになってるんですね
ありがとうございます

505 :デフォルトの名無しさん:2014/09/16(火) 01:32:12.86 ID:cG0GrrN4
>>502
l_default = 0
def a(n):
 l = l_default
 l += n
 return l
print(a(1))
print(a(1))
print(a(1))
こんな風に書き直せば理解でしやすいと思う

l_default = []
def a(s):
 l = l_default
 l.append(s)
 return l
print(a(1))
print(a(2))
print(a(3))

506 :デフォルトの名無しさん:2014/09/16(火) 01:48:27.25 ID:BeTOb36k
def gen(l=0):
&nbsp;while True:
&nbsp;&nbsp;yield l
&nbsp;&nbsp;l += 1

def a(n, g=gen()):
&nbsp;return n + g.next()

print(a(1))
print(a(1))
print(a(1))

理想
1
2
3
現実
1
2
3

507 :デフォルトの名無しさん:2014/09/16(火) 14:04:51.28 ID:D2tcSPbj
いまPython関連のツイートでPython2 vs Python3みたいな流れがありますけど
このスレの先輩方はどっち推しですか?
ぼくはPythonを学ぼうと思った時に新しいバージョンがPython3.2だったのでPython3をメインに使ってます

508 :デフォルトの名無しさん:2014/09/16(火) 14:39:21.04 ID:0isfMR1I
馬鹿はほっとけ

ぶっちゃげPython実装組にとってはどっちでも良いと言っている
両方のいいとこ取りして4を出すという選択しもあるんだから、とりあえずどうしたいかをコミュニティで発信してくれとのこと
外野で騒いでる馬鹿はほっておいてMLにどうしたいかを投げるべき

509 :デフォルトの名無しさん:2014/09/16(火) 14:46:10.28 ID:dhQsu6oC
Twitterでデカい声挙げてるのって
承認欲求と凄い一体感に狂ったバカしかいねえからな

510 :デフォルトの名無しさん:2014/09/16(火) 18:03:46.91 ID:wJwy3ubh
新しく始めるなら3にしない理由は皆無だわ
昔から使っていて過去の資産があるなら3にする必要性は皆無だわ

511 :デフォルトの名無しさん:2014/09/16(火) 18:35:16.33 ID:mfOy9iYG
3ではじめたけど2.7までしか対応していない外部ライブラリにざらに当って
非公式のやつをインストしているから不安感はある

512 :デフォルトの名無しさん:2014/09/16(火) 18:43:37.55 ID:dhQsu6oC
nlpとかsvmとか
学者が研究成果として公開してるような奴は基本放置だよね
彼らはセキュリティとかサポートとか関係ねえからな

513 :デフォルトの名無しさん:2014/09/16(火) 18:52:24.11 ID:QijYUKeu
scipyが3.4でも動くので助かってる

514 :デフォルトの名無しさん:2014/09/16(火) 18:53:04.31 ID:RmEmlo0B
GoogleAppEngineでさえ3への対応は10年後とからしいしね

515 :デフォルトの名無しさん:2014/09/16(火) 19:01:18.21 ID:dhQsu6oC
公式がCPython2のサポート切ったって
誰かがサポート続けるだろうし何の問題もないと思うけどね
むしろ何を心配してるんだか

516 :デフォルトの名無しさん:2014/09/16(火) 19:06:45.67 ID:AJgGs2AR
>>514
Google Apps の Python API も
見捨てられた感ありあり

517 :デフォルトの名無しさん:2014/09/16(火) 19:53:30.56 ID:QijYUKeu
GAEはおわこん
時代はopenshift

518 :デフォルトの名無しさん:2014/09/16(火) 21:39:23.11 ID:jNa9hdfc
>公式がCPython2のサポート切ったって
>誰かがサポート続けるだろうし何の問題もないと思うけどね
>むしろ何を心配してるんだか

そんな暇な奴はいないし、どこの誰だかわからん奴がサポートしても使えない

519 :デフォルトの名無しさん:2014/09/16(火) 21:55:47.81 ID:PrDIKP1S
暇な奴がいるじゃねえか
どこの誰ってか法人でやってる奴が

520 :デフォルトの名無しさん:2014/09/16(火) 22:00:31.57 ID:HdFIBRgS
どこの誰だかわからん奴がサポートしても使えないし、
OpenSSL並みに有名なら実装がゴミでもクズでもOKという不可思議な業界。

521 :デフォルトの名無しさん:2014/09/16(火) 22:07:59.00 ID:a5PZ175E
Guidoが居るDropboxのコードベースが
Python2に依存しまくってるらしいんだよなぁ

522 :デフォルトの名無しさん:2014/09/16(火) 22:25:29.69 ID:xheLKUX2
>>521
そのソースどこにあるか教えて

523 :デフォルトの名無しさん:2014/09/16(火) 23:08:56.52 ID:lrhjfC4+
Python3限定でwebフレームワークでいいのが出たら絶対にpython2の人気は消える
railsに見習え

524 :デフォルトの名無しさん:2014/09/16(火) 23:26:02.08 ID:4GlNhcXA
海外のPython関連の新刊書籍はPython 3で書かれているし、緩やかに移行していくでしょ
大学の講義でPython 3が使われて、そこから新たな開発者が生まれて…

525 :デフォルトの名無しさん:2014/09/17(水) 01:49:46.48 ID:r6QqAGtE
>>511
そんないまだに3に対応出来てないライブラリをなんで使うのかと、そういう話だよ。

>>514
Googleはもうこれ以上Pythonに関わり合いたくないって感じがプンプンするけど。

526 :デフォルトの名無しさん:2014/09/17(水) 07:58:01.57 ID:rTfH0K+p
Googleって自分の言語何個も作ってたよな

527 :デフォルトの名無しさん:2014/09/17(水) 10:43:12.69 ID:k7ATJ22m
pythonでGoogle使うのは妨げてる訳ではない

528 :デフォルトの名無しさん:2014/09/17(水) 12:46:05.75 ID:YmAby2mX
scipyの使い方がわからないので自分で調べて記事に書いたら誰かがこうしたほうがいいよとか親切に教えてくれますか

529 :デフォルトの名無しさん:2014/09/17(水) 13:15:40.84 ID:J7Xb/w8k
ブログに書いてコメント許可すればどこかの暇人が書いてくれるかもね。

530 :デフォルトの名無しさん:2014/09/17(水) 13:27:03.64 ID:VxgzEsby
そんな夢の様な事をしてくれる方がいるなら俺も書きたいわ
現実はきついのではないかなあ・・・

531 :デフォルトの名無しさん:2014/09/17(水) 14:11:47.40 ID:or6PO8CM
つぶやいたーと組み合わせるとちょっとだけ確率が増える

532 :デフォルトの名無しさん:2014/09/17(水) 20:19:57.82 ID:G4POkF8M
stack exchange に beta だけど code review ってのがあるから
用途によっては使ってみるといいかもしれない

533 :デフォルトの名無しさん:2014/09/18(木) 00:56:31.91 ID:hBulv5ba
python 文法詳解
http://www.amazon.co.jp/dp/4873116880/

この本オライリー本だけどamazon.comでは扱ってない
日本だけの出版なのかな?
著者も日本人だけど

534 :デフォルトの名無しさん:2014/09/18(木) 01:12:33.79 ID:spxgJ8Ad
>>533
そうなの?珍しいな

535 :デフォルトの名無しさん:2014/09/18(木) 01:17:30.54 ID:jNFP3P67
日本人が書いたプログラミング系の書籍ってどれくらいの割合で英訳されるんですんかね。

536 :デフォルトの名無しさん:2014/09/18(木) 05:50:05.02 ID:xGrJvmYs
ND

537 :デフォルトの名無しさん:2014/09/18(木) 06:11:05.32 ID:TAWLJUCR
ネットで読める良い解説書ってありませんか?

538 :デフォルトの名無しさん:2014/09/18(木) 06:18:52.82 ID:xGrJvmYs
お前のレベルに合わせて書かれたものが良い解説書であるならば
そんなものは自分で探すしかないに決まってるだろう

539 :デフォルトの名無しさん:2014/09/18(木) 07:20:35.18 ID:j0A0R3ie
これはひどい

540 :デフォルトの名無しさん:2014/09/18(木) 07:54:08.55 ID:0Nh6uZW9
>>533
電子書籍って出るの遅いんだっけ?

541 :デフォルトの名無しさん:2014/09/18(木) 09:45:54.61 ID:NE4RReH8
ステマ?

542 :デフォルトの名無しさん:2014/09/18(木) 11:05:01.99 ID:spxgJ8Ad
技術書ステマしたところで、、、っていう
増刷するのなんて皆無だしな

543 :デフォルトの名無しさん:2014/09/18(木) 12:42:26.02 ID:0+D2RILR
ステマ言いたい年頃なんでしょ

544 :デフォルトの名無しさん:2014/09/18(木) 13:24:29.13 ID:M8giSVcf
python2とpython3どっちがいいっていうのはこのスレでも昔出てたのに何で今さらTwitterで話題になっているんですか?
やっぱりこのネタに乗っかって今ブログで記事書いてる人たちは売名行為と捉えてもいいですか?

545 :デフォルトの名無しさん:2014/09/18(木) 13:58:39.94 ID:aq/nB7oQ
>>544
PyCon が原因

546 :デフォルトの名無しさん:2014/09/18(木) 14:28:37.33 ID:mq0MWg2t
で今は2系と3系のどっちが人気なの?
3系を基本使わないからわからないけど
3系のライブラリは充実してきてるんだろうか?

547 :デフォルトの名無しさん:2014/09/18(木) 15:13:12.73 ID:NVU0pS4g
3系のライブラリは徐々にだけど確実に充実してきてる。
だけど、「もう3にしか対応しないぜ。2使っている奴は死ね」と宣言した大型ライブラリはまだない。

なので、2で不便しないんだったら、現時点では2のままでいい。
自分が依存しているライブラリが3対応した時が、移行のチャンスなので、期を逃さずガッツリ行けばよろし。

548 :デフォルトの名無しさん:2014/09/18(木) 15:53:22.90 ID:lsy6YbFy
3使う意味ないって言いきっちゃったからなぁ

549 :デフォルトの名無しさん:2014/09/18(木) 20:37:05.51 ID:QMEFfhZi
>>548
既に2を使っている学者の方なんかだと言いそうだ
移行するメリットが殆ど無いだろうし

ただ3のほうが好き
目的の外部ライブラリがああって度々なるけど

550 :デフォルトの名無しさん:2014/09/18(木) 21:38:00.67 ID:AwaPjQog
まだ早いけど
いずれPythonからGoへ乗り換えようと思ってる人いる?
googleはGoに移行させるつもりらしいけど
ロッサムさんはどーするんだろ?

551 :デフォルトの名無しさん:2014/09/18(木) 22:02:19.36 ID:nWRbnh4O
最近Python勉強し始めたばっかの素人だけど3.x系はもう手放したわ
画像処理やろうと思ったら全然ライブラリ読みこめないでやんの

552 :デフォルトの名無しさん:2014/09/18(木) 22:02:26.19 ID:wtHp+It3
長文失礼します
pythonのアプリケーションを配布する一般的な方法にはどんなものがありますか?
主にpythonはすでにインストールしてるけど使ってるモジュールはおそらくまだインストールしてないよって人向けに配布したいです
まだ始めて三日目なんで良くわかってませんが教えていただけるとありがたいです

553 :デフォルトの名無しさん:2014/09/18(木) 22:12:47.05 ID:wr8Yj4P+
goよりrustの方が良さそう
どっちもよく知らないけど

554 :デフォルトの名無しさん:2014/09/18(木) 22:32:52.37 ID:uiaacVZe
>>550
ファンロッサムはだいぶ前にDropboxに引きぬかれとるがな

555 :デフォルトの名無しさん:2014/09/18(木) 23:37:33.68 ID:J4t3dbmZ
>>552
https://packaging.python.org/en/latest/

556 :デフォルトの名無しさん:2014/09/19(金) 00:19:08.14 ID:4MFyD/0d
>>551
もうそれ言語の選択間違ったって話じゃないの

557 :デフォルトの名無しさん:2014/09/19(金) 00:49:02.87 ID:RhOL7tnE
>>556
画像処理のためにPythonを勉強するんじゃなくて
Pythonの勉強の題材に画像処理をしてるだけだよ

558 :デフォルトの名無しさん:2014/09/19(金) 00:54:02.54 ID:6gllmAz9
勉強ならそのライブラリを3系に移植するのが手っ取り早い

559 :デフォルトの名無しさん:2014/09/19(金) 00:56:58.81 ID:V5mbqdwI
てっとり早くはないだろうな
画像処理のライブラリならなおさら

560 :デフォルトの名無しさん:2014/09/19(金) 01:01:32.15 ID:RhOL7tnE
>>558
Python3に対応したライブラリのバージョンはまだα版なのを公式で確認済み
よって2を使う方がベターと判断した

561 :デフォルトの名無しさん:2014/09/19(金) 01:06:13.44 ID:4MFyD/0d
>>557
じゃあ題材の選択を間違ったってことでは?
もしくはPythonはそので間違いだと言われる程度の言語なんです、ってとこ。
Pythonは世界レベルのスクリプト言語ではマジョリティだけど、2→3の不安定性で、
いったんなにかでコケると一気にシェア失いそうな感じするしね。

562 :561:2014/09/19(金) 01:08:50.04 ID:4MFyD/0d
>>561
s/もしくはPythonはそので/もしくはPythonはその程度で/

563 :デフォルトの名無しさん:2014/09/19(金) 01:24:51.76 ID:F4B/nS5T
2->3の移行時に発生するstr, bytes, unicode関連のエラーは
Pythonが静的型付言語だったら簡単に見つける事が出来たし、
もっと早く簡単に2->3移行は完了したと思う

というわけなので、Python3.5で静的型検査を標準に入れて
一気に2->3移行を進める戦略ですよ

564 :デフォルトの名無しさん:2014/09/19(金) 01:28:40.43 ID:b8dB9fZU
>>555
ありがとうございます

565 :デフォルトの名無しさん:2014/09/19(金) 07:36:19.13 ID:29l2E3/T
>>560
勉強って何してんの?
OpenCVなんかで乳首の検出とか?

566 :デフォルトの名無しさん:2014/09/19(金) 07:39:11.21 ID:uOFecdUA
×ライブラリが3に対応するまで2を使う
○3に対応したライブラリに移行する

567 :デフォルトの名無しさん:2014/09/19(金) 08:12:12.55 ID:OJCIiOtw
◎3に対応しらライブラリを実装する

568 :デフォルトの名無しさん:2014/09/19(金) 13:14:06.89 ID:QRiIEsK8
必要なパッケージが3似対応してるので3で困ることはない
scipy関連
django

569 :デフォルトの名無しさん:2014/09/19(金) 19:34:06.61 ID:eMbosikE
rubyのbundleみたいなのないですか?

570 :デフォルトの名無しさん:2014/09/19(金) 22:06:03.59 ID:RhOL7tnE
>>565
乳首じゃないけどOpenCVだよ

571 :デフォルトの名無しさん:2014/09/19(金) 22:17:33.12 ID:Hrwgc7MY
>>570
そこはSPIDERです。と言えばカッコ良いのに

オリジナルSPIDERはFORTRANのライブラリ

572 :デフォルトの名無しさん:2014/09/19(金) 22:58:06.47 ID:J2BT5uph
Python - OpenCVによる猫の識別
ttp://qiita.com/wellflat/items/0b6b859bb275fd4526ed

人間の男女の違いやあれやこれやも識別できるぞ!

573 :デフォルトの名無しさん:2014/09/20(土) 10:29:30.54 ID:Xc99Cp2d
os.path.dirname(os.path.dirname(__file__))

某フレームワークが吐くコードです
2回かましているのは何故ですか?

574 :デフォルトの名無しさん:2014/09/20(土) 10:55:19.69 ID:/lSmgJEc
>>573
なぜ自分で手を動かさない?

__file__ が 'c:\\xxx\\yyy\\zzz' なら、
1回目の dirname で 'c:\\xxx\\yyy'
2回目の dirname で 'c:\\xxx' と、
目的とする結果が異なるからだろ

575 :デフォルトの名無しさん:2014/09/20(土) 11:21:04.06 ID:ldpx+vMK
>>> path = "c:\\"
>>> os.path.dirname(path)
''
>>> os.path.dirname(os.path.dirname(path))
''
>>> os.path.dirname(os.path.dirname(os.path.dirname(path)))
''
>>> path
'c:\\'

なぜです?

576 :デフォルトの名無しさん:2014/09/20(土) 11:24:05.29 ID:mVPfJUJ8
なぜですって何がだ?
お前はどうなると思ったんだ?

577 :デフォルトの名無しさん:2014/09/20(土) 11:30:28.61 ID:mVPfJUJ8
たぶんDjangoのsettings.pyの13行目あたりのことを言ってる気がするが
あれはProjectRootを取るためのコードだから1回でも3回以上でも目的は達成できん
何故と聞くまでもないだろう

578 :デフォルトの名無しさん:2014/09/20(土) 11:35:25.80 ID:kGUmhIam
>>572
あれやこれの識別の妄想が広がるな!

579 :デフォルトの名無しさん:2014/09/20(土) 11:42:15.02 ID:GbFNl7YA
正しくは
os.path.join(os.path.dirname(__file__), '..')
じゃないの

580 :デフォルトの名無しさん:2014/09/20(土) 11:48:46.84 ID:pPLj1Lyk
この場合の正しさってなんだろうか。

581 :デフォルトの名無しさん:2014/09/20(土) 12:09:01.44 ID:nsNkzdES
djangoの翻訳チームのやる気の無さ
https://github.com/django-docs-ja/django-docs-ja

582 :デフォルトの名無しさん:2014/09/20(土) 12:18:59.07 ID:GbFNl7YA
気に入らないなら
forkすれば良い

583 :デフォルトの名無しさん:2014/09/20(土) 12:21:33.60 ID:mVPfJUJ8
こういう奴はリーダー代われ
俺の箔にしてやるって言い分だから
forkなんかしない

584 :デフォルトの名無しさん:2014/09/20(土) 12:25:47.32 ID:nsNkzdES
phpのlaravelの翻訳は1人で全部やってる
http://laravel4.kore1server.com/docs

djangoの翻訳チームが名ばかりの集まりであるのがよく分かるだろう
我々はこういうった幽霊部員の活動を日本中に広めなければならない

585 :デフォルトの名無しさん:2014/09/20(土) 12:26:39.32 ID:nsNkzdES
ということで今からオレは新しく1.7の翻訳アカウントを作ろうと思う

586 :デフォルトの名無しさん:2014/09/20(土) 16:17:38.30 ID:5yN8V4kh
フレームワークなんて使ってねーや

587 :デフォルトの名無しさん:2014/09/20(土) 17:31:55.11 ID:J22kYW6o
_future_モジュールはなんのためにありますか?
以前のバージョンでも未来の機能を利用できると理解したのですが

588 :デフォルトの名無しさん:2014/09/20(土) 21:08:05.13 ID:lJJn8OIz
>>587
__future__モジュールについてはこれな
>これは実行できる形式で書かれたドキュメントなので、__future__をインポートしてその中身を調べることでプログラムから調査することができます。
http://docs.python.jp/2/library/__future__.html

future文についてはこれ
http://docs.python.jp/2/reference/simple_stmts.html#future
古いバージョンのでも新しい機能が使えるってことであってる

589 :デフォルトの名無しさん:2014/09/20(土) 21:58:57.26 ID:J22kYW6o
残念ながらはっきりとは理解できませんでした
スクリプト言語にコンパイラやコンパイル時という単語がなぜ出てくるのでしょう?
未知の機能の詳細を実行時に取得してプログラムの動きを変化させると考えました
役割としてはCにおけるマクロのようなものと理解すればいいのでしょうか?

590 :デフォルトの名無しさん:2014/09/20(土) 22:26:14.09 ID:Z8uHc6Vb
>>589
そうディレクティブです、でもマシンコードじゃなくバイトコードへのコンパイル
実行前というか、たとえば「from __future__ import division」だと除算が
BINARY_DIVIDEからBINARY_TRUE_DIVIDEになり整数同士でも切り捨てられない

591 :デフォルトの名無しさん:2014/09/20(土) 22:51:00.81 ID:J22kYW6o
なるほど
機能の追加をよりコントロールしようとしているんですね
回答ありがとうございます

592 :デフォルトの名無しさん:2014/09/21(日) 00:40:09.97 ID:1T8PQZp1
a = [{"a":''}] * 3
a[0]['a'] = True
print(a)

何故0番目以外にもTrueが入っちゃうんですか?

593 :デフォルトの名無しさん:2014/09/21(日) 00:52:02.80 ID:hzBq2+VL
シャローコピーだから

594 :デフォルトの名無しさん:2014/09/21(日) 01:17:39.11 ID:+wLRSH8e
新刊の「Python詳説」を立ち読みしてみたけど
3系だった
2系の俺には無用w

595 :デフォルトの名無しさん:2014/09/21(日) 01:19:29.41 ID:hzBq2+VL
わざわざ3系オンリーの書籍を出すなんてボランティアか、はたまたマゾか

596 :デフォルトの名無しさん:2014/09/21(日) 01:27:50.32 ID:WJzN6dNr
一向に3への移行が進まないよか良いでしょう

597 :デフォルトの名無しさん:2014/09/21(日) 01:55:56.04 ID:SxMm3UZZ
いまどき2用の書籍出すとかマゾな出版社でしかない。

598 :デフォルトの名無しさん:2014/09/21(日) 03:12:58.79 ID:zvLDGmjJ
Python文法詳解の目次を見たらみんなのPythonやパーフェクトPythonと内容が被ってる気がして買う気になれませんでした。web関連の本を出してくれたらいいのに。

599 :デフォルトの名無しさん:2014/09/21(日) 03:59:03.40 ID:hzBq2+VL
あっという間に陳腐化するわ
特定フレームワークのユーザーしか狙えないわ
書いてる方は幸せになれません

600 :デフォルトの名無しさん:2014/09/21(日) 09:20:08.00 ID:MEucGXRm
どうしても解決できないことがあるので質問させてください。
以下のように、テキストファイル(test.txt)を作成してから、それを読み出して、printしているのですが、
何も表示されません。テキストファイルは確かに作成されています。
ファイルが作成される前に、読み出しがされているからでしょうか?

#!/usr/bin/python
# -*- coding:utf-8 -*-

str_out = "aaa"

fw = open("test.txt", "w") #
fw.write(str_out)
fw.close

fr = open("test.txt")
str_read = fr.read()
print str_read
fr.close()

601 :デフォルトの名無しさん:2014/09/21(日) 09:23:00.69 ID:q4aLc9F7
一番目の close にカッコがついてないよ
それだと関数オブジェクトを呼ばずに捨ててる

602 :デフォルトの名無しさん:2014/09/21(日) 09:23:19.24 ID:NKaa3KrO
fw.close()

603 :デフォルトの名無しさん:2014/09/21(日) 09:25:16.62 ID:MEucGXRm
>>601
うぉー、出来ました!
実はこれで1年以上、悩んでいました。
なんで早く教えてくれなかったんですか!
ありがとうございました!

604 :デフォルトの名無しさん:2014/09/21(日) 09:26:49.52 ID:NKaa3KrO
なんで早く聞かなかったんですか!

605 :デフォルトの名無しさん:2014/09/21(日) 10:23:27.12 ID:hzBq2+VL
白ヤギさんも真っ青

606 :デフォルトの名無しさん:2014/09/21(日) 10:31:44.53 ID:sF3yzrHK
with使えばファイルの閉じ忘れ起きないし安心

607 :デフォルトの名無しさん:2014/09/21(日) 10:34:13.13 ID:Re05AqUv
何で早くエスパーしなかったんですか!

608 :デフォルトの名無しさん:2014/09/21(日) 10:35:33.02 ID:OYwJke1V
その点 ruby は安心

609 :デフォルトの名無しさん:2014/09/21(日) 11:57:06.57 ID:7oG58F6s
>>592
間際らしい市ねww
a = [{'a':''}] * 3
a = [{"a":""}] * 3

610 :デフォルトの名無しさん:2014/09/21(日) 12:07:42.60 ID:tmQCWq8V
シャローコピーしないようにするにはどうしたらいいですか?

611 :デフォルトの名無しさん:2014/09/21(日) 12:10:51.59 ID:Gd2LPy9W
Web関連の本って...
無理だと思うな
PythonはPHPにはその分野では敵わない
面倒くさすぎる
Djangoも分かりにくい
PHPならHTML書いて入れればそれだけでOK

612 :デフォルトの名無しさん:2014/09/21(日) 12:19:06.39 ID:tmQCWq8V
djangoは管理画面があるのが便利だけど最初の設定が面倒くさい
templateやstaticの設定をもっと自動化して欲しい

613 :デフォルトの名無しさん:2014/09/21(日) 12:32:32.35 ID:Vmt4LZ6D
WEB関係の本は「みんなのPython Webアプリ編」があるけど
なんか読みにくい本なんだよな
オライリーのいい本が一冊翻訳されるといいのに

614 :デフォルトの名無しさん:2014/09/21(日) 12:32:58.96 ID:hzBq2+VL
・サブディレクトリ運用を気軽にできるようにしてくれ
・アプリケーションのリネームをサポートしろ
は前に要望したけど音沙汰がない

615 :デフォルトの名無しさん:2014/09/21(日) 12:34:17.01 ID:hzBq2+VL
翻訳されていないオライリーのいい本が一冊はあるという前提が甘い

616 :デフォルトの名無しさん:2014/09/21(日) 12:38:59.98 ID:D9Ow4XI3
Python Web Programming

http://www.amazon.com/dp/0735710902/


こういうの翻訳頼む

617 :デフォルトの名無しさん:2014/09/21(日) 12:41:39.37 ID:hzBq2+VL
出版が2002年だけど本当にそれでいいのか

618 :デフォルトの名無しさん:2014/09/21(日) 12:49:39.02 ID:ImbjJwoQ
確かにちょっと古いかな

Flask Web Development: Developing Web Applications with Python

これとかどうだろう
今年出版されたばかり

619 :デフォルトの名無しさん:2014/09/21(日) 12:51:25.89 ID:q4aLc9F7
>>610
import copy; copy.deepcopy
あとリストの掛け算はシャローコピーではないよ

620 :デフォルトの名無しさん:2014/09/21(日) 12:56:54.05 ID:tmQCWq8V
>>619
ライブラリを使わないとだめってことは掛け算で作るのは王道の書き方ではなかったってことですよね
掛け算するのやめます

621 :デフォルトの名無しさん:2014/09/21(日) 12:57:58.05 ID:tmQCWq8V
>>614
rm -rf アプリケーションじゃだめなんですか

622 :デフォルトの名無しさん:2014/09/21(日) 13:10:09.64 ID:hzBq2+VL
リネームだっつってんのに何故rmが出てくる

Djangoのアプリケーションをリネームするには
散らばってるインポートモジュール名とDBのテーブル名とリレーション等と格納された値を修正する必要がある
rmでこれらの処理を何か簡略化できるか?

623 :デフォルトの名無しさん:2014/09/21(日) 14:15:07.00 ID:tmQCWq8V
rm -rf dbファイル アプリケーション
 python manage.py migrate

624 :デフォルトの名無しさん:2014/09/21(日) 14:24:39.29 ID:M1R/hzos
bottleなんかマニュアルしっかりしてるし本なんかいらんだろ

625 :デフォルトの名無しさん:2014/09/21(日) 15:18:42.67 ID:zvLDGmjJ
デプロイがつらいのでApache、Nginx、uwsgi、Gunicornなどでの設定方法を解説した本であれば薄っぺらくてもすごく助かります。

626 :デフォルトの名無しさん:2014/09/21(日) 16:11:32.53 ID:GSgALpqv
>>610
[{"a": ""} for _ in range(3)]

ちなみに辞書の複製にcopyモジュールはいらないよ
un = {}; un.copy()
これでおk
辞書の中身もちゃんとコピーしたいのなら>>619のようにやらないとだけど

627 :デフォルトの名無しさん:2014/09/21(日) 18:36:28.08 ID:SV7gYkDR
bottle , flask , pyramid はフルスタックじゃないから
簡単なものならよいがちょっと込み入ったものになると
初心者には厳しいと思う

だけど上記の3フレームワークでよく使われる
jinja2 や SQLAlchemy や Beaker は覚えておくと
なにかと便利

628 :デフォルトの名無しさん:2014/09/23(火) 01:38:35.31 ID:yyfnOWbn
http://tokyometro10th.jp/

これみんなで参加しないか?
Pythonのポテンションを世に知らしめるのだ

629 :デフォルトの名無しさん:2014/09/23(火) 01:44:27.98 ID:ESMlqDPF
>>628
お前さんは知らないかもしれないが、世界レベルではPythonはマジョリティです。

630 :デフォルトの名無しさん:2014/09/23(火) 01:48:50.46 ID:6GOHYDXZ
>>629
日本ではPythonはマイノリティですから

631 :デフォルトの名無しさん:2014/09/23(火) 01:53:20.60 ID:ESMlqDPF
>>630
ガラパゴス乙

632 :デフォルトの名無しさん:2014/09/23(火) 13:06:03.58 ID:h9MTRV8P
ガラパゴス島でガラパゴスガラパゴス騒いだ所で何も変わらんよ異邦人君

633 :デフォルトの名無しさん:2014/09/23(火) 13:08:25.49 ID:KtYSsO04
自分で返しがズレてるなとか思わないのかな
実際rubyが優勢だろうQiitaとかもrubyタグ圧倒的だし

634 :デフォルトの名無しさん:2014/09/23(火) 13:12:10.78 ID:SOSbun4M
タグが多ければ優秀というのは何故か?
母集団は?

635 :デフォルトの名無しさん:2014/09/23(火) 13:36:59.37 ID:n40GWKtf
般 僧 掲 若 咒 咒 菩 波 夢 罫 依 智 老 識 色 無 垢 舎 空 利 時 観  摩
若 掲 諦 波 能 是 提 羅 想 礙 般 亦 死 界 声 受 不 利 空 子 照 自  訶
心 諦   羅 除 大 故 蜜 究 故 若 無 亦 無 香 想 浄 子 即 色 見 在  般
経   掲 蜜 一 明 知 多 竟 無 波 得 無 無 味 行 不 是 是 不 五 菩  若
   菩 諦 多 切 咒 般 故 涅 有 羅 以 老 明 觸 識 増 諸 色 異 蘊 薩  波
   提   咒 苦 是 若 得 槃 恐 蜜 無 死 亦 法 無 不 法 受 空 皆 行  羅
   薩 波 即 真 無 波 阿 三 怖 多 所 尽 無 無 眼 減 空 想 空 空 深  蜜
   婆 羅 説 実 上 羅 耨 世 遠 故 得 無 無 眼 耳 是 相 行 不 度 般  多
   訶 掲 咒 不 咒 蜜 多 諸 離 心 故 苦 明 界 鼻 故 不 識 異 一 若  心
     諦 曰 虚 是 多 羅 佛 一 無 菩 集 尽 乃 舌 空 生 亦 色 切 波  経
         故 無 是 三 依 切 罫 提 滅 乃 至 身 中 不 復 色 苦 羅
     波   説 等 大 藐 般 顛 礙 薩 道 至 無 意 無 滅 如 即 厄 蜜
     羅   般 等 神 三 若 倒 無 侘 無 無 意 無 色 不 是 是 舎 多

636 :デフォルトの名無しさん:2014/09/23(火) 14:41:45.52 ID:nsMEHxF9
なつかしいコピペ

637 :名無しさん:2014/09/24(水) 17:12:16.88 ID:Qh5bz0XT
LinuxでPython2.6使ってるけど、WindowsでPython使う際に2.7にしてもいいのかなと思ったり
やっぱ2.6から2.7に上げた場合、それまでのスクリプトで問題発生するかな?

638 :デフォルトの名無しさん:2014/09/24(水) 17:31:42.36 ID:5Qd2IKk/
Pythonでデスクトップアプリケーションを作成する場合、どういう風にすれば良いのでしょうか?
PyQtやwxPythonなどあるようですが、PyQtは敷居が高いようなことが書かれています
デザインのしやすさ、作りやすさなどでオススメを教えていただきたいと思います
自分の環境はRedhat系ですが、Windowsでの利用を考えています

http://ja.m.wikipedia.org/wiki/Pythonを使っている製品あるいはソフトウェアの一覧
このようなページを見つけました
ここに載っているデスクトップアプリケーションはPyQtなどで作られているのでしょうか?
それともCやWindowsAPIなどで基本的に作って、中身の一部をPythonで作っているのでしょうか?

639 :デフォルトの名無しさん:2014/09/24(水) 17:36:50.62 ID:FHhM1wc8
Tkがおすすめ

640 :デフォルトの名無しさん:2014/09/24(水) 17:37:17.50 ID:LEs4bhE4
>>637
発生するかしないかで言えば発生しないとは言えない

641 :デフォルトの名無しさん:2014/09/24(水) 17:39:21.38 ID:LEs4bhE4
>PyQtは敷居が高い

それはない
ライセンスの問題とか
メンテが放置とか
面倒なだけ

問題にかかわってる暇がないなら
wxPythonの方を薦める

642 :デフォルトの名無しさん:2014/09/24(水) 18:43:17.39 ID:5Qd2IKk/
教えてくれてありがとうございました

643 :デフォルトの名無しさん:2014/09/24(水) 21:37:03.17 ID:wvIaX7qe
配布用に.exe形式にしたいのだけど、.exeの1ファイルだけにおさめる方法ってあるかね
py2exeでは、スクリプト以外のファイルはまとめてくれなさげ

644 :デフォルトの名無しさん:2014/09/24(水) 22:01:12.95 ID:YFHZqPQu
zipじゃだめなん?Inno setupとかは?

645 :デフォルトの名無しさん:2014/09/24(水) 22:31:16.72 ID:wvIaX7qe
説明不足ですまん
インストーラとしてではなくて、そのまま実行できるアプリケーションとしたい。

もう少し具体的な意図を言うと、画像等の素材を隠蔽したい。
ただ、身内に配る程度なので、そこまで高度に隠蔽される必要もない

.exeにまとめるのでなくても、暗号化ファイルを読み込む方法などあれば、それでも問題なし
見栄えや扱いの簡便さで、.exeにまとめるのが一番良いかと思ってただけなので

# しかし、書いてくれたそれはそれで別の機会に使えそうだ。ありがとう

646 :デフォルトの名無しさん:2014/09/24(水) 22:33:00.91 ID:vnMOPx27
ウイルス?

647 :デフォルトの名無しさん:2014/09/24(水) 22:34:42.27 ID:wvIaX7qe
いいえ

648 :デフォルトの名無しさん:2014/09/24(水) 22:48:20.90 ID:YFHZqPQu
鍵付きZIPファイルに格納する、zipfileライブラリで読みこむ、tmpファイルとして
出力するときに拡張子でばれないよう注意する。

使い終わったらちゃんと消去。

649 :デフォルトの名無しさん:2014/09/24(水) 23:06:51.74 ID:spov7QuU
ぐぐるとpy2exeとNSISで1ファイルにまとめた例が出てくるよ
おそらくcxfreezeでもできるはず

650 :デフォルトの名無しさん:2014/09/24(水) 23:25:30.42 ID:wvIaX7qe
>>648
ありがとう、調べてみる

>>649
それもインストーラとしてまとめる方法では?
アプリケーション本体としてもまとめられるのかな?

651 :デフォルトの名無しさん:2014/09/25(木) 05:16:39.47 ID:7DgNS8tq
UPX

652 :デフォルトの名無しさん:2014/09/25(木) 06:28:33.30 ID:joYUKpd7
>>650
NSISも元来インストーラを作るツールだけど
設定で一時フォルダに展開して実行までやってくれる
見た目1ファイルのexeが作れるのよ

653 :デフォルトの名無しさん:2014/09/25(木) 07:54:31.41 ID:A59aTWuy
pyinstallerつかってたけど
一つのファイルだとpython.dll
やwxPython含めて13MBぐらいになって
ユーザーから不評でした。

そして数年後この度、リファクタリングついでにC#で作り直し。はぁ...

654 :デフォルトの名無しさん:2014/09/25(木) 08:12:01.51 ID:Subxhchr
死ねば作り直さなくていいぞ〜
疲れてるならオススメ

655 :デフォルトの名無しさん:2014/09/25(木) 08:14:49.29 ID:PQH/RCDK
兵糧攻め

656 :デフォルトの名無しさん:2014/09/25(木) 09:45:09.99 ID:n/hqnqxg
だからqtつかおうよ!

657 :デフォルトの名無しさん:2014/09/25(木) 09:50:37.18 ID:PQH/RCDK
PyQt より PySide の方が良いんだよね?

658 :デフォルトの名無しさん:2014/09/25(木) 09:52:42.20 ID:n/hqnqxg
py付いちゃうとexe化出来ないじゃん。。。
pyqt, pyside書けるならqtも書けるよ

659 :デフォルトの名無しさん:2014/09/25(木) 10:02:09.42 ID:PQH/RCDK
python スレだから PyHoge の話になるのは仕方ない

660 :デフォルトの名無しさん:2014/09/25(木) 16:05:12.92 ID:UivmCkMy
>>651>>652
ほうほうなるほど
ありがとうありがとう

>>653
オプションで同梱モジュール選べなかったのかね

661 :デフォルトの名無しさん:2014/09/25(木) 19:14:07.19 ID:pla+jS26
>>660
python.dllで2mbは確定でwxで10MBだったかな。module同梱は自動検出。
py2exeもつかってたけどでかさは変わらんかった気がする。

GUIというとvensterとctypesでガリガリ書いてたときもあったなぁ...

662 :デフォルトの名無しさん:2014/09/26(金) 21:02:12.22 ID:HIA/sQJr
Passenger全死亡か
http://d.hatena.ne.jp/nekoruri/touch/20140926/shellshock

ワロテナイよ

663 :デフォルトの名無しさん:2014/09/26(金) 23:53:15.81 ID:UKsTMeRj
>>662
Rubyの話題はスレ違い

664 :デフォルトの名無しさん:2014/09/27(土) 02:57:10.07 ID:jYunIRKZ
ruby だけじゃないが
subprocess.Popen とかだと
影響ウケルωωω

665 :デフォルトの名無しさん:2014/09/27(土) 09:07:42.72 ID:Q7f9fSd6
ドキュメントがshell=Trueにすんなって言ってるのに
shell=Trueしてる馬鹿の尻まで拭う必要はない
いい機会だから全員死んでもらおう

666 :デフォルトの名無しさん:2014/09/27(土) 09:10:47.45 ID:V9AoMXji
666

667 :デフォルトの名無しさん:2014/09/27(土) 10:48:10.73 ID:bWg7K4NX
optionで用意すんなって言い返したいけど

668 :デフォルトの名無しさん:2014/09/27(土) 10:52:30.35 ID:TGqPKc2A
汚染された文字列突っ込むなよ

669 :デフォルトの名無しさん:2014/09/27(土) 12:07:57.80 ID:jYunIRKZ
NHK
bash
http://www3.nhk.or.jp/news/html/20140927/k10014922101000.html

670 :デフォルトの名無しさん:2014/09/28(日) 00:17:32.96 ID:rKF2lDHS
技術系ももっと報道機関に人を送り込んで欲しい

671 :デフォルトの名無しさん:2014/09/28(日) 19:12:54.61 ID:TmXNcwY0
webprog板のpythonスレ死んでるんだけど
pythonでwebやるのってだめなの?
rubyとかphpの方がいいの?

672 :デフォルトの名無しさん:2014/09/28(日) 20:19:57.88 ID:pAfSMvLV
少なくとも国内で仕事したいならその認識は正しい
個人的な話なら好きにすればいい

673 :デフォルトの名無しさん:2014/09/28(日) 20:24:52.65 ID:pAfSMvLV
DjangoとFlaskとpyramidとbottleとweb2pyくらいなら
ここで質問しても返ってくるはず

674 :デフォルトの名無しさん:2014/09/28(日) 21:52:44.37 ID:LbKOAJBC
>>671
見てるけどほっといたわ

675 :デフォルトの名無しさん:2014/09/28(日) 22:05:24.94 ID:2qHeiG8b
勉強だったらwebとかやるだけ無駄

676 :デフォルトの名無しさん:2014/09/28(日) 22:10:22.00 ID:LbKOAJBC
bashの踏み台鯖がどんどん増えまくっとる

677 :デフォルトの名無しさん:2014/09/28(日) 22:26:21.07 ID:neMl8K0A
>>671
女の子を釣るには

678 :デフォルトの名無しさん:2014/09/29(月) 07:43:26.76 ID:NI0xARzz
kwsk

679 :デフォルトの名無しさん:2014/09/29(月) 12:53:14.47 ID:EIANdszU
>>671
railsを覚えるほうが

680 :デフォルトの名無しさん:2014/09/29(月) 18:45:50.65 ID:AjnwT8cf
>>658
C++使えってこと?

681 :デフォルトの名無しさん:2014/09/29(月) 18:54:40.36 ID:TuwBUZ1N
>>671
女の子に絶対に

682 :デフォルトの名無しさん:2014/09/29(月) 20:42:41.50 ID:nX5PV3RD
>>680
いえす

683 :デフォルトの名無しさん:2014/09/29(月) 22:35:31.31 ID:WkHslg/o
1ファイルじゃなくていいならexe化はできるでしょ

684 :デフォルトの名無しさん:2014/09/29(月) 22:38:40.43 ID:9GNJpViz
実行ファイルを作る
そんなとき
C、C++、C#
お好きなモノをどうぞ

685 :デフォルトの名無しさん:2014/09/29(月) 22:39:48.85 ID:bm2ucN1b
せっかくだから、俺はこのPythonを選ぶぜ!」

686 :デフォルトの名無しさん:2014/09/30(火) 11:03:06.12 ID:yIpcFUw2
pythonでできることを教えてください

687 :デフォルトの名無しさん:2014/09/30(火) 12:22:32.74 ID:fHAbPVyL
馬鹿には何一つ無理

688 :デフォルトの名無しさん:2014/09/30(火) 12:27:09.14 ID:6HrD4eP+
かわいいセフレができます

689 :デフォルトの名無しさん:2014/09/30(火) 12:54:47.80 ID:nNnITun+
phpでmysqlに接続する時はidとpasswordを書いたファイルをpublic_htmlより上の階層に置くようにしていたのですが、sqlalchemyにはそういう注意が見当たりません。
create_engineを書いたファイル(含むid・password)をpublic_html以下に設置してもセキュリティ的に問題は無いのでしょうか?

690 :デフォルトの名無しさん:2014/09/30(火) 12:58:58.67 ID:Vb2IHbA9
萌えキャラ擬人化だけじゃなくイケメン擬人化もすればpythonも女子に人気でるかも

691 :デフォルトの名無しさん:2014/09/30(火) 12:59:00.66 ID:rWDDVQoR
サーバは何?

692 :デフォルトの名無しさん:2014/09/30(火) 13:27:43.14 ID:nNnITun+
>>691
nginxとuwsgiを使おうと思ってます。
まだsqlalchemyの勉強中なのですが、設置する時にこれで大丈夫なのかと不安になったので。

693 :デフォルトの名無しさん:2014/09/30(火) 13:50:23.78 ID:0GEeaCri
ブラウザから直接指定して見られるかやってみたら

694 :デフォルトの名無しさん:2014/09/30(火) 14:46:23.26 ID:mh/cbJNg
>>697
公開・配布の形態次第だけど、sqlalchemy 利用の有無関係なく
CGIスクリプトとしてデプロイする場合は、同様の注意が必要です

>>675
末尾を埋めるかどうかでバリエーションがあるけど、
itertoolsのレシピ grouper が参考になるよ

695 :デフォルトの名無しさん:2014/09/30(火) 14:46:25.33 ID:+CG1fPdj
和塩で重いときに見えないはずのものが見えてることがあったなあ

696 :デフォルトの名無しさん:2014/09/30(火) 20:13:32.69 ID:qWLkENwI
ようわからんが、コンフィグファイルは外だししろよ

697 :デフォルトの名無しさん:2014/09/30(火) 20:14:29.65 ID:RxufM98r
男なら中出し一択だろ

698 :デフォルトの名無しさん:2014/09/30(火) 23:41:31.95 ID:nNnITun+
>>694
>>696
ああ、やはりそのまま書くのは不味いんですね。外部ファイルに書いてそれを読み込むのが最善の方法という事ですね。

699 :デフォルトの名無しさん:2014/10/01(水) 00:34:10.66 ID:bO1QNk+t
>>698
どんぐらいのサービスかによる
サーバの設定しくじったらアウトの可能性が少しでもあるなら避けるべき
fbでもしくじるぐらいだから

700 :デフォルトの名無しさん:2014/10/01(水) 11:07:13.94 ID:JH4tYyvL
外部のサーバーに書いておいて
起動時にダウソして
稼働中はメモリにキャッシュが安全

701 :デフォルトの名無しさん:2014/10/01(水) 21:05:28.70 ID:xoSFJb3E
コンフィグ外出とか危険じゃね?
もし取れずにデフォルト値で動いて、デフォルト値がデバッグモードだったとか

702 :デフォルトの名無しさん:2014/10/01(水) 22:11:50.37 ID:yheU9Xdn
レンタルサーバとかだと外に出せないから、去年symlinkとかコマンドインジェクションからのディレクトリトラバーサルでWordPressやられてたな

>>701
なんで設定取れなかったらエラー出すようにしないのか

703 :デフォルトの名無しさん:2014/10/02(木) 01:35:40.64 ID:9jKc/G7B
ここはDjangoの質問も大丈夫でしょうか?
質問があるのですが、データベース問い合わせであるカラムだけを問い合わせたいのですがどのようにすればいいのでしょうか?
データベースのカラムはid,name,age,sexとした場合、name,age,sexを取り出したいとします
from bar.models import foo
rows = foo.objects.all()とすれば値が取得できるのは分かるのですが、これではidの値も取得されます
カラム別に取得したいのですが
SELECT name, age, sex FROM db;
みたいなことがしたいです

また、そこで取得した値を確認したいのですがDjangoはprintで出力されないので格納した変数の値や取得した値の中身を調べることが出来ません
PHPであればvar_dump()みたいに中身を見れればいいのですが
どのようにすればいいのでしょうか?
自分としては上記でデータベースから取得したデータをjson化してJavaScriptに送りたいのですが

704 :デフォルトの名無しさん:2014/10/02(木) 02:14:07.31 ID:UX4Sw3I3
1個目
objects.filterとか().values('hoge', 'huga')

2個目
チュートリアルの「はじめての Django アプリ作成、その 1」に書いてある

705 :デフォルトの名無しさん:2014/10/02(木) 02:15:08.60 ID:UX4Sw3I3
書いてから思ったがvalue_listの方が正しいな

706 :デフォルトの名無しさん:2014/10/02(木) 02:30:40.28 ID:9f+0oAt0
django-debug-toolbar 使うと幸せになれるって
うちの仔猫が言ってた

あと defer() や only() の遅延評価も調べてみるといいって
(プライマリーキーのidを"取得しない"はできないけど・・・)

707 :デフォルトの名無しさん:2014/10/02(木) 09:39:49.38 ID:9jKc/G7B
>>704-706
ありがとうございました

チュートリアルの方はもう一度目を通してみます

708 :デフォルトの名無しさん:2014/10/02(木) 09:55:09.89 ID:9jKc/G7B
>>704
すみません、チュートリアル読んでみましたが分かりませんでした
python manage.py shell
の事をおっしゃられているのでしょうか?

709 :デフォルトの名無しさん:2014/10/02(木) 11:44:59.80 ID:YwCG0RRZ
djangoのスレ行けよ
せっかく専用スレあるんだから同じような問題を抱えている人が見つけやすいだろ

710 :デフォルトの名無しさん:2014/10/02(木) 11:48:15.39 ID:YwCG0RRZ
>>708
そもそもそれはチュートリアルをやってればはじめの方に出てくることだし
まずはチュートリアルをやるべきでしょ
効く前に最低限のことはやれよ

711 :デフォルトの名無しさん:2014/10/02(木) 11:59:13.09 ID:6cuXtJAM
馬鹿には無理

712 :デフォルトの名無しさん:2014/10/02(木) 16:12:18.19 ID:pc0dEnhS
>>711
馬鹿の一つ覚え

713 :デフォルトの名無しさん:2014/10/02(木) 23:55:10.12 ID:XAeI31Ii
876 名前:デフォルトの名無しさん[sage] 投稿日:2014/10/02(木) 16:13:11.51 ID:pc0dEnhS
>>874
馬鹿の一つ覚え

714 :デフォルトの名無しさん:2014/10/03(金) 00:41:39.07 ID:CaIs5bTM
安価先も一緒に張れよw

715 :デフォルトの名無しさん:2014/10/03(金) 00:47:03.50 ID:iSAMd/e7
きゃりーぱみゅぱみゅって最高だよね

716 :デフォルトの名無しさん:2014/10/07(火) 11:09:50.01 ID:9B02+Xes
Python界の有名人

Before
https://avatars1.githubusercontent.com/u/854049?v=2&s=460

After
http://image.gihyo.co.jp/assets/images/news/report/01/pyconjp2014/0002/thumb/TH400_003.jpg

会ったこと無いから別人にしか見えない

717 :デフォルトの名無しさん:2014/10/07(火) 16:36:27.06 ID:AA14T+84
誰だよ

718 :デフォルトの名無しさん:2014/10/07(火) 19:45:00.88 ID:XRYgiLy4
pyconスタッフって打ち上げありますか?
pycon 2015年の飲み会があるそうですけどコミュ障が参加したら孤立するだけですかね?

719 :デフォルトの名無しさん:2014/10/07(火) 22:41:49.33 ID:s7U7yQsb
誰だこの不細工は?

720 :デフォルトの名無しさん:2014/10/08(水) 00:34:25.52 ID:8oPiAR2I
俺らより有能で俺らよりイケメン
そして俺らより高年収
英語ネイティブだしね

721 :デフォルトの名無しさん:2014/10/08(水) 09:35:47.64 ID:SfZJBG4v
Django
https://www.youtube.com/watch?v=jn5ajaZgcMw

722 :デフォルトの名無しさん:2014/10/08(水) 10:40:21.93 ID:2AVvJHZy
>>719
殿ご乱心?

723 :デフォルトの名無しさん:2014/10/08(水) 10:42:02.95 ID:AsOaYLsj
よく考えたらPythonって金持ちっっぽいやつらばっかりだな
おれはphpのほうが合いそうなのでここで引きます

724 :デフォルトの名無しさん:2014/10/08(水) 10:46:34.91 ID:2AVvJHZy
>>716だった

725 :デフォルトの名無しさん:2014/10/08(水) 11:53:16.34 ID:P6WfsOfK
>>721
マルチ死ね

726 :デフォルトの名無しさん:2014/10/08(水) 22:21:10.49 ID:P4ZmXPPk
python2.7でGAEのwebアプリケーションを作成しているのですが
raw_input()
を使うと、EOFError: EOF when reading a line が発生します
具体的には、ouath2クライアントを使用したのですが
def get(self):
name = raw_input('Enter name: ')
print name
のようなコードでさえ EOFError: EOF when reading a line が発生してしまいます

727 :デフォルトの名無しさん:2014/10/08(水) 22:25:37.76 ID:OgeXMJ81
実にくだすれっぽい質問だ

728 :デフォルトの名無しさん:2014/10/09(木) 02:37:29.76 ID:T37jfMqm
>>726
Googleのサーバ管理者に名前を入れてもらいたいのか?

729 :デフォルトの名無しさん:2014/10/09(木) 07:57:56.80 ID:OwjKzXDz
Python3に対応したscrapyみたいなのありませんか?

「Rubyによるクローラー開発技法」という本が高評価なのでちょっと悔しいです。

730 :デフォルトの名無しさん:2014/10/09(木) 10:03:53.14 ID:YwRbzS2u
Python2だとなんか不都合でもあるのか?

731 :デフォルトの名無しさん:2014/10/09(木) 22:06:03.62 ID:suIfRrTZ
大学で使ってる機械がパイソンで動いている事から、パイソンを使えるようになりたいと思いまして、練習中の身です。
一環としてwxpythonを使った簡単なアプリ(研究室の人向け)を作成している途中なのですが、動的な値の変更の仕方がいまいちわからず、行き詰まっております。

作成しているアプリは、スピンボタンやスライダ、ラジオボタンなどで実験状況を設定した上で、最終的に1つか2つ程度の値を出力するようなシミュレータみたいなものです。

具体的な課題は、説明しづらいのですが、statictextをイベントで書き変えるときに、書き換えた後の値を他のクラスでも共有したいという事です。
(出来ればコードをお見せして具体的に何がしたいのかを説明させていただきたいのですが、どのような形でお見せすればよいでしょうか)

恐らく初歩的なことかとは思いますが、どうぞお力添え下さいますようお願い致します。

732 :デフォルトの名無しさん:2014/10/09(木) 22:11:36.75 ID:suIfRrTZ
>>1
> ◆長いコードはこういうところにはってください
> ttp://ideone.com/
> ttp://codepad.org/
> ttp://pastebin.com/
> ttp://dpaste.com/

733 :デフォルトの名無しさん:2014/10/09(木) 22:40:12.93 ID:suIfRrTZ
>>739
お手数をおかけして申し訳ございません.
コードは以下になります.冗長な部分などあるかと思いますがご容赦ください.
http://ideone.com/60uZY5

このコードを実行し,たとえばスピンボタンを押したときに,Wavelengthと表示された部分は動的に変化させることはうまくできたのですが,LASER Powerと表示された部分を動的に変化させる方法が解りません.
最終的には,たとえばwavelengthに表示される値とPower Meter Valueに表示される値などを基にして計算した値をLASER Powerとして出力するようなプログラムを作りたいと考えております.
(物理的意味はありませんが,プログラミング的に最も簡単な例を挙げれば,wavelengthとPowerMeterValueの値を掛け合わせたものをLASER Powerとして動的に表示するといったプログラムになります)


よろしくお願いいたします

p.s.本文を一度誤ってscの方に書き込んでしまいました

734 :デフォルトの名無しさん:2014/10/09(木) 23:28:41.64 ID:XlUKidJJ
pmadj_funcとwladj_funcがPower Meterとwavelengthの値が変わった時にそれぞれのラベルを書き換えてるよね?
その中で一緒にlaserpower2のラベルも書き換えればいいのでは

たとえばpmadj_funcだったら
#pmdis2のラベルを書き換えた後に……
#pmdis2とwldis2の値を取得
#それらでlaserpowerを計算
#laserpower2に値を設定
聞きたかったのはこういうことで合ってる?

735 :デフォルトの名無しさん:2014/10/10(金) 00:50:04.61 ID:OQ/++Vvv
>>734
ご返信いただきありがとうござます。
質問の内容はご察しの通りです。

これまで、「プログラムを通して保持される変数」を関数で書き換えられないかと考えておりましたが、やはり>>734さんの仰る方法しかないのでしょうか。
>>734さんの仰る方法ですと、1つの関数ごとに幾つかの変数を親を通して呼び出さなければならないため、たいへん煩雑になるかと考えておりました。

例えば、>>734さんの挙げていただいた例の場合ですと、pmadj_funcという関数でpmdis2とwldis2を呼び出すことになります。これは同時に、wladj_funcでもpmdis2とwldis2を呼び出すことになりますよね。
のちのちチェックボックスやラジオボックスも利用することを考えると、躊躇いが出てしまうわけです。

何れにせよ、的を射ない質問ながら的確にご回答いただけたこと、ありがたく思います。
その他、お気づきの点などございましたらご指摘下さいますよう、よろしくお願いいたします。

736 :デフォルトの名無しさん:2014/10/10(金) 01:27:23.22 ID:J/PhW3d6
>>735
Mediatorパターンがピッタリだと思うで調べてみてください

737 :デフォルトの名無しさん:2014/10/10(金) 13:22:07.51 ID:T0LFFi4l
MVC

738 :デフォルトの名無しさん:2014/10/10(金) 20:23:10.07 ID:f/axCad2
>>736
ご返信ありがとうございます。
現在調べてる最中でして、まだなんとも言えませんが・・・

739 :デフォルトの名無しさん:2014/10/10(金) 22:02:11.51 ID:9sDXKy/D
pyenvをやめて自分で1から入れようと思うんですけど
~/mycode/homepageの仮想環境
~/mycode/toukeiの仮想環境を作った場合
ディレクトリを移動して手動でactivateコマンドを実行するのが面倒くさいんですけど
こういうのはどうやってますか?

740 :デフォルトの名無しさん:2014/10/10(金) 22:18:29.54 ID:ssRlZAm7
できそこないなので素直にpyenv使ってます
あなたも出来損ないなら高望みを止めた方がいいですよ

741 :デフォルトの名無しさん:2014/10/10(金) 23:51:16.79 ID:ZRNQwYei
>>739
pyenvを使いたくない理由は何ですか?
とても便利だと思うんですけど。

742 :デフォルトの名無しさん:2014/10/10(金) 23:58:21.31 ID:9sDXKy/D
インストールディレクトリ名が固定だからです

743 :デフォルトの名無しさん:2014/10/11(土) 11:52:33.43 ID:zlAuz39Z
ん〜pyenv-aliasで名前変えられるけどそう言うことじゃなく?
https://github.com/s1341/pyenv-alias/blob/master/README.md

744 :デフォルトの名無しさん:2014/10/11(土) 12:05:56.05 ID:WAdfmHXI
男は黙ってvirtulaenv

745 :デフォルトの名無しさん:2014/10/11(土) 12:25:17.23 ID:1gHC+Rt5
それとパッチを当てにくいからです
プラス、使いたいバージョンが入れられないからです3.4.2

746 :デフォルトの名無しさん:2014/10/11(土) 12:41:00.76 ID:zlAuz39Z
お、3.4.2出たのか?と思ったらRCじゃねえか
バージョンに拘るならバージョンは正確に言えよ

シェルのcdとpushd上書きするような関数定義して
裏でactivate実行すればいい
簡単だろ?

747 :デフォルトの名無しさん:2014/10/11(土) 12:47:27.96 ID:1gHC+Rt5
先輩すいません
それちょっとやってみます

748 :デフォルトの名無しさん:2014/10/11(土) 21:50:31.12 ID:c/9/8F6M
3.4.2もうちゃんとでてるだろ。

749 :デフォルトの名無しさん:2014/10/12(日) 06:59:18.33 ID:rVMmKUVB
sqlalchemyを使ってmysqlの検索結果をテンプレートに表示するページを作ったんですが、数回アクセス(更新)してから1分ほど経過して再度更新するとエラーを吐きます。

エラーの内容は「無効なトランザクションがロールバックされるまで再接続出来ない」との事なんですが無効なトランザクションが自動で消えるようにするにはどうすれば良いのでしょうか?

ファイルを3つに分けているのでimportの方法に問題ありなんですかねぇ…。

750 :デフォルトの名無しさん:2014/10/12(日) 07:20:35.87 ID:Z8ok/lvr
commit汁

751 :デフォルトの名無しさん:2014/10/12(日) 19:15:57.10 ID:XcZcZSTO
ここではPortable Pythonは人気が無いのですか?
2.7系と3.4系の両方の環境が作れるんで便利だと思うんですが。

752 :デフォルトの名無しさん:2014/10/12(日) 19:25:22.45 ID:WmFvY6mV
そもそもwindowsが少数派なんでは

753 :デフォルトの名無しさん:2014/10/12(日) 19:25:33.71 ID:OFZFdMRu
そんなものを使わなくても環境作れますが

754 :デフォルトの名無しさん:2014/10/12(日) 20:08:00.64 ID:iMtIS90f
むしろどんな風にインストールすると両方使えない環境になるんだ?

755 :デフォルトの名無しさん:2014/10/12(日) 21:42:24.87 ID:xW6MFRga
>>754
そっとしといてやれよ。。。
たぶん環境変数でPATHの順番がとか言われるよ

756 :デフォルトの名無しさん:2014/10/12(日) 23:12:20.59 ID:5gtQJftx
Windowsは、3.3以降に付いてくるpyコマンドを使えばPATHを気にする必要もない
2/3系の切り替えも32/64bitの切り替えもオプション1つかshenangでできるし

757 :デフォルトの名無しさん:2014/10/12(日) 23:36:36.47 ID:bfCObt5l
仮想環境の利点がよくわかりません。
3.2 と 3.3 というように Python のバージョン違いを使う時にメリットがあるのでしょうか?
今は、3.4 しか使っていません。

758 :デフォルトの名無しさん:2014/10/13(月) 00:00:28.67 ID:3SkqDiWm
利点が分かる時に使えば良い

759 :デフォルトの名無しさん:2014/10/13(月) 00:05:41.38 ID:lbLLPSKH
よくある問いかけだな
この機能何に使うんですか?存在する意味が分かりませんって

聞いてるこっちは酷いマヌケに遭遇した気分になるよ

760 :デフォルトの名無しさん:2014/10/13(月) 00:33:39.49 ID:AakrwsYM
まぁ使う必要がなければ、使う意味はないからね

761 :デフォルトの名無しさん:2014/10/13(月) 00:36:01.73 ID:AakrwsYM
>>759
こういう質問とその回答、大事なことだと思うけどね

762 :デフォルトの名無しさん:2014/10/13(月) 10:05:10.08 ID:UJCB5jQM
意味が判らないのは
自分がそのレベルに達してないだけなのに
自分は悪くないと思ってるところが厨房の厨房たる所以

763 :デフォルトの名無しさん:2014/10/13(月) 11:12:44.57 ID:UiUWyauZ
バージョン3.4しか使わないならバージョンの切り替えで仮想環境を作る必要はない
環境ごとにパッケージをインストールしたい時に仮想環境を作ればよい

764 :デフォルトの名無しさん:2014/10/13(月) 11:30:40.19 ID:DJNIhGJv
3.2 から 3.4 までの環境に対応とかね
例えばライブラリーを作成するとき
動作環境を時間かけてアップする時(3.2, 3.4 どっちでも動くようにしていく)
他にも色々あるよ

765 :デフォルトの名無しさん:2014/10/13(月) 12:00:49.83 ID:YZWgIN5K
>>757
Pythonのバージョンだけじゃない。ライブラリも同じ。
二つのアプリfoo,barがあったとして、fooはAとBというライブラリが必要、barはBとCが必要な場合、
グローバルな環境にA, B, C全部いれるのはあまり良くない。

仮にfooでBのバージョンをあげたいけど、barではあげたくないってなったら、どちらかでBの入れ方を変えなければいけなかったり、
設定やコードを変更しなければいけないかもしれない。
仮想環境ならfooが動いてる環境でpip install B==versionするだけでいい。

766 :デフォルトの名無しさん:2014/10/13(月) 12:03:36.97 ID:YZWgIN5K
あと、メジャーなフレームワークやモジュールならvirtualenvとpipでの環境構築方法が大抵用意されてる、と思う。

767 :デフォルトの名無しさん:2014/10/13(月) 16:06:42.37 ID:k1sWPTWW
>>750
ありがとうございます。
commitを入れたらブラウザ上のエラーが無くなりました。

今はブラウザを更新する度にクエリの内容を表示したりしなかったりをランダムに繰り返しています。

表示しなかった時のログを見ると
SIGPIPE:writing to a closed pipe/socket/fd
でした。

一部だけ切断されるのはまだ何かの記述が足りないのでしょうか?

768 :デフォルトの名無しさん:2014/10/13(月) 16:16:02.40 ID:R2vIvTaj
エラーが再現できる最小のコードぐらい晴れ

769 :デフォルトの名無しさん:2014/10/13(月) 17:00:43.37 ID:yFRqmPNp
なんならcommitせずにrollbackでもよろし

770 :デフォルトの名無しさん:2014/10/14(火) 02:25:34.98 ID:wbq8rtwF
a = list(range(0, 10))
a = [a[i:i+3] for i in range(0, len(a), 3)]
print(a)

一次元リストを二次元リストにするコードです
別の書き方を教えてください

771 :デフォルトの名無しさん:2014/10/14(火) 03:03:11.24 ID:VNVYyJ0e
初心者が適当に答えを考えてみる

def xl(ls, stp):
return [ls[i:+stp] for i in range(0, len(ls), stp)]


a = list(range(0, 10))
b = xl(a, 3)
c = xl(a, 2)

こんな感じ
関数の中身は流用w

772 :デフォルトの名無しさん:2014/10/14(火) 03:09:59.40 ID:zVB4iXSQ
http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python

HaskellにはsplitEvery(a.k.a chunk)という関数がある。参考までに
http://hackage.haskell.org/package/split-0.1.1/docs/src/Data-List-Split-Internals.html#splitEvery

773 :デフォルトの名無しさん:2014/10/14(火) 03:10:36.07 ID:n0LsyPEe
関数にしてるだけじゃん

774 :デフォルトの名無しさん:2014/10/14(火) 03:15:26.45 ID:pTBqpiFp
(SCに投稿してしまったので再投稿)


775です。

自己解決しました。

engine = create_engine(uri, pool_recycle=MySQLのwait_timeより短い時間)

とする事で切断されなくなりました。

interactive_timeoutとwait_timeoutを
8時間から60秒に変更していたので
1分後の更新でエラーが出るようになっていたようです。
(もし8時間のままだったら8時間後からエラーが出るのかは謎ですが…)

775 :デフォルトの名無しさん:2014/10/14(火) 03:21:09.04 ID:lBWRGPCr
いいや俺が775だね

776 :デフォルトの名無しさん:2014/10/14(火) 03:29:39.19 ID:pTBqpiFp
>>775
すいません。
767でした。

777 :デフォルトの名無しさん:2014/10/14(火) 03:52:57.78 ID:2EiwlIPP
>>770
http://ideone.com/kxB0cX

書き終わってから>>772を見たらあああってなった

778 :デフォルトの名無しさん:2014/10/14(火) 21:28:51.98 ID:pTBqpiFp
>>769
チュートリアルやググった時に出てくる記事には検索だけの場合はcommitやrollbackが必要とは書いていないのですが、なぜロールバックされてないというエラーが出るのか不思議です。

パーフェクトPythonを参考に以下のような関数やメソッドを記述した場合はエラーが出ません。

def kensaku():
try:
result = 検索内容.one()
return result
session.commit()
except:
session.rollback()
finally:
session.close

このままでは全てのクエリにtry except finallyを付ける事になってしまいます。他にロールバックのエラーを出さない書き方ってありますか?

779 :デフォルトの名無しさん:2014/10/15(水) 02:45:30.91 ID:J+WRCzbK
検索だけならトランザクション開始しなきゃいいんじゃね

780 :デフォルトの名無しさん:2014/10/15(水) 07:47:48.72 ID:caHw/4to
同意します

781 :デフォルトの名無しさん:2014/10/15(水) 13:01:35.81 ID:zl/yfVrd
pyramid使ってる人にお聞きしたいんですがバリデーションどうされてます?
wtformsやdeformでやってるんでしょうか?
どちらも扱いにくいことこのうえないんですがおすすめのフォームライブラリありませんか?

782 :デフォルトの名無しさん:2014/10/15(水) 13:34:28.98 ID:OgUxeFYn
【Python】Python Webフレームワーク総合スレ
http://kanae.2ch.net/test/read.cgi/php/1329996601/

783 :デフォルトの名無しさん:2014/10/15(水) 13:49:01.21 ID:6UPjvDQa
WSGIってJSPとかJavaServletみたいなものって認識で合ってますか?

784 :デフォルトの名無しさん:2014/10/15(水) 13:58:23.34 ID:y5p6iW7A
mod_pythonを速くしたやつ?

785 :デフォルトの名無しさん:2014/10/15(水) 15:56:44.67 ID:b6Lq5BMW
>>783
合ってない
ていうかJSPとJava Servletが同じものじゃないし

786 :デフォルトの名無しさん:2014/10/15(水) 16:24:20.43 ID:C/JjrqVa
ウェブサーバーとアプリケーションサーバー間のプロトコルです

787 :デフォルトの名無しさん:2014/10/15(水) 16:30:00.58 ID:y5p6iW7A
まあそれが正解なんだろうけどmod_wsgi=WSGIみたいな扱いに
なっちゃってるからなあ。

なんでそんな名前にしたんだろ?
python関連はpyを付けるのが慣例みたいになってるのに。

788 :デフォルトの名無しさん:2014/10/15(水) 18:50:43.08 ID:ecrFBKrn
WSGIはWebのインターフェイス
PythonではPEP3333で定義されてる
http://legacy.python.org/dev/peps/pep-3333/

それを実装してるライブラリがwsgiref
https://docs.python.org/3/library/wsgiref.html

apacheモジュールはmod_wsgi。mod_pythonはもう開発がとまってる。
https://github.com/GrahamDumpleton/mod_wsgi

フレームワークはPyramid、Django、fluskなどなど

JSPとJavaServletは知らん

789 :デフォルトの名無しさん:2014/10/15(水) 18:52:55.90 ID:ecrFBKrn
What is WSGI?
WSGI is the Web Server Gateway Interface. It is a specification that describes how web server communicates with web applications, and how web applications can be chained together to process one request.

WSGI is Python standard described in detail in PEP 3333.
(WSGI.org, http://wsgi.readthedocs.org/en/latest/what.html#what-is-wsgi)

790 :デフォルトの名無しさん:2014/10/15(水) 19:09:00.27 ID:oTkKZ4Eq
wsgi.js

791 :デフォルトの名無しさん:2014/10/15(水) 22:46:10.27 ID:rB995LuX
python3.3では問題ないのにpython2.7でopen("text.txt", encoding="utf-8")を実行すると
encoding' is an invalid keyword argument for this function
ってエラーが出るんですけどpython2.7ではどう書けばいいですか?

ここ見て書いたので記述は間違ってない気がするんですがお手上げです
http://docs.python.jp/2/howto/unicode.html

792 :デフォルトの名無しさん:2014/10/15(水) 22:55:16.48 ID:Id/STamp
>>791
組み込みの open じゃなく
import codecs からの codecs.open

793 :デフォルトの名無しさん:2014/10/15(水) 23:32:35.53 ID:rB995LuX
あ、ほんとだ
codecs使えば2系でも3系でも使えますね

794 :デフォルトの名無しさん:2014/10/16(木) 00:18:06.43 ID:JRVJ27N0
>>791
何でPython2.7でencoding' is an invalid keyword argument for this functionっていうエラーがでるんですか?っていう質問じゃなかったのか・・

795 :デフォルトの名無しさん:2014/10/16(木) 07:28:47.07 ID:GRIRO8vO
どこをどう読んだらそんな質問に見えるんだ

796 :デフォルトの名無しさん:2014/10/16(木) 07:44:01.13 ID:fmheqVVd
今度は日本語も読めないやつかよ

797 :デフォルトの名無しさん:2014/10/16(木) 16:01:17.38 ID:CsOFEKWu
OSのカーネルや言語処理系は最もコード密度が高い分野。一度もソース読んだ事の無い人にとっては
理解不能な世界。組み込み用のmrubyやJavaScriptですら公開されてるソース読んですぐ理解出来る代物ではない。
だれがどのように保守するかは大きな問題。カーネルや開発者の高齢化問題も発生する。
経済が破綻すればオープンソースは資金調達や人員の確保問題で保守がどうなるか不明なところがある。
そうなると伝統的プロプライエタリなOSや言語が長期的には有利かもしれない。

798 :デフォルトの名無しさん:2014/10/16(木) 16:57:50.55 ID:KDVTqClB
経済が破綻したらお前をボコボコにして奴隷にする方が早い

799 :デフォルトの名無しさん:2014/10/17(金) 00:43:21.82 ID:JX57Rjwu
self、thisって何に使うものなんですか?
必須ではないんですか?
猿でも分かるように教えてください。

800 :デフォルトの名無しさん:2014/10/17(金) 00:57:11.22 ID:Db3yDsQb
>>799
Python で this は使わない。
self については、Python の初心者向けのドキュメントでは100%説明されてる。
つまり、簡単に言うと、ググれ。
ググってそれ読んでわからなかったときにその何がわからないかを聞け。

801 :デフォルトの名無しさん:2014/10/17(金) 00:59:36.64 ID:tGTslkxI
オランウータンがゴリラに売るためのバナナをチンパンジーが持ってきました
この「ゴリラに売るバナナ」と「チンパンジーが持ってきたバナナ」という2つのバナナを区別するのにselfを使います

self.banana ←ゴリラに売る予定のバナナ
banana ← チンパンジーが持ってきたバナナ

もし、「ゴリラに売るバナナ」 = 「チンパンジーが持ってきたバナナ」ならば

self.banana = banana

というふうに書けます
バナナが2つ存在していてもこれなら見分けがつけられますね
こうしてオランウータンはバナナをゴリラに売れましたとさ

802 :デフォルトの名無しさん:2014/10/17(金) 03:36:34.48 ID:DGojcH6F
俺にも分かる説明乙

803 :デフォルトの名無しさん:2014/10/17(金) 05:58:42.93 ID:C+N94CAc
>>801
意味不明

804 :デフォルトの名無しさん:2014/10/17(金) 06:22:40.00 ID:g6ZBfCoZ
>>779
アドバイスを読んでからあれこれ試してみたのですが方法がわかりません。

検索のクエリ自体が
session.query(…
で始まっているので

session = Session()
を書かないと動いてくれません。

これを書くとrollbackやcloseなどを書かないと後からエラーが出てしまいます。

どう書けばトランザクション無しで検索する事が出来るのでしょうか?

805 :デフォルトの名無しさん:2014/10/17(金) 06:26:20.65 ID:o5eX2ePN
クラス・インスタンスとは何かを調べる

Ptyhonのクラス・インスタンスの典型的なコード・使用例を調べる

例の中でselfがどういう役割を演じているかを理解する

selfという名称が慣習的なものに過ぎず実は何でも良いことを知ってショックを受ける

Pythonの場合、selfを理解するのにこれだけのステップが必要
全くの初心者には遠い道のり
自分でクラス・インスタンスを作ることのない企業のエンドユーザーや
ライトユーザーは知らなくてもよいだろう
オブジェクト指向の深い闇に足を踏み入れずに済むなら、それに超したことはない

806 :デフォルトの名無しさん:2014/10/17(金) 07:15:57.68 ID:JX57Rjwu
>>801
わ、分からない、、、。
実際の超簡単なコードで、どのような役割があるのか教えてください。
一応、いろんなサイトを調べてはいるんですが、自分には理解できない説明ばかりです。
selfの何が分からないかすら分からないと言う状態で。

・何かを識別するための目印
というところまで分かりました。

807 :デフォルトの名無しさん:2014/10/17(金) 07:30:41.82 ID:QP1DIUi6
>>805
>selfという名称が慣習的なものに過ぎず実は何でも良いことを知ってショックを受ける

第一引数が self じゃなくて class のときもあることを知ってさらにショックを受ける

808 :デフォルトの名無しさん:2014/10/17(金) 07:45:20.05 ID:o5eX2ePN
>>807
そんな使い方もあるの?
深淵に足を踏み入れなくてよかったとつくづく思うよ
自分でクラスを書いたり人の書いたクラスを読んだりすることなく
人生を終えられたら、それは幸せなことだよね

809 :デフォルトの名無しさん:2014/10/17(金) 08:05:56.76 ID:QP1DIUi6
知らぬが仏という意味ならそうだね

810 :デフォルトの名無しさん:2014/10/17(金) 08:13:38.18 ID:1uF0w0Sv
もう残りの人生も少ない
ただのひとつの関数も作らずに
逐次処理と条件分岐とループだけで終えたい

811 :デフォルトの名無しさん:2014/10/17(金) 08:23:21.73 ID:as22cljE
>>806
いろんなサイトをぐぐってはいるけど、和訳でもいいから公式のチュートリアルは見てないとかいう落ちある?
http://docs.python.jp/3.4/tutorial/classes.html#classes

812 :デフォルトの名無しさん:2014/10/17(金) 08:27:54.84 ID:as22cljE
でもこれ、Pythonのチュートリアルであってプログラミングのチュートリアルじゃないよな
>C++ の用語で言えば、通常のクラスメンバ (データメンバも含む) は (プライベート変数 に書かれている例外を除いて) public であり、メンバ関数はすべて 仮想関数(virtual) です。
>Module-3 にあるような、オブジェクトのメンバをメソッドから参照するための短縮した記法は使えません: メソッド関数の宣言では、オブジェクト自体を表す第一引数を明示しなければなりません。
>第一引数のオブジェクトはメソッド呼び出しの際に暗黙の引数として渡されます。Smalltalk に似て、クラスはそれ自体がオブジェクトです。

813 :デフォルトの名無しさん:2014/10/17(金) 08:28:49.08 ID:as22cljE
何故チュートリアルに三つも他言語の名前を使ってしまうのか・・

814 :デフォルトの名無しさん:2014/10/17(金) 08:47:39.88 ID:1uF0w0Sv
>>813
プログラム関連の説明書きは
C,C++の最低限の知識がある前提で書かれているものが多い
Cでいう〇〇だとか、C++の〇〇に相当する機能であるだとか。
オブジェクト指向系だと、それにsmalltalk,JAVAが加わる
それにもやっぱりCでいう〇〇とかいうのが出てくる
Cを知らない奴は相手にしませんって前書きに書いとけって何度思ったことか

815 :デフォルトの名無しさん:2014/10/17(金) 08:52:57.89 ID:as22cljE
C++, Modula-3, Smalltalkの名前が無ければ、この説明は成り立たないのか
成り立たないのだとしたら、何故名前を出さなくても分かるようなチュートリアルにしてくれないのか・・

あと、ググれってプログラミングのアドバイスで最悪の答えだと思う

816 :デフォルトの名無しさん:2014/10/17(金) 08:55:23.79 ID:g6ZBfCoZ
>>806
どうぞ。

class Banana:
def __init __(self, iro, aji):
self.iro = iro
self.aji = aji
def check(self):
if self.aji is not "甘い":
print("「まだ駄目」")

bana1 = Banana("黄色", "甘い")
bana2 = Banana("緑色", "渋い")

bana2.check()

#「まだ駄目」

817 :デフォルトの名無しさん:2014/10/17(金) 10:19:59.07 ID:9Bl66x9H
いい加減Python3.xに移行しろよ
2.7を切り捨てた跡のLinuxにインストールされるデフォルトバージョンを3.4にしろよ
決して3.2とかいつまで使わせるんだよ

818 :デフォルトの名無しさん:2014/10/17(金) 10:26:18.03 ID:ynxMbyDc
>>816
文字列の比較は is でやったらだめ
長い文字列だと == は True で is が False とか起こりうる

819 :デフォルトの名無しさん:2014/10/17(金) 10:30:51.90 ID:yTetx1VL
>>817
切り捨てるどころか2020年までサポート延長しましたが?
まじワロリーヌですわ

820 :デフォルトの名無しさん:2014/10/17(金) 10:31:50.74 ID:3zlldvS3
一見python関係ないようなツールをインストールしてもビルトスクリプトが2系を使ってる場合が多い
pyenv使ってるもののデフォルトが2じゃないとその辺でいちいち失敗するしストレスがマッハだわ

821 :デフォルトの名無しさん:2014/10/17(金) 10:38:39.55 ID:ETQxRSUe
C:\work>python -V
Python 3.2

822 :デフォルトの名無しさん:2014/10/17(金) 11:10:08.40 ID:HZvg3la9
>>813
確かに日本人がフランス語を習うときに
英語ではこういうことです
とか多言語の知識前提に教えられても困る罠

823 :デフォルトの名無しさん:2014/10/17(金) 11:13:12.15 ID:HZvg3la9
python3 は perl6 と同じ運命をたどると予想

824 :デフォルトの名無しさん:2014/10/17(金) 11:20:22.17 ID:Lmpe/lkW
Pythonを最初の言語に選ぶやつなんていないという前提のチュートリアルなのかも

825 :デフォルトの名無しさん:2014/10/17(金) 11:21:58.60 ID:ynxMbyDc
そこらへんは知ってる人向けなので知らなかったら読み飛ばせばいい
第一 Module-3(ママ)とか誰も知らない

826 :デフォルトの名無しさん:2014/10/17(金) 12:02:10.24 ID:88x3y3Tf
reStructuredTextのインデントってスペース3個なのは何か暗黙の了解なんですか?
Sphinxみると3個なんです

827 :デフォルトの名無しさん:2014/10/17(金) 12:09:07.22 ID:HZvg3la9
rubyist?

828 :デフォルトの名無しさん:2014/10/17(金) 19:14:55.01 ID:iuzLbdxk
>>806
オブジェクト指向プログラミング(OOP)は知ってますか?
OOPが分からないとその書き方であるselfは説明しづらいです
最初は標準ライブラリを使ってOOPを体験するのがいいと思います
datetimeあたりが身近な題材でお勧めです

↑考え方
オブジェクト指向プログラミング(OOP)
クラスベースのOOP
OOPをサポートするためのPythonの構文(selfはここ)
↓やり方

829 :デフォルトの名無しさん:2014/10/17(金) 19:38:41.92 ID:JhxOb/La
オブジェクト指向を覚えても日曜プログラマーの自分には使う機会がなかった・・・・

830 :デフォルトの名無しさん:2014/10/17(金) 20:19:23.52 ID:Lmpe/lkW
日曜プログラマーの人って本職は何なの?SEとか?

831 :デフォルトの名無しさん:2014/10/17(金) 20:26:56.47 ID:jIMeQkH1
土曜も日曜も関係なくない?

832 :デフォルトの名無しさん:2014/10/17(金) 20:29:15.71 ID:JhxOb/La
>>830
インフラ系SE
体力勝負w

833 :デフォルトの名無しさん:2014/10/17(金) 20:32:57.73 ID:JX57Rjwu
>>806
ありがとう、分からない。

>>828
オブジェクト指向は、プログラムを部品として扱うことで、再利用したり・バグを少なくするって考え方ですよね。
クラスベースっていうのは、部品をクラスとして定義するということですか?
この程度のあいまいな理解はしているつもりですが、selfについてはまだ理解できません。
概念的なことだけでも、教えてください。

あとは理解できることを期待しながら、プログラムを組むつもりです。
blenderで使うためにpythonをやってるんです。

それと、__init__も躓いている部分です。
initって何でしょうか?初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが、どんな場合に役立つのですか?

834 :デフォルトの名無しさん:2014/10/17(金) 20:47:35.45 ID:JhxOb/La
プロパティを持たせるのってその処理のデータをそれぞれに維持できるからじゃないの?
なんか違ったらごめん

835 :デフォルトの名無しさん:2014/10/17(金) 21:16:08.24 ID:jIMeQkH1
http://coreblog.org/ats/translation-of-why-explicit-self-has-to-stay/

836 :デフォルトの名無しさん:2014/10/17(金) 21:18:23.89 ID:as22cljE
>>833
>initって何でしょうか?初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが、どんな場合に役立つのですか?

>このクラスのインスタンス生成操作 (クラスオブジェクトの “呼出し”) を行うと、空のオブジェクトを生成します。
>多くのクラスは、オブジェクトを作成する際に、カスタマイズされた特定の初期状態になってほしいと望んでいます。
>そのために、クラスには __init__() という名前の特別なメソッド定義することができます。
(http://docs.python.jp/3.4/tutorial/classes.html#class-objects)

837 :836:2014/10/17(金) 21:27:47.09 ID:as22cljE
簡単に言うと、そのクラスを使う上で最低限必要な情報はインスタンス生成時に要求しておきましょうっていうこと
例えば、urllib.request.Requestだと
def __init__(self, url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None):
となってて、__init__内でself.full_urlにurlが定義される

__init__がなければ、いろんなところでurlを引数に要求しないといけないけど、インスタンス生成時にそれを渡してもらえばself.full_urlで他の関数からもアクセスできる

838 :836:2014/10/17(金) 22:19:29.48 ID:as22cljE
>>833
ていうか
>初期化(変数の宣言と代入を同時に行う)のために使うと書いてありますが
この初期化="変数の宣言と代入を同時に行う"って、どこに書いてあるの?

839 :デフォルトの名無しさん:2014/10/18(土) 00:02:33.77 ID:T+vEH8Sg
無限ループをキー入力したら止めるようにしたいのですが、簡単なサンプルがあれば
教えていただけると助かります。

840 :デフォルトの名無しさん:2014/10/18(土) 00:13:42.93 ID:H02BWtzc
ctrl+c

841 :デフォルトの名無しさん:2014/10/18(土) 01:21:14.02 ID:SG/PMloy
初心者です。Python2.7で、thread.threadingで生成したスレッドを
一時停止させたあとに再開する方法は、無いでしょうか。

threadingで呼び出している関数のなかで、While ループしてて
threadingのEvenがset()されたら、while抜ける仕組みで一時停止っぽい
ことはできたんですけど、またその関数を呼ぶことができない><
startは2回呼んじゃだめって
おこられちゃう。 ><

842 :デフォルトの名無しさん:2014/10/18(土) 02:18:23.53 ID:I9h7M137
>>841
threading.Condition()

843 :デフォルトの名無しさん:2014/10/18(土) 04:16:48.35 ID:KHrmHp6N
>>833
上手い説明が思い浮かばないのでselfの役割をサンプルで書きます
クラス定義の中に現れるselfと外で作られたdを見比べて下さい

import datetime
class MyDate(datetime.date):
 def ja_date(self):
  return '{}年{}月{}日'.format(self.year, self.month, self.day)

d = MyDate(2014, 10, 18)
print([d.year, d.month, d.day]) # [2014, 10, 18] と表示される
print(d.ja_date()) # 2014年10月18日 と表示される

844 :デフォルトの名無しさん:2014/10/18(土) 04:37:41.95 ID:KHrmHp6N
>>833
他のプログラミング言語から引用せずに私の解釈でOOPを説明します
Q:オブジェクト指向プログラミング(OOP)とは?
A:オブジェクトを単位としてプログラムを組み立てていく設計方法
Q:オブジェクトとは?
A:関連性のあるデータや操作を結びつけてまとめた構造
Q:OOPの利点は?
A:関連するものをまとめることで可読性や改変の容易さが向上する
Q:クラスベースのOOPとは?
A:クラスと呼ばれるオブジェクトの設計図のようなものを作るOOPの方法
クラスを元に生成したオブジェクトは(クラス名)のインスタンスと呼ばれる

845 :デフォルトの名無しさん:2014/10/18(土) 07:03:01.65 ID:3SSW63UD
>>804 の質問をしていた者です。

scoped_session()とsessionmakerを以下のように設定すると
検索での一定時間経過後のエラーは出なくなりました。

○ Session = scoped_session(sessionmaker(autocommit=True, autoflush=True, bind=engine))
× Session = scoped_session(sessionmaker(bind=engine))
× Session = scoped_session(sessionmaker(autocommit=False, autoflush=True, bind=engine))
○ Session = scoped_session(sessionmaker(autocommit=True, autoflush=False, bind=engine))

846 :デフォルトの名無しさん:2014/10/18(土) 07:06:57.69 ID:3SSW63UD
>>818
ご指摘ありがとうございます。
知らなかったらどこかで躓いてしまうところでした。

847 :デフォルトの名無しさん:2014/10/18(土) 11:02:42.30 ID:BJVqhy6o
クラスについては私も勉強中だけど、「Pythonスタートブック」の説明が比較的わかりやすかった。
超シンプルなクラスを、self抜きで作ってどうしてエラーが出るかって感じで説明してくれてる。
__init__についても同様。こっちは「初めてのPython 第3版」も理解しやすかったかな。

848 :デフォルトの名無しさん:2014/10/18(土) 11:31:53.24 ID:5/nDFz0B
今日は宣伝日和

849 :デフォルトの名無しさん:2014/10/18(土) 12:06:27.65 ID:/bV95tiS
C知ってる前提で教えて良いなら
selfはCではFILE*とかに相当すると思えば良い

850 :デフォルトの名無しさん:2014/10/18(土) 13:01:55.22 ID:5xJiSuw7
初めてのPythonの原著の評価amazonでみたけど、日本語版と同じようなことになってたな
星5つけてるコメントですら、これだけ分厚い理由を説明させてくれとか初級者にはどうだろうみたいなこと書いてあってわらった
いい本なんだけどね・・

851 :デフォルトの名無しさん:2014/10/18(土) 13:07:11.05 ID:5xJiSuw7
このコメントも面白かった
いいところ : Pythonの全てをカバーしてる
悪いところ: Pythonの全てをカバーしてる
ひどいところ: Pythonの全てをカバーしてる

ほんと、いい本はいい本なんだけどね・・

852 :デフォルトの名無しさん:2014/10/18(土) 13:10:43.43 ID:jfF8Y5hT
>>839

Windowsの例

ESC = '\x1b'
import msvcrt
while True:
  print u'Loop中!'
  #ESCキーが押されたらloop抜け出る
  if msvcrt.kbhit():
    inp = msvcrt.getch()
    if (inp == ESC): break

853 :デフォルトの名無しさん:2014/10/18(土) 13:17:07.05 ID:bNW/9j5P
正直Pythonは公式のドキュメントさえ読めば十分だとおも

854 :デフォルトの名無しさん:2014/10/18(土) 13:24:51.85 ID:ldjzaz8r
self はレシーバへの参照
f = Foo(); f.m() ってしたら Foo.m(f) が呼ばれて
self にレシーバである f が入る。それだけ

って言われても狐につままれた気分に違いない

855 :デフォルトの名無しさん:2014/10/18(土) 14:39:22.87 ID:mzkaImX0
>>854
なるほど
しっくりくる

クラスメソッドとかスタティックメソッドの説明が不足してるけど

856 :デフォルトの名無しさん:2014/10/18(土) 18:04:22.32 ID:PLV+4ceY
そもそもスタティックメソッドは関数がない言語だから存在する名前

857 :デフォルトの名無しさん:2014/10/19(日) 15:22:01.29 ID:A7yyoHDT
dicからイテレータを利用して取り出したいですが
i = iter(foo)
next(i)
これだとキーは取り出せますが、ほしいのはキーではなく値のほうなのです。
教えてください。

858 :デフォルトの名無しさん:2014/10/19(日) 15:40:15.81 ID:n9kPv86G
foo[i.next()]

859 :デフォルトの名無しさん:2014/10/19(日) 15:46:13.06 ID:A7yyoHDT
>>858
ありがとうございます。
私の環境では、foo[next(i)] で動きました。

860 :デフォルトの名無しさん:2014/10/19(日) 15:48:31.75 ID:5cydbFt+
d.itervalues()

861 :デフォルトの名無しさん:2014/10/19(日) 18:22:53.59 ID:7zD1n8to
i = iter(foo.values())

862 :デフォルトの名無しさん:2014/10/19(日) 20:44:40.80 ID:io6vECig
質問させてください
dom = lxml.html.fromstring(html)
results = dom.xpath(xPath)
でやると取得結果がリストで出てきます
それはいいのですが、自分の使っているLinuxのPythonの使用で順不同で格納されてしまい困っています
これはどのようにすれば上から取得順に並べることができるのでしょうか?

863 :デフォルトの名無しさん:2014/10/19(日) 20:57:20.20 ID:pAlNrbxL
>>843
回答ありがとうございます。
なるほど、分からないです。
前提知識が必要なので、今の段階で深く理解しようとしても、無駄かもしれないです。
ある程度いじくりながら、理解できる日を待ちます。

864 :デフォルトの名無しさん:2014/10/19(日) 21:20:07.23 ID:5cydbFt+
>>862
ローカルに保存してある xml をパースしてもそうなるの?
できれば再現コードが欲しい

865 :デフォルトの名無しさん:2014/10/22(水) 16:27:03.07 ID:FR4rCNdU
loggingモジュールを使ったロギングを試しているのですが
logger = logging.getLogger(__name__)
でログを取っている複数モジュールのログを一括して設定するにはどうやるのが一般的でしょうか

import a, b
logger = logging.getLogger(*)
logger.setLevel(logging.DEBUG)
...
的なことをしたいです
モジュールa,bは色々なところから呼ばれる予定です

866 :デフォルトの名無しさん:2014/10/22(水) 16:33:03.12 ID:FR4rCNdU
単に引数無しでlogging.getLogger()ってすればいいだけでした・・・
ゴメンナサイゴメンナサイ

867 :デフォルトの名無しさん:2014/10/22(水) 17:19:22.15 ID:09vRtLa/
報告乙

868 :デフォルトの名無しさん:2014/10/23(木) 03:57:22.24 ID:Ji0zyhni
DBから書籍名を取ってきて以下のような日本語フォルダへのリンクをテンプレートに表示したい場合、1・2のどちらの方がいいでしょうか?

<a href="./書籍A/">書籍A</a>


1.DBから書籍名を取得してURLエンコードして書籍名を作り、両方をテンプレートに送る。

2.DBから書籍名を取得して書籍名をURLエンコードする自作の関数に送る。書籍名と返ってきた書籍名をテンプレートに送る。


2は回りくどい気がするのですが、似たような処理がある時には使い回しが出来そうなのでどちらが良いか迷っています。

869 :デフォルトの名無しさん:2014/10/23(木) 06:47:36.50 ID:QsQhyUlJ
3.
テンプレには<my書籍Alink>みたいな記述をしておく
"<a href="./書籍A/">書籍A</a>"を返す自作関数をつくる
自作関数に書籍名を渡して返って来た文字列をテンプレに送る

870 :デフォルトの名無しさん:2014/10/23(木) 09:17:50.80 ID:GQ45cZ/9
テンプレートエンジンは?

871 :デフォルトの名無しさん:2014/10/23(木) 09:56:54.18 ID:Ji0zyhni
>>869
<my書籍Alink>の部分が初心者の私にはハイレベル過ぎて…。

>>870
jinja2です。

このブログ記事を参考にして作っています。
http://x1.inkenkun.com/archives/221

872 :デフォルトの名無しさん:2014/10/24(金) 16:23:10.66 ID:xqerE7s/
Python Tools for VS
PTVS 2.0: A quick overview (2-4 mins per feature)
https://www.youtube.com/watch?v=JNNAOypc6Ek

873 :デフォルトの名無しさん:2014/10/24(金) 17:30:21.32 ID:sqdwGTiq
俺の見てるスレに悉く貼ってんじゃねえ

874 :デフォルトの名無しさん:2014/10/24(金) 19:55:56.42 ID:sV6ypEtj
>>873は激務で疲れてて自覚がないんだろうけど、
>>872はお前だよ?
気づいてなかったの?

875 :デフォルトの名無しさん:2014/10/24(金) 20:13:39.60 ID:tktTiC6I
いつの間にか人格が分裂していたのか

876 :デフォルトの名無しさん:2014/10/24(金) 20:26:13.39 ID:geiPH72p
漏れもたまに寝てる間に自分で書いたんじゃないかと思うスレをみかけることがある

877 :デフォルトの名無しさん:2014/10/24(金) 20:27:37.89 ID:geiPH72p
スレじゃなかった
レスだ

878 :デフォルトの名無しさん:2014/10/26(日) 20:39:38.29 ID:riJkIcxu
すごい大きい辞書をpickleで保存しています
デバッグなどでその辞書を使うモジュールを何回も実行する必要があるとき,
実行する度に一からこのデータをメモリに載せるのですごく時間がかかってしまいます
最初の一回だけデータをメモリ上に載せておいて,モジュールを実行するときにはそれを呼び出すような方法ってありますか?

879 :デフォルトの名無しさん:2014/10/26(日) 21:29:38.02 ID:zGPdvemQ
>>878
def getDic(static=[]):
 if static:
  d = static[0]
 else:
  with open("picklefile", "rb") as f:
   d = pickle.load(f)
  static.append(d)
 return d

880 :デフォルトの名無しさん:2014/10/27(月) 08:45:28.81 ID:h6rnjEJC
>>878
cPickle
使ってる?

> 実行する度に一からこのデータをメモリに載せる
って、詳細を考えると「読み込み」と「変換」があるけど、知ってました?

disk ==> on memory(=data)
の read に時間がかかってるとは思わなかったり。

data ==> Python object
の変換に時間がかかってるんじゃないの?

s1 = datetime.datetime.now()
with open("a.txt") as f:
data = f.read()
e1 = datetime.datetime.now()

s2 = datetime.datetime.now()
d = cPickle.loads(data)
e2 = datetime.datetime.now()

(e1 - s1).total_seconds()
(e2 - s2).total_seconds()

len(data)

↑で、disk => on memory の所要時間計測した上での話?

参考までに、
len(data)
の値を教えて欲しかったり。

881 :デフォルトの名無しさん:2014/10/27(月) 08:52:19.95 ID:52HwiArl
まさかファイルだけ読んで辞書にしないでメモリに置くと思ってるの?
後者の話に決まってるじゃん

882 :デフォルトの名無しさん:2014/10/27(月) 21:28:52.19 ID:fzHl9qmN
>>878
コード的に簡単なのは、インタプリタを動かして、その pickle ファイルを読み込んで辞書にしておいて、
デバッグは、スクリプトを import して main() を呼び出すときにその辞書を引数で渡せるようにする。
ってとこかな。

883 :デフォルトの名無しさん:2014/10/28(火) 00:27:51.08 ID:tEBKTM0x
UTCで年月日時だけを表示する方法は無いでしょうか
分と秒はいらないんです

884 :デフォルトの名無しさん:2014/10/28(火) 00:29:47.95 ID:ojgQDR0D
strftime

885 :デフォルトの名無しさん:2014/10/30(木) 22:59:39.13 ID:HS4ua6vI
【プログラミング言語別!】求人給与額ランキング
http://hrog.net/2014102910652.html

886 :デフォルトの名無しさん:2014/10/30(木) 23:03:18.90 ID:isG01Zqw
python覚えて高年収な人ってスキルがずば抜けてる人ぐらいだろ

887 :デフォルトの名無しさん:2014/10/30(木) 23:24:23.71 ID:PI4dm/7f
相変わらずPHPとJavaばっかだね
Rubyはやっぱり声がでかいだけだった

888 :デフォルトの名無しさん:2014/10/30(木) 23:45:16.46 ID:dZ1XAJfS
>>885
安すぎだろ

889 :デフォルトの名無しさん:2014/10/30(木) 23:47:05.44 ID:lt8zMZcQ
>>886
そんなことない
スキル普通な個人事業主だけど、消費税払ってる

890 :デフォルトの名無しさん:2014/10/30(木) 23:55:28.58 ID:Hek/m3sU
>>885のランキングの考察が当たってるなら、"日本では" Pythonプログラマーが不足してるから
その供給不足で値段が上がってるだけみたいじゃん。

891 :デフォルトの名無しさん:2014/10/30(木) 23:55:35.10 ID:isG01Zqw
日本語でおk

892 :デフォルトの名無しさん:2014/10/31(金) 00:13:48.49 ID:KvLV+3P1
>>891
どのスレに言ってんの?

893 :デフォルトの名無しさん:2014/10/31(金) 01:23:34.23 ID:3qU5wYGK
このスレじゃね

894 :デフォルトの名無しさん:2014/10/31(金) 01:24:30.35 ID:pjs8kMNX
なんでこういうの平均ばっかり挙げるんだろう、せめて最小最大中央値辺りみたいじゃん

895 :デフォルトの名無しさん:2014/10/31(金) 03:39:39.85 ID:P9Nu5aP4
この結果を受けてPython関連の書籍がたくさん出版されたら嬉しい。

896 :デフォルトの名無しさん:2014/10/31(金) 07:22:03.28 ID:7zJ4k6z8
牌が無いのが判明したんだから
減りこそすれ増えるわけがない

同じデータを見てるのに
どうしてこう見当違いの分析をしてしまうのか

897 :デフォルトの名無しさん:2014/11/01(土) 08:31:19.58 ID:90vZMt3f
需要が増えたのか供給が少ないのかはこのデータからはわからないだろうが

898 :デフォルトの名無しさん:2014/11/01(土) 09:10:39.66 ID:VFzoWWB5
これだけ衝撃的に少ないなら
そんな誤差を加味しても大勢に影響はない

それともなんだ、サイレントマジョリティを考慮に入れるとPHP抜くのか?

899 :デフォルトの名無しさん:2014/11/01(土) 09:13:47.40 ID:N73zy/Fb
ぺちぱー

900 :デフォルトの名無しさん:2014/11/02(日) 20:06:38.84 ID:SOlT2V06
pythonをやろうと思うのですが、入門書は何がいいでしょか? あと、アドバンスド(上級者向け)でいいのありますか?
プログラム経験はありです(C、C++)。

901 :デフォルトの名無しさん:2014/11/02(日) 20:09:22.82 ID:q60nWMQW
pythonのドキュメントで十分だと思うけど

902 :デフォルトの名無しさん:2014/11/02(日) 20:15:29.95 ID:YUqViWJV
プログラム経験あればドキュメントだけで余裕

903 :デフォルトの名無しさん:2014/11/02(日) 20:19:26.23 ID:SOlT2V06
ts

904 :デフォルトの名無しさん:2014/11/03(月) 03:25:54.23 ID:Di6XQAPl
>>900
C,C++できるなら
わからなくなったらググればいい。
どうしても本欲しいなら導入だけ立ち読みしてこい

905 :デフォルトの名無しさん:2014/11/03(月) 05:09:22.47 ID:VWaLlR99
このスレの人はRubyスレの人と比べて親切だから
色々教えてくれるのでありがたい

906 :デフォルトの名無しさん:2014/11/03(月) 09:30:07.60 ID:QyHwFOCC
こんなところで聞くレベルのくせに上級者向けとかギャグか

907 :デフォルトの名無しさん:2014/11/03(月) 10:29:38.49 ID:nLUJkLOA
Windows環境で2.7を試しています。
パイプでMoreに流したときに出る
Error 32 Broken pipe
対策はどの様にすればいいですか?

linuxで動いたSIGDFLすげ替えは動かないです。

908 :デフォルトの名無しさん:2014/11/03(月) 10:51:57.75 ID:Avy9gAi6
codecsが合ってないとか?

909 :デフォルトの名無しさん:2014/11/03(月) 10:52:38.02 ID:1DGR/mlS
python Error 32 Broken pipe
ググレばたくさん情報出てきたけど

910 :デフォルトの名無しさん:2014/11/03(月) 12:21:46.10 ID:/LBlrvfE
cmdじゃなくてmsysのbashとかでも出るの?

911 :デフォルトの名無しさん:2014/11/03(月) 16:15:22.47 ID:uequofEA
>パイプでMoreに流したときに

あるある

912 :デフォルトの名無しさん:2014/11/03(月) 17:29:57.88 ID:ZPswqtEs
Linuxで2.7のモジュール使いたいのに標準で入ってる2.6がインストールされるんですけど
どうにか対処ってできないでしょうか・・・

913 :デフォルトの名無しさん:2014/11/03(月) 17:35:18.77 ID:0K+wdDei
どうにかって何
会社のマシンだから勝手にインストール出来ないみたいな野暮ったい話だったらよそで頼む

914 :デフォルトの名無しさん:2014/11/03(月) 17:42:38.10 ID:DIbDX8rG
>909
いえ、ググって出てきたimport Signalの対処方法は
Windows側だとエラーになります。
linux側だと動いたのですが。

Windowsでの対処方法をご存知でしたら教えてください。

915 :デフォルトの名無しさん:2014/11/03(月) 18:00:36.84 ID:dwLQKZMT
ID変わってるから偽物

916 :デフォルトの名無しさん:2014/11/03(月) 18:01:38.54 ID:fCTDh+nn
は?雑魚は帰れよ

917 :デフォルトの名無しさん:2014/11/03(月) 18:25:53.05 ID:h0bCYlRL
パイプを通るデータのエンコードが合ってないとbrokenになる(ことがある)よ

918 :デフォルトの名無しさん:2014/11/03(月) 19:57:32.33 ID:s8zBySEA
>>912
pyenv

919 :デフォルトの名無しさん:2014/11/04(火) 00:08:00.58 ID:mqsyZeNn
Python勉強したらRubyも勉強する必要ある?

920 :デフォルトの名無しさん:2014/11/04(火) 00:09:52.29 ID:IGG5lb2v
ない

921 :デフォルトの名無しさん:2014/11/04(火) 01:37:33.87 ID:UXBRaFUR
初心者でも作れるプログラムって何?
たくさん書けって言うけどなにができるんかわからん。

922 :デフォルトの名無しさん:2014/11/04(火) 01:44:22.22 ID:YXHSIUkB
>>921
これとかどうよ?時間あったらやってみたら

http://www.ioi-jp.org/joi/problem_archive-light.html

923 :デフォルトの名無しさん:2014/11/04(火) 01:44:27.18 ID:4hH2Cezv
誰がそんなこと言ったの

924 :デフォルトの名無しさん:2014/11/04(火) 02:09:55.22 ID:UXBRaFUR
>>922
やってみる。ありがとうございます。

>>923
おれにいってる?
誰というか、ブログとか読み漁ってるとそう言う人が多い。自分の個人の印象だが。
「たくさん書け」というのは、文章も書くことで上達するから妥当性あるかなとは思うけど
畑も違う初学者には辛いお言葉・・。それでも、多くの人は身に着けていったのだから言い訳かなぁ。

925 :デフォルトの名無しさん:2014/11/04(火) 04:50:49.89 ID:UYsaPI6O
間違ったものをたくさん書いても
間違った書き方が身に付くだけ

926 :デフォルトの名無しさん:2014/11/04(火) 07:10:54.42 ID:5vxSHexS
Python標準リリース - 日本Pythonユーザ会
ttp://www.python.jp/Zope/Zope/download/pythoncore

最新バージョン
Windows用インストーラ
python-3.3.0.msi

最新バージョンを入れたはずなのに

ttp://toro.2ch.net/test/read.cgi/tech/1350718465/631+634
> 631 python: failed to set __main__.__loader__

> 634 それバグ  自分でパッチあててビルドしないと直らない

とかあってびびったけど
ttp://www.python.org/downloads/
見たら 3.4.2 ってのがあって、それダウンロードしたらちゃんと動いたよかったメモ。

ttp://toro.2ch.net/test/read.cgi/tech/1350718465/3
> 最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも

やっぱり初心者はお勧め通りにするのがよさげ

927 :デフォルトの名無しさん:2014/11/04(火) 07:28:04.75 ID:SfeupY3V
最新バージョン(最新とは言ってない)

928 :デフォルトの名無しさん:2014/11/04(火) 08:25:39.67 ID:DEPGQlXz
3.3って1年以上前じゃねえの
陳腐化した情報さらし続けるって最悪だよな
検索してて思うが、どれだけ世間の時間を無駄にさせてんだろ

929 :デフォルトの名無しさん:2014/11/04(火) 09:38:44.93 ID:obX3t5pP
2.*のときはもっとひどかったよ

930 :デフォルトの名無しさん:2014/11/04(火) 11:00:55.30 ID:QoBkJ2+Q
>>928
二年以上前

3.3の最新なのかと思ったら3.3.0だし、本当に放置してるんだな
3.3.0からだと脆弱性含めて結構な量の修正入ってるぞ
https://docs.python.org/3.3/whatsnew/changelog.html

最新ニュースが↓だし、移転作業で力尽きたのかな
>2012年8月18日、www.python.jpサーバを移転いたします。
>....
>大規模なリニューアルを行いたいと思ってますので、しばらくお待ち頂きますよう、お願いいたします。
(http://www.python.jp/Zope/Zope.1%3Cscript%3Ealert%28%29;%3C/script%3E)

931 :デフォルトの名無しさん:2014/11/04(火) 11:01:55.66 ID:QoBkJ2+Q
変なのまじった
http://www.python.jp/Zope/Zope.1

932 :デフォルトの名無しさん:2014/11/04(火) 11:04:25.64 ID:srrbBYWq
pyenv使ってる時に複数の仮想環境にipythonを入れてるんですけど
それぞれの環境ごとにipythonの起動時の処理を記述する方法をおしえてください
何個仮想環境を作ってもipythonの設定ディレクトリって~/.ipythonにしか作られないので
~/.ipython/profile_default\startup\init.pyに書くわけには行きません

933 :デフォルトの名無しさん:2014/11/04(火) 11:21:01.17 ID:MltjHLVy
>>930
移転先は更新されてる
放置されてる古いドキュメントなんて消すか
新しいトップに飛ばすかすればいいのに

934 :デフォルトの名無しさん:2014/11/04(火) 11:21:50.23 ID:xwPH9Juu
ゲームエンジン用に、pythonでパーティクルシステムを作りたいのですが、数学的にどのあたりの知識が必要なんですか?

935 :デフォルトの名無しさん:2014/11/04(火) 22:57:05.03 ID:nb8eURc5
なんで>>1でちゃんと今のpython.jpのURL書いてあんのに古臭いの見て騒いでんのよ。
まあそもそも>>933の言うとおりなんだけど。

936 :デフォルトの名無しさん:2014/11/04(火) 23:06:44.25 ID:5vxSHexS
ぐぐったらあそこが出てきて(震え

937 :デフォルトの名無しさん:2014/11/05(水) 00:02:52.86 ID:X+gBZ2Cn
http://python.rdy.jp/ の公式サイト→日本ユーザー会のリンク先が http://www.python.jp/Zope/ なんだが

938 :デフォルトの名無しさん:2014/11/05(水) 01:47:22.74 ID:5zCHFfkS
>>937
だからなに?
それはそのWikiに文句言う話じゃん。

939 :デフォルトの名無しさん:2014/11/05(水) 01:48:07.33 ID:9gbL5eJJ
ところで、共用体を使おうとするとクラッシュするんですが
ググっても全然出てこないし、使ってないんですかね。

構造体の場合
<Field type=c_ulong, ofs=0, size=4>
<Field type=c_float, ofs=4, size=4>
c_float 型に データ投入
<Field type=c_ulong, ofs=0, size=4>
0.5468

共用体の場合
<Field type=c_ulong, ofs=0, size=4>
<Field type=c_float, ofs=0, size=4>
c_float 型に データ投入
<Field type=c_ulong, ofs=0, size=4>
ここでクラッシュ

↓ここの浮動小数点を使う方法を試したかっただけですが。

ビットを数える・探すアルゴリズム
ttp://www.nminoru.jp/~nminoru/programming/bitcount.html

940 :デフォルトの名無しさん:2014/11/05(水) 01:53:05.20 ID:X+gBZ2Cn
> なんで>>1でちゃんと今のpython.jpのURL書いてあんのに

古いままだってこと

941 :デフォルトの名無しさん:2014/11/05(水) 01:59:29.69 ID:5zCHFfkS
>>940
何が?

942 :デフォルトの名無しさん:2014/11/05(水) 08:08:27.65 ID:IDA7DBTr
>>935へのツッコミだろう
お勉強スレの>>1には移転先のリンクがあるけど
このスレだけ見てても辿りつけない

943 :デフォルトの名無しさん:2014/11/05(水) 09:45:13.65 ID:6cY/hPez
>>939
""

944 :デフォルトの名無しさん:2014/11/05(水) 12:01:37.33 ID:9gbL5eJJ
>>943
.asString() でキャストするのは ctypes では出来ないらしく
str()もcast()もクラッシュします。

コードはこんな感じ

from ctypes import *
#class utest(Structure):
class utest(Union):
pass

utest._fields_ = [("i", c_uint),
("f", c_float)]

print(utest.i)
print(utest.f)

#utest.f = 0.5468
utest.f = cast(0.5468,c_float)  ←これはミス
utest.i
print(utest.i)
#これ以降がクラッシュしたり
type(utest.f)
utest.f
print(str(utest.f))
print(cast(utest.f,c_float))

945 :デフォルトの名無しさん:2014/11/05(水) 12:38:23.31 ID:IDA7DBTr
x = utest(f=0.5468)

946 :デフォルトの名無しさん:2014/11/05(水) 12:39:09.97 ID:Ez8Dh1St
なんでutestのインスタンス作らないで直接代入してるの?

947 :デフォルトの名無しさん:2014/11/05(水) 13:15:47.45 ID:9gbL5eJJ
できました。感謝。なるほどなるほどー
基本を押さえてないのに共用体で検索してたから実際のコードがさっぱり出てこなくて。

x = utest(f=0.5468)
print(x)
print(x.i)
print(x.f)

<__main__.utest object at 0x02E88D50>
1057749782
0.5468000173568726

948 :デフォルトの名無しさん:2014/11/05(水) 13:28:25.60 ID:DV/kt5fe
[1,2,3,4,5,6,....,100]
のようなリストを作りたいとき、どうやって記述するのが普通でしょうか?
range(1,101)と書いて作成できるのはわかりましたが、1〜100のリストなのに101がでてきてしっくりきません
なのでほかの書き方があるのではないかと思い質問してます

949 :デフォルトの名無しさん:2014/11/05(水) 13:32:30.37 ID:DuWLTClA
range(1, 101)には101は含まれないけど

950 :デフォルトの名無しさん:2014/11/05(水) 13:33:05.30 ID:DuWLTClA
n = 100
range(1, n+1)

951 :デフォルトの名無しさん:2014/11/05(水) 13:43:14.04 ID:DV/kt5fe
[5,6,...,10]だったら
n=10
range(5,n+1)
とするのでしょうか?
うーんなんか結局直観的じゃなくてすっきりしないですね

952 :デフォルトの名無しさん:2014/11/05(水) 14:00:40.81 ID:6PdTuYg9
5 から 10 まで数字は 6 個あるだろ
だから
for x in range(6):
print 5 + x
きわめて直観的で判り易いじゃないか

953 :デフォルトの名無しさん:2014/11/05(水) 14:20:23.38 ID:DuWLTClA
郷に入れば郷に従わないと
こんなところで足止めするようなレベルではない

954 :デフォルトの名無しさん:2014/11/05(水) 14:29:16.83 ID:YyHvdJxm
>>948 は未だ0を発見出来ていない中世ヨーロッパ人程度の知能

955 :デフォルトの名無しさん:2014/11/05(水) 14:37:31.07 ID:DV/kt5fe
>>953
その従うべき郷を知りたかったので質問させてもらった次第です
>>952
要素数から考えるというのはたしかにしっくりしました
こんな風にすればよいですね
ありがとうございます
[i+1 for i in range(100)]
[i+5 for i in range(6)]

956 :デフォルトの名無しさん:2014/11/05(水) 14:41:17.26 ID:3/LWbB06
(ネタだと思いたい)

957 :デフォルトの名無しさん:2014/11/05(水) 14:42:51.60 ID:DV/kt5fe
>>956
この結論は間違っているということ?

958 :デフォルトの名無しさん:2014/11/05(水) 14:46:01.80 ID:0NbMP57G
>>948 は IT 土方の VBer

959 :デフォルトの名無しさん:2014/11/05(水) 14:49:41.62 ID:0NbMP57G
>>957
得られる結果は同じでも
計算量は確実に増えてるんじゃね

960 :デフォルトの名無しさん:2014/11/05(水) 14:49:47.70 ID:DV/kt5fe
土方や知能は否定しませんので教えてほしいです
みなさんは以下の関数をどう書くのでしょうか?

・5以上10以下の整数を含むリストを戻り値として返す関数

961 :デフォルトの名無しさん:2014/11/05(水) 14:55:16.74 ID:qk8qyFWi
>>960

python2 -> range(-5, 11)
python3 -> list(range(-5, 11))

962 :デフォルトの名無しさん:2014/11/05(水) 14:58:30.07 ID:0NbMP57G
>>> def g(min, max):
......n = min
......while n <= max:
........yield n
........n += 1
...
>>> f = lambda min, max: list(g(min, max))
>>> f(5, 10)
[5, 6, 7, 8, 9, 10]

963 :デフォルトの名無しさん:2014/11/05(水) 14:59:19.11 ID:3/LWbB06
a = range(5, 10); a.append(10)

964 :デフォルトの名無しさん:2014/11/05(水) 15:19:54.48 ID:zEGSOnRu
irb(main):001:0> 5..10
=> 5..10
irb(main):002:0> (5..10).class
=> Range
irb(main):003:0> (5..10).to_a
=> [5, 6, 7, 8, 9, 10]

965 :デフォルトの名無しさん:2014/11/05(水) 16:18:08.94 ID:rjAy3mh6
>>964
おかえりください
てんてんなのかてんてんてんなのかいまだにおぼえられません

966 :デフォルトの名無しさん:2014/11/05(水) 16:20:58.05 ID:XPxSL9Pk
次スレはよ

967 :デフォルトの名無しさん:2014/11/05(水) 16:21:43.43 ID:eEJxm3Ur
sageteoffでな

968 :デフォルトの名無しさん:2014/11/05(水) 16:41:41.95 ID:Awvl8HhM
くだすれPython(超初心者用) その25©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1415173201/

969 :デフォルトの名無しさん:2014/11/05(水) 18:57:17.88 ID:J5dkBHi7
>>960
>>> def f(n, m):
return list(range(n, m + 1))

>>> f(5, 10)
[5, 6, 7, 8, 9, 10]

>>> l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> l[5:11]
[5, 6, 7, 8, 9, 10]

直感的じゃないとかいってないで慣れた方がいいと思う
むしろシーケンス型の要素の指定ってインデックス(0から数えて何番目)で指定するもんだし

970 :デフォルトの名無しさん:2014/11/05(水) 19:07:16.44 ID:IDA7DBTr
逆にrandom.randintは何故存在するのか

971 :デフォルトの名無しさん:2014/11/05(水) 19:51:09.90 ID:FFOVrxV7
randintは(]

972 :デフォルトの名無しさん:2014/11/05(水) 20:52:34.31 ID:rjAy3mh6
range が [ ) で randint は [ ] じゃなくて?

973 :デフォルトの名無しさん:2014/11/05(水) 21:45:48.79 ID:85jo8McV
(ネタだと思いたい)

974 :デフォルトの名無しさん:2014/11/05(水) 22:19:11.44 ID:aqzat7V7
(ネタ]

975 :デフォルトの名無しさん:2014/11/06(木) 06:23:09.51 ID:oudJfJTT
[ネタニエフ)

976 :デフォルトの名無しさん:2014/11/06(木) 07:23:09.40 ID:1AJgCGK+
>>962-963
超初心者用スレなんだから
ネタ回答でレスするのはやめとけ

977 :デフォルトの名無しさん:2014/11/06(木) 07:37:07.63 ID:z2wp3D5L
range [) わかる
randrange [) わかる
randint [] は?

978 :デフォルトの名無しさん:2014/11/06(木) 09:49:12.99 ID:Jg48RgBo
randint()が気に入らないなら
choice(range())を使えば良い

979 :デフォルトの名無しさん:2014/11/06(木) 09:50:59.46 ID:Jg48RgBo
ああこっちがいいか

random.randrange([start], stop[, step])
range(start, stop, step) の要素からランダムに選ばれた要素を返します。
この関数は choice(range(start, stop, step)) と等価ですが、実際には range オブジェクトを生成しません。
バージョン 1.5.2 で追加.

random.randint(a, b)
a <= N <= b であるようなランダムな整数 N を返します。

980 :デフォルトの名無しさん:2014/11/06(木) 17:48:59.22 ID:vn52qUON
「みんなのPython webアプリ編」がhtmlで読めるようになったとツイートされまくってますが、なぜあんなに騒がれているのでしょうか?

情報が古過ぎてあまり役に立たないと思うのですが。

981 :デフォルトの名無しさん:2014/11/06(木) 17:51:14.34 ID:i9PeqnZd
Twitterの愚民なんていつもくだらんこと喋ってるでしょ
気にせんでよろしい

982 :デフォルトの名無しさん:2014/11/06(木) 17:51:24.65 ID:ntLQp+bs
同意します

983 :デフォルトの名無しさん:2014/11/06(木) 18:40:10.70 ID:aYOy4vHI
>>980
質問してるふりをした宣伝乙

984 :デフォルトの名無しさん:2014/11/06(木) 21:24:23.07 ID:vn52qUON
>>983
ありがとうございます。
大変悲しい気分になりました。

985 :デフォルトの名無しさん:2014/11/06(木) 22:30:43.53 ID:M0f05I/w
さすが便所の落書き

986 :デフォルトの名無しさん:2014/11/06(木) 23:14:10.14 ID:hvhAxXTC
ステマ臭しかしねえ

987 :デフォルトの名無しさん:2014/11/07(金) 19:55:22.25 ID:hhmEWezK
>>986
ソフトバンクが嫌いなのでソフトバンククリエイティブの本を宣伝する気なんてさらさらありません。

988 :デフォルトの名無しさん:2014/11/07(金) 20:07:33.70 ID:ZGbVWO01
上の口ではそんなこと言ってますが…

989 :デフォルトの名無しさん:2014/11/08(土) 09:33:36.81 ID:3dfXBQLl
>>987
気持ち判ります
わたしも出来るだけ避けてます

246 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)