Pythonのお勉強 Part46at TECH
Pythonのお勉強 Part46 - 暇つぶし2ch1:デフォルトの名無しさん
12/02/09 00:14:03.43
Pythonオフィシャルサイト
URLリンク(www.python.org)
日本Pythonユーザ会
URLリンク(www.python.jp)
まとめWiki
URLリンク(python.rdy.jp)
関連スレ
URLリンク(find.2ch.net)
前スレ
スレリンク(tech板)

2:デフォルトの名無しさん
12/02/09 00:14:20.18
以上

3:デフォルトの名無しさん
12/02/09 01:19:00.88
いちおつ

4:デフォルトの名無しさん
12/02/09 01:19:54.95
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

5:デフォルトの名無しさん
12/02/09 01:41:45.34
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|

6:デフォルトの名無しさん
12/02/09 01:48:52.15
日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
URLリンク(speirs.blog17.fc2.com)
URLリンク(atomic.jpn.ph)
URLリンク(d.hatena.ne.jp)

スレリンク(tech板:339番)
339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
    PythonのUnicodeEncodeErrorを知る
    URLリンク(lab.hde.co.jp)

    よくまとまってた。あとで読む



7:デフォルトの名無しさん
12/02/09 05:48:45.11
>>1 乙py

8:デフォルトの名無しさん
12/02/09 19:55:23.94
GAE上でC2DMサーバへPOSTしようとするのですが
<class 'google.appengine.api.urlfetch_errors.SSLCertificateError'>
と出るのですがどういうエラーなんでしょうか?


9:デフォルトの名無しさん
12/02/09 22:29:05.27
ググレカス、証明書がおかしいよ
って書いてある。
google.appengine.api.urlfetch.errorsの部分がググレカス
SSLCertificateErrorが証明書がおかしいよって部分

10:デフォルトの名無しさん
12/02/10 02:03:14.57
仕事でPython使ってる人に質問。
Pythonのバージョンってどれ使ってる?
理由とともに教えてくれ。
あと他の会社での事例もしっていたら教えて下さい。

期待する回答例:
・2.7。理由はDjangoが3に対応しないから。
・3.2。理由はすべてスクラッチで開発してるので既存のライブラリを気にしなくていい状況だったから。

11:デフォルトの名無しさん
12/02/10 02:14:29.64
2.7。理由はDjangoが3に対応しないから。

12:デフォルトの名無しさん
12/02/10 02:14:46.18
3.2。理由はすべてスクラッチで開発してるので既存のライブラリを気にしなくていい状況だったから。

13:デフォルトの名無しさん
12/02/10 02:50:08.09
期待通りのレスをもらったのに愚痴るひとのレス


14:デフォルトの名無しさん
12/02/10 03:00:36.62
↓  ↑
→→↑

あらよっと

15:デフォルトの名無しさん
12/02/10 05:02:55.68
Python3.2の継承の実装について知りたいのですが、
どのsourceを読めばいいのかご存知の方おられませんか?
もしご存知でしたら教えて頂きたいのですが。

Python/pythonrun.c, Python/ast.c, Objects/typeobject.c
辺りを grep ^[a-z_]+( して当たりを付けたいのですが、
今だ見つけれておりません。

16:デフォルトの名無しさん
12/02/10 07:12:15.62
>>15
継承の実装と言うのが、

・継承されたクラスがどんな風にコンパイルされるのか
・コンパイルされた結果がどんな風に実行されるのか

の、どっちを知りたいかはわからんけど、とりあえず、inherit あたりで
grep かけてみればいいかと。

> grep ^[a-z_]+( して当たりを付けたい

python のソースは、PyType_ClearCache( ) のように大文字使ってる
奴多いから、grep ^[A-Za-z0-9_]+( の方がいいんじゃないかな。

17:デフォルトの名無しさん
12/02/10 07:13:13.43
>>15
継承の実装と言うのが、

・継承されたクラスがどんな風にコンパイルされるのか
・コンパイルされた結果がどんな風に実行されるのか

の、どっちを知りたいかはわからんけど、とりあえず、inherit あたりで
grep かけてみればいいかと。

> grep ^[a-z_]+( して当たりを付けたい

python のソースは、PyType_ClearCache( ) のように大文字使ってる
奴多いから、grep ^[A-Za-z0-9_]+( の方がいいんじゃないかな。

18:16-17
12/02/10 07:14:31.92
スマン、エラーになったから書き込み直したら、二回書いてた。

19:デフォルトの名無しさん
12/02/10 08:43:26.32
Objects/typeobject.c
PyType_Ready(PyTypeObject *type)の中の
inherit_special(type, type->tp_base);
を探っていっていますが、
私の踏んでいるbugが解決しない気がします。

class Bar_abstract(metaclass=ABCMeta):
pass
# class Bar_base(Bar_abstract):
# pass
# c の拡張で実装
class Bar(Bar_base):
pass

としているんですが、
bar = Bar()
dir(bar)
とすると、

#23 0x080719f5 in subtype_dict (obj=0xb73b69c4, context=0x0)
at ../Objects/typeobject.c:1756
#24 0x0817670a in getset_get (descr=0x95c46fc, obj=0xb73b69c4, type=0x95acd44)
at ../Objects/descrobject.c:148
#25 0x080719f5 in subtype_dict (obj=0xb73b69c4, context=0x0)
at ../Objects/typeobject.c:1756
#26 0x0817670a in getset_get (descr=0x95c46fc, obj=0xb73b69c4, type=0x95acd44)
at ../Objects/descrobject.c:148

こんなふうに無限loopになってしまいます。
URLリンク(www.btb-group.net)
正直、Pythonのbugじゃないかな?
と疑っていますが、どなたかdebugを手伝って頂けないでしょうか?

20:デフォルトの名無しさん
12/02/10 09:52:24.79
>>11,12
まじめに答えてよ!上司を説得するための材料を集めてるところなんだから!

21:デフォルトの名無しさん
12/02/10 09:59:39.24
>>11-12は期待通りの結果となったんだから、
技術者冥利に尽きるじゃん。

ってのはおいとおいて。
どういう分野で使おうとしているかくらい情報提供してよ
ついでに>>19も助けてよ

私個人は3.2を使ってて、server系は2.7を使ってる。
安定稼働の信用性が求められるから、serverは実績の多い2.7にしてる。
3.2とかC拡張を見つけにくいのが困るよね。

22:デフォルトの名無しさん
12/02/10 15:35:16.54
>>21
>どういう分野で使おうとしているかくらい情報提供してよ
Webアプリ(業務用)。
文字列周りが改善されたから3系(3.2)を使おうと思ったら、
Djangoが3系に対応してなくてびっくりしているところ。

>私個人は3.2を使ってて、server系は2.7を使ってる。
なるほど。個人では最新版を使うけど、仕事ではかれたバージョンを使うってことですね。
ありがとうございます。

23:デフォルトの名無しさん
12/02/10 15:41:39.52
枯れてねーよ。アホか

24:デフォルトの名無しさん
12/02/10 22:34:26.38
日本ではPythonを仕事で使ってるユーザが少ないから、事例を聞いても答えられる人はほとんどいないんじゃね?

25:デフォルトの名無しさん
12/02/10 22:55:54.01
少し前にMLで似たような話があったな

26:デフォルトの名無しさん
12/02/11 01:31:59.86
Pythonを仕事で使ってるけど、事例については守秘義務のため答えられない

27:デフォルトの名無しさん
12/02/11 03:18:59.98
日本の仕事で多いのは
PHPとJava、VBから乗り換えのC#
あたりかな

28:デフォルトの名無しさん
12/02/11 05:31:21.37
大学で使ってる

29:デフォルトの名無しさん
12/02/11 23:58:56.44
学生のプログラミング演習で使っているのと
大学の受講履歴管理システムで使っているのとでは
だいぶ意味が違ってくるな。
学生の演習で使ってる、なんてタレコミははいらんだろ、>>10てきに。

30:デフォルトの名無しさん
12/02/12 06:44:57.44

大学も言ったことない厨が申しており

31:デフォルトの名無しさん
12/02/15 09:34:52.40
PyBytesObject の ov_sval を '\0' で埋めるのは、
Pythonの内部的に何か理由のあることなのでしょうか?
ob_sizeを持っているのに、'\0'を終端に付ける理由がよく分かりません。
PyBytesObject の bytes_methods のどれかが、
'\0' 終端に依存した実装だったりするのでしょうか?

/* Invariants:
* ob_sval contains space for 'ob_size+1' elements.
* ob_sval[ob_size] == 0.
* ob_shash is the hash of the string or -1 if not computed yet.
*/

32:デフォルトの名無しさん
12/02/15 09:43:03.24
PyUnicodeObject との互換性のための様な気がしてきました。
そうであれば、'\0'終端を意識せずにPyBytesObjectを使っていこうかな。
と思いますがよいのでしょうか?

33:デフォルトの名無しさん
12/02/15 23:15:49.26
無料で「みんなのPython Webアプリ編」のPDFファイルがダウンロード可能に
URLリンク(gigazine.net)

↑のリンク先が切れてる…
ファイル持ってる人、もし良かったら上げてくれないか?
うpろだ URLリンク(www.dotup.org)

34:Matplot
12/02/15 23:35:04.60
Matplotlibを使ってみたくて、URLリンク(fonnesbeck.github.com)から、
インストールしました。
動くかどうかのtestとして、
>>> import matplotlib.pyplot as plt
を入力したところ
No module named dateutil.rrule
というエラーがでてきてしまいます。

解決方法がわかる方、教えてください。

35:名無しさん@いたづらはいやづら
12/02/16 00:03:08.05
>>33
500 internal server error だから
待ってればそのうち復活するんじゃない

36:デフォルトの名無しさん
12/02/16 00:11:01.25
>>34
向こう側に回答しておいた

37:31
12/02/16 00:27:57.40
こういう内部実装に関する話は2chは不適なんでしょうか?
python-list or python-dev で質問した方が良さそうですね。
Pythonの使い方でなく内部実装の話なので、
python-devの方が詳しい方が多いかと思いますが、
python-devの話題として受け入れられるでしょうか?

38:デフォルトの名無しさん
12/02/16 01:43:37.37
高度に発達したスパムはステマと見分けがつかないって昔のエライ人が言ってたしな

39:デフォルトの名無しさん
12/02/16 09:38:36.04
>>34
Matplotlib板においでよ。

40:デフォルトの名無しさん
12/02/16 10:17:25.83
Matplotlib でグラフプログラミング【Python】
スレリンク(tech板)

41:デフォルトの名無しさん
12/02/16 18:16:49.63
みんなのぱいちんくん

42:デフォルトの名無しさん
12/02/17 18:13:06.63
この本読んだひといますか?
感想聞かせてください

WSGIウェブプログラミング
URLリンク(www.amazon.co.jp)

書評悪すぎてわろす

43:デフォルトの名無しさん
12/02/17 18:36:22.13
>>42
マ(ry

44:デフォルトの名無しさん
12/02/19 16:57:46.83
>>42
悪すぎっつっても書いてるの1人だけじゃん。
とは言いつつ、カットシステムの時点で質は推して知るべし。

45:デフォルトの名無しさん
12/02/21 16:53:22.47
あるパッケージを、easy_install でインストールしたあとに、
新しいバージョンを pip でインストールしても問題ないでしょうか。

46:デフォルトの名無しさん
12/02/21 17:17:31.11
ok

47:デフォルトの名無しさん
12/02/25 10:40:57.88
>>42
立ち読みだけど作者がPython好きで
WSGIを広めたいってのは感じた。
WSGIが生まれた背景とか読めばいい。
コードを見て勉強するための本じゃない。



48:デフォルトの名無しさん
12/02/26 13:54:23.84
自分で作ったクラスのメンバを入力補完してくれるエディタってありますか?

49:デフォルトの名無しさん
12/02/28 06:26:16.39
eric4

50:デフォルトの名無しさん
12/02/28 09:10:38.60
任意の長さのランダムなASCII文字列を生成する関数を作りたいのだが,どのように書けばいいだろうか
2つほど考えてみたが,どうもしっくりしないので,クールな方法を教えてほしい

f = lambda x: ''.join([random.choice(''.join([chr(x) for x in xrange(0x20, 0x7f)])) for _ in xrange(x)])
g = lambda x: ''.join([chr(random.randint(0x20, 0x7e)) for _ in xrange(x)])

51:デフォルトの名無しさん
12/02/28 13:08:21.86
g = lambda x: ''.join(chr(random.randint(0x20, 0x7e)) for _ in xrange(x))
joinの引数は、リスト内包じゃなくてジェネレータ式で十分。

52:48
12/02/28 14:20:48.65
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。

53:48
12/02/28 14:21:09.63
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。

54:デフォルトの名無しさん
12/02/28 14:22:13.52
おちけつ

55:デフォルトの名無しさん
12/02/28 19:38:34.09
あんまり自信ないけど新版明日出るし洋書でCookbookとついでにLearninig Pythonも買おうかな

56:48
12/02/28 23:00:47.00
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。

57:48
12/02/28 23:01:12.67
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。

58:デフォルトの名無しさん
12/02/28 23:03:03.23
お風呂入ってきますれす(^q^)

59:デフォルトの名無しさん
12/02/28 23:04:00.47
誤爆しました。ごめんなさい(^q^)

60:デフォルトの名無しさん
12/02/29 00:25:42.89
お前はさっきから何をやっているんだ

61:デフォルトの名無しさん
12/02/29 00:34:17.45
pass

62:48
12/02/29 03:59:16.59
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。


63:48
12/02/29 03:59:51.21
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。


64:デフォルトの名無しさん
12/02/29 04:00:29.33
大事なことなので(ry

65:デフォルトの名無しさん
12/02/29 08:06:23.18
さっきからなんなの?
まるで成長していない

66:デフォルトの名無しさん
12/02/29 08:31:09.46
>>> u'%10s' % (u'abc')
u' abc'
だとスペース7個のあとに「abc」が表示されますが
>>> u'%10s' % (u'日本語')
u' \u65e5\u672c\u8a9e'
だとやっぱりスペース7個のあとに「日本語」が表示されます
>>> u'%7s' % (u'日本語')
u' \u65e5\u672c\u8a9e'
結果としてはこちらを期待している訳ですが
「%7s」(日本語の方の文字列長に依存するので)にしないといけない
のが納得逝きません
これはバグでしょうか仕様でしょうか

67:デフォルトの名無しさん
12/02/29 08:33:16.47
モルモン教徒の工作だから気にしないでいい

68:デフォルトの名無しさん
12/02/29 08:45:25.48
>66
それが当たり前じゃないの
エスパーすると半角はスペース一つで全角はスペース二つ消費したいと

69:デフォルトの名無しさん
12/02/29 08:49:36.13
知らんけど仕様じゃないの?
しかもPythonに非はないと思うよ。
文字一つを表示した時に二文字分か一文字分かなんて、
fontによりけりになるんじゃないの?
unicodeではそこらへん規定してるのかなー?

70:デフォルトの名無しさん
12/02/29 08:50:24.15
コンソールアプリを書いてて
右揃えで綺麗にテーブル表示したかったんです

71:デフォルトの名無しさん
12/02/29 09:06:21.92
asciiの時は空白分を加算して、
13s
にするとかじゃないと対処できないと思うよ。
Pythonで対処するのは無理だと思う。
専用の関数を自作するしかないんじゃないの?

unicodeは何byteで一文字を表現するかを規定するだけで、
一文字を何文字分の幅で表示するかはfontの仕事。

それか、asciiを全角表示するように変換するとかかな?
'a': 'a'
みたいなのをずらずら作っていくのが、
作業量的にも技術的にも、一番簡単かつ現実的な解決方法だと思います。

72:デフォルトの名無しさん
12/02/29 09:11:05.26
やっぱり完璧な解決方法じゃないな。
ハンカク文字ってのがいたよ。
でもま、ちょろちょろっと作るscriptなら、
変換table用意するのが楽だと思うよ。

73:デフォルトの名無しさん
12/02/29 09:40:46.04
てきとうに作ったらキモくなった
isascii = lambda c: c in u''.join(chr(x) for x in xrange(0x20, 0x7f))
u = u'アあa'
'%*s' % (10 - len([x for x in u if not isascii(x)]), u)
u' \uff71\u3042a'
ちょっと後悔している

74:デフォルトの名無しさん
12/02/29 10:49:37.60
大事過ぎるやろ…

75:デフォルトの名無しさん
12/02/29 10:51:22.55
すまん誤爆

76:デフォルトの名無しさん
12/02/29 11:10:37.90
教えてほしいんですが、文字が全角幅か半角幅かはどうやって判断するのがいいのでしょうか。
フォントに依存するというのはなしで。

77:デフォルトの名無しさん
12/02/29 11:11:11.01
フォントに依存する。


78:デフォルトの名無しさん
12/02/29 11:29:29.80
2byteのaもあったな

79:デフォルトの名無しさん
12/02/29 11:47:05.97
u = u'アあa'
u'%*s' % (10 - len(filter(lambda x: ord(x) > 127, u)), u)

80:デフォルトの名無しさん
12/02/29 12:18:04.03
>>> import unicodedata
>>> unicodedata.east_asian_width(u'あ')
'W'
>>> unicodedata.east_asian_width(u'a')
'Na'
>>> unicodedata.east_asian_width(u'a')
'F'

URLリンク(ja.wikipedia.org)

81:デフォルトの名無しさん
12/02/29 13:59:32.31
URLリンク(www.packtpub.com)
なんかオススメの本、この中にある?


82:デフォルトの名無しさん
12/02/29 14:17:10.78
>73 >79-80
ありがとうございます
そのあたりを参考に自作してみます

元々は
print u' name length size %'
for r in lst:
print u'%8s%8d%6d%4d' % (r.name, r.l, r.s, r.p)
みたいなテーブル表示をしてて
名前に日本語が混ざってるとずれてくるので
変だなーと思った次第です
日本語使わなければ済む問題なんですが


83:デフォルトの名無しさん
12/02/29 14:56:23.62
east asian widthがambiguousなケースは要注意(キリル文字とか)
そのような文字をどう表示するかは本当に環境やソフト次第なので…
「それらの文字を日本語フォントで表示するような環境なら」
全角扱いにすべきだが、例えば端末上で動作するようなソフトウェアは
端末がどのような文字をどのようなフォントでレンダリングするつもりなのか
知りようがない
なので、例えばvimのようなソフトウェアは、そうした文字を全角扱い
するかどうかをユーザが設定で指定できるようになっている

84:デフォルトの名無しさん
12/03/01 07:08:40.38
できました
ありがとうございました

85:デフォルトの名無しさん
12/03/03 01:42:51.23
>>49
ありがとうございます。ericよさそうですね。
セットアップがややこしそうですがインストールしてみようと思います。

86:デフォルトの名無しさん
12/03/03 02:09:19.61
きっと秋山さんが何とかしてくれる

87:デフォルトの名無しさん
12/03/03 11:00:44.99
windowsの3.2の話
virtualenv環境でpysideのexeインストーラをeasy_installしようとしたらコケた
easy_installはインストーラのメタデータを読み込んでdecodeするんだがascii決め打ち
pysideのインストーラには0x92が入っててこいつのせいらしいerrors='replace'つけて回避したけどこれってどっちが悪いんだろう

88:デフォルトの名無しさん
12/03/03 13:53:58.92
おまえ

89:デフォルトの名無しさん
12/03/05 10:56:36.10
Python 3.3.0 α版記念age

90:デフォルトの名無しさん
12/03/05 13:09:40.58
alphaから正式版になるまでどれくらいかかりますの?

91:デフォルトの名無しさん
12/03/05 13:18:38.41
URLリンク(python.org)
リリーススケジュールがトップに載っている

92:デフォルトの名無しさん
12/03/05 14:29:51.55
2012年の8月っすね
URLリンク(python.org)

93:デフォルトの名無しさん
12/03/05 17:10:52.26
3.3の特徴をおしえろ
時間がない今すぐにだ

94:デフォルトの名無しさん
12/03/05 17:28:09.03
>>93
URLリンク(docs.python.org)

95:デフォルトの名無しさん
12/03/05 18:14:27.69
お箸の国の人でもわかる言語で頼む
急いでくれよ・・・妹の命にかかわるんだ

96:デフォルトの名無しさん
12/03/05 18:48:31.99
                  .∧__,,∧
                 (´・ω・`)
                  (つ妹と)
                  `u―u´

          あなたの帰りを待ち構えているこれを、

        ∧__,,∧                         ∧__,,∧
      (`・ω・)^) ミ                  (`・ω・´)
        (     つ  ⌒ヽ               と   ,u、つ
      `u―u'     妹               `u´妹
                YY⌒Y
         こうして、                   こうして、

                    ∧__,,∧
            _     (ω・´ )
         妹 三ニ ☆ __,(    )つ
              ̄    `ー―‐u'

                 こうだ !

97:デフォルトの名無しさん
12/03/05 19:43:58.84
「待ち構えている」親兄弟ってちょっとイヤだな。

98:デフォルトの名無しさん
12/03/05 20:24:01.62
んじゃ

                  .∧__,,∧
                 (´・ω・`)
                  (つ命と)
                  `u―u´

          あなたの帰りを待ち構えている妹の命を、

        ∧__,,∧                         ∧__,,∧
      (`・ω・)^) ミ                  (`・ω・´)
        (     つ  ⌒ヽ               と   ,u、つ
      `u―u'     命               `u´命
                YY⌒Y
         こうして、                   こうして、

                    ∧__,,∧
            _     (ω・´ )
         命 三ニ ☆ __,(    )つ
              ̄    `ー―‐u'

                 こうだ !

99:デフォルトの名無しさん
12/03/05 21:34:56.42
妹の最期の言葉を伝えたい
「お兄ちゃん3.3で何が新しくなったの、日本語で説明して・・・(ガクッ)」

100:デフォルトの名無しさん
12/03/05 21:57:55.20
イケメンの定義がより厳しくなったよ
イケメンはフツメンの女の子に告白しないといけなくなったよ
100行プログラムするとスイーツ一つを選べるようになったよ

101:デフォルトの名無しさん
12/03/06 01:38:57.48
def mygenerator():
    yield from range(10)

こんなのが書けるようになるのか。
イテレータの展開と言う意味では、yield *range(10)みたいな構文が
検討されてもいいのでは、と以前考えてたけど、fromの方が明示的で宜しい、だそうで。


102:デフォルトの名無しさん
12/03/06 03:11:28.36
mygenerator = (_ for _ in range(10))

103:デフォルトの名無しさん
12/03/06 08:33:10.32
ちょっと質問させてください。
初めてプログラミングを学んでいる者です。
教本の練習問題でスクリプトを作ったのですが、保存した.pyファイルをダブルクリックで実行するとCUIの画面が一瞬現れてすぐ消えてしまいます。
どうしてでしょう?
残らせる方法はありますか?
ちなみにCUIの画面でそのスクリプトを一行一行書いていくとちゃんと実行されるので、スクリプト自体に問題はないと思います。

…たぶん恥ずかしい質問なのでしょうが、どうぞよろしくお願いします。

104:デフォルトの名無しさん
12/03/06 08:51:27.78
>>103
コマンドプロンプトか端末から実行してください
あと超初心者向けの質問するならこちらがおすすめです

くだすれPython(超初心者用) その12
スレリンク(tech板)

105:デフォルトの名無しさん
12/03/06 09:00:11.48
>>104
ありがとうございます。
そうします。
スレもそちらに行くことにします。

106:デフォルトの名無しさん
12/03/06 11:38:40.35
>>101
例えば再帰的アルゴリズムをgeneratorで書いた場合には、下の例みたいに
転送するためのループを回す必要があったので、これはありがたいよね
今まで誰もがうざいと思ってたはず

def depth_first(xs):
    for x in xs:
        if hasattr(x, '__iter__'):
            for y in depth_first(x):
                yield y
        else:
            yield x


107:デフォルトの名無しさん
12/03/06 16:08:54.38
どうせなら、fromを複数書ければおもしろいと思ってみたり。
例えば、itertools.chainと等価な関数を、
def chain(*a):
 yield from from a
だけで書けるとか・・・
・・・ちょっとウザイか・・・

108:デフォルトの名無しさん
12/03/07 15:45:53.37
おしえてくださいえらいひと
ソートされていない長さnの配列から、ソートした状態でi番目の要素をO(n)で取ってくる
関数って、標準ライブラリにありますか。
C++STLでいうところのpartial_sort()。

109:デフォルトの名無しさん
12/03/07 15:47:02.44
ちがった、nth_element()だった。

110:デフォルトの名無しさん
12/03/07 15:52:51.08
>>> l = [3, 2, 7, 5, 1, 8]
>>> sorted(l)[0]
1
>>> sorted(l)[3]
5
>>> sorted(l)[5]
8

111:デフォルトの名無しさん
12/03/07 17:47:21.12
>>110
sortedが必要な部分だけソートするような機能があるかと期待してベンチマーク取っちまったよ、
全然O(n*log(n))じゃねーかよ!!

112:デフォルトの名無しさん
12/03/07 17:47:24.84
sort()の有無によらず、tuple object , list object, sequence objectとも
i番目の要素をとってくるcostはO(1)のようです。
2系も同じようなもんでしょ。
>>108はどっからの情報でO(n)もかかるだなんて思ったの?

Python-3.2.2/Objects/abstract.c
--
PyObject *
PySequence_GetItem(PyObject *s, Py_ssize_t i)
{
PySequenceMethods *m;

if (s == NULL)
return null_error();

m = s->ob_type->tp_as_sequence;
if (m && m->sq_item) {
if (i < 0) {
if (m->sq_length) {
Py_ssize_t l = (*m->sq_length)(s);
if (l < 0)
return NULL;
i += l;
}
}
return m->sq_item(s, i);
}

return type_error("'%.200s' object does not support indexing", s);
}

113:デフォルトの名無しさん
12/03/07 18:02:09.76
ものすごいC++のパフォーマンスへのこだわり

LLでは富豪的に
全部ソートしてしまえという方針

全部ソートしなくていいから、途中で打ち切って最短時間で頼む
って場合はLL使ってる時点で何か間違ってる


114:デフォルトの名無しさん
12/03/07 18:40:13.88
>>112
凄い勢いで色々勘違いしてると思う
C++のnth_element()はselection algorithmってやつで、最悪ケースO(n)で
実現できることが知られている
URLリンク(en.wikipedia.org)

>>113
LLで計算オーダーの違いを意識するのが間違ってるってことはないんじゃねーかなー
setみたいなものは重複の削除に使うこともあると思うけど、(ただのリストと
線形検索に比較して)効率のために使うことも多いはず

115:デフォルトの名無しさん
12/03/07 18:48:50.33
線形時間ってことはmin()やmax()と同じということ
min(L)の代わりにsorted(L)[0]と書く人はいないと思う
# 前者のほうがずっと簡潔で分かりやすい、という面ももちろん大きいけど

116:デフォルトの名無しさん
12/03/07 19:09:23.36
LLで考えるよりCで書いたほうが万倍速い

117:デフォルトの名無しさん
12/03/07 20:04:30.77
>>114
いや、>>108はPythonでtuple(), list()からi番目の要素を取ってくる時の、
Orderを知りたかったのだと思うのですが。
別言語のお話しで実装によってはO(n)かかる場合もあるという話なら納得です。
私は、Pythonでは以下の行からO(1)で取ってきていると伝えたかったのです。
return m->sq_item(s, i);

本当は以下の引用が必要だったのですけど.

((PyListObject *)op) -> ob_item[i];
↑の行でO(1)となるような実装にしていると思いました。

PyObject *
PyList_GetItem(PyObject *op, Py_ssize_t i)
{
if (!PyList_Check(op)) {
PyErr_BadInternalCall();
return NULL;
}
if (i < 0 || i >= Py_SIZE(op)) {
if (indexerr == NULL) {
indexerr = PyUnicode_FromString(
"list index out of range");
if (indexerr == NULL)
return NULL;
}
PyErr_SetObject(PyExc_IndexError, indexerr);
return NULL;
}
return ((PyListObject *)op) -> ob_item[i];
}


118:デフォルトの名無しさん
12/03/07 20:17:30.88
>>117
nth_elementでググれ

119:デフォルトの名無しさん
12/03/07 21:02:16.80
LLで富豪的だからといってオーダーが違うアルゴリズムの採用が許されるなんて、
ゆとり世代は怖いな。

120:デフォルトの名無しさん
12/03/07 21:08:14.88
>>117
>ソートされていない長さnの配列から、ソートした状態でi番目の要素をO(n)で取ってくる
どう見ても「tuple(), list()からi番目の要素を取ってくる」とは解釈できない。
ゆとり怖すぎ。

121:デフォルトの名無しさん
12/03/07 21:08:28.87
死ねキチガイ

122:デフォルトの名無しさん
12/03/07 21:09:17.81
>>121>>120へのレスじゃなくてもちろん>>119です

123:デフォルトの名無しさん
12/03/07 21:10:07.34
>>119 じゃなくて >>117 でした

124:デフォルトの名無しさん
12/03/07 21:10:51.94
自演うぜぇ

125:デフォルトの名無しさん
12/03/07 22:25:31.76
きもっ

126:デフォルトの名無しさん
12/03/07 23:40:39.46
pass

127:デフォルトの名無しさん
12/03/08 00:50:22.26
>>126
お前を忘れてよく怒られる
やっぱり大事だよなスルーカ

128:デフォルトの名無しさん
12/03/08 07:05:53.46
変な荒らしがいるね

129:デフォルトの名無しさん
12/03/08 07:53:51.81
まるで変じゃない荒らしがいるかのような言い回しだな。

130:デフォルトの名無しさん
12/03/08 10:08:56.77
で、結局PythonではO(n)は内のnth_element()は無いの?

個人的には、>>110の構文で、sortedオブジェクトが遅延評価でソートする
オブジェクトを生成して、途中の要素を参照しても、範囲を参照しても、
イテレーションしても、最小コストの計算量で済ます、みたいな実装がセクシーで
良いかな、と思ったり。

131:デフォルトの名無しさん
12/03/08 11:20:40.68
nth_element()相当のものを提供してる言語ってC++意外みたことないな
少なくともJavaや.NETにもない


132:デフォルトの名無しさん
12/03/08 11:47:26.68
そもそもi番目に大きい要素を取ってくるのがO(n)なこともあんまり知られてなさそうだしね。
中央値とか計算するのに全ソートしてるコードとか、世の中たくさんありそうだ・・・
皆もっとアルゴリズム勉強しようぜ!

133:デフォルトの名無しさん
12/03/08 11:56:07.31
じゃ、暇があれば>>130アイディアをネイティブ実装したモジュール作ってみるかな。
ただ、Python標準は安定なTimSortだから、これと折り合いをどう付けるか・・・

もっとも、9月まで暇ができそうにないが(´・ω・`)

134:デフォルトの名無しさん
12/03/08 18:30:43.08
期待してます

135:133
12/03/08 20:15:33.22
ネイティブじゃなくてPythonでだけど、ささっと作ってみた。
結構行けそうだ。
内部的に元位置(安定ソートのため)と、ソート済みか否かを示すフラグをのリスト持っておいて、
__getitem__()や__next__()が呼ばれたときに、クイックソートのうち必要な部分だけを繰り返す感じ。
getitemにスライスオブジェクト渡された処理とか、reversed()された処理とかは未実装・・・

いや、本当はやるべきことがたくさんあるんですが・・・

136:デフォルトの名無しさん
12/03/08 23:50:30.29
ありがとう

137:デフォルトの名無しさん
12/03/09 16:28:38.67
>>112
>sort()の有無によらず、tuple object , list object, sequence objectとも
>i番目の要素をとってくるcostはO(1)のようです。
>2系も同じようなもんでしょ。

これは恥ずかしい勘違いダネ!

138:デフォルトの名無しさん
12/03/09 16:31:15.64
うるせー
人様のそっとしておきたい過去に触れんじゃねー

139:デフォルトの名無しさん
12/03/09 20:45:17.91
easy_install paste したけど pasterコマンドがインストールされない。
paster コマンドって、どうやったらインストールされるの?

140:デフォルトの名無しさん
12/03/09 20:55:48.94
俺たちの面白度に挑戦してきてるな、いいぞ、受けて立ってくれるわっ!!!
ゆけっ>>141、わしらを舐めた>>139を懲らしめてやりなさいっ!!!

141:デフォルトの名無しさん
12/03/09 20:59:43.88
 

142:デフォルトの名無しさん
12/03/09 21:01:30.70
URLリンク(readthedocs.org)
にある通りに easy_install pyramid したけど、pasterコマンドはインストールされないみたい。
Python 2.7.2で試した。
ドキュメントが間違ってるんだろう。直してほしい。

143:デフォルトの名無しさん
12/03/09 21:30:49.96
>ドキュメントが間違ってるんだろう

144:デフォルトの名無しさん
12/03/10 04:59:35.17
OSくらい書け

145:デフォルトの名無しさん
12/03/10 11:57:18.95
SOS

146:デフォルトの名無しさん
12/03/10 17:44:25.20
OSI

147:デフォルトの名無しさん
12/03/10 18:16:20.17
CHAOS

148:デフォルトの名無しさん
12/03/12 01:59:53.96
kusOSure

149:デフォルトの名無しさん
12/03/12 23:35:30.02
重い処理をcで書いて外出ししたいんですが、
ctypesで呼び出すのとimportで読み込めるmodule(.pydとか)を作るのと
どっちがいいんでしょ?

150:デフォルトの名無しさん
12/03/12 23:57:23.57
外出し厳禁~ ///
生中でお・ね・が・い ///

151:デフォルトの名無しさん
12/03/13 00:21:52.47
自分でpythonのソースに手を加えろとな

152:デフォルトの名無しさん
12/03/13 20:00:15.28
pythonのソースなんか変更する必要ないがな
対象のコードパターンが来たら挙動変える様にOSのソース変更すればよし

153:デフォルトの名無しさん
12/03/15 22:32:35.25
なにこの過疎っぷり

154:デフォルトの名無しさん
12/03/17 21:19:57.92
Mac OS 10.7.3
Python 2.7.1
…で、リッチテキストの文字列のみを取り出す
方法はありませんか?
もしモジュールのインストールが必要であれば、
macportsでインストールできると助かります。

155:デフォルトの名無しさん
12/03/17 22:29:28.72
ググればこの程度はすぐに見つかるが
URLリンク(pypi.python.org)

156:デフォルトの名無しさん
12/03/18 00:56:49.23
pythonにocamlのパターンマッチングみたいなことをする方法ってありませんか?

157:デフォルトの名無しさん
12/03/18 06:39:35.77
ぴよぴよ

158:デフォルトの名無しさん
12/03/18 09:38:06.44
響子さん、好きじゃー!

159:デフォルトの名無しさん
12/03/18 09:42:01.31
ocaml みたいなパターンマッチングといわれてもしらん

文字列の正規表現マッチングなら re モジュール


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