[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 21:50 / Filesize : 79 KB / Number-of Response : 399
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pythonのお勉強 Part33



1 名前:デフォルトの名無しさん [2009/04/26(日) 01:48:01 ]
Pythonオフィシャルサイト
www.python.org/
日本Pythonユーザ会
www.python.jp/Zope/
まとめWiki
python.rdy.jp/
関連スレ
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
pc12.2ch.net/test/read.cgi/tech/1234716330/

29 名前:デフォルトの名無しさん [2009/05/04(月) 09:31:11 ]
解答まだ?

30 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 09:40:52 ]
がんばって

31 名前:デフォルトの名無しさん [2009/05/04(月) 11:28:19 ]
Pythonに限った話じゃないかもしれませんが、2つの整数が与えられたとき異なるビットの数を求めるよい方法はないでしょうか?たとえば、1111(=15)と1001(=9)が与えられたら真ん中の2つのビットが異なるので2を返したいのです。

32 名前:デフォルトの名無しさん [2009/05/04(月) 11:34:30 ]
釣りだとおもうけど
ヒント:XOR

33 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 11:40:56 ]
Pythonは超初心者だけど、こんな感じかな?

str1 = format(15, 'b')
str2 = format(9, 'b')
count = 0
i = 0
while i < len(str1):
if str1[i] == str2[i]:
count += 1
i += 1
print count

34 名前:デフォルトの名無しさん [2009/05/04(月) 11:56:43 ]
>>32 >>33
アドバイスありがとうございます。

>>32
XORとると0110(=5)になって1の場所数えればよいわけですね。でも肝心の5という数値をビット列と見なす方法がわかりません・・・

>>33
Python2.5なのでformatメソッドがないのですが、推測するにstr1=format(15, 'b')って'1111'を返してくれるのでしょうか?それならすべてOKなのですが、2.5の範囲で同じことできないでしょうか・・・

35 名前:デフォルトの名無しさん [2009/05/04(月) 11:57:05 ]
PYTHONてバイナリ値を
いきなり文字配列に入れられるのか
便利だな

36 名前:デフォルトの名無しさん [2009/05/04(月) 11:58:47 ]
すみません、自己レスですが、python binary formatでぐぐったら
>>> bstr_pos = lambda n: n>0 and bstr_pos(n>>1)+str(n&1) or ''
>>> bstr_pos(15)
'1111'
という方法を見つけました!これでできそうです。アドバイスありがとうございました。

37 名前:デフォルトの名無しさん [2009/05/04(月) 11:59:21 ]
メソッド名やアトリービュート名の先頭につけるアンダースコア(_)
アンダースコアが1つついているのと、2つついているのの
違いってなんでしたっけ?



38 名前:デフォルトの名無しさん [2009/05/04(月) 12:05:19 ]
マスクBITをANDで順次
0にならない値をカウントとか

39 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 12:08:12 ]
>>32
2で割る

40 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 12:09:36 ]
アンカ間違えた >>34
しかも 5 じゃなくて 6 だし・・・

41 名前:デフォルトの名無しさん [2009/05/04(月) 13:11:10 ]
4桁のバイナリなら
汎用なら
(4BITの場合)
XORでもとめた値を
0001=1
0010=2
0100=4
1000=8
を順次に対象の値とAND演算
結果が0にならない値をカウント
だよね

42 名前:デフォルトの名無しさん [2009/05/04(月) 13:17:09 ]
ゴメン、”てにをは”がおかしかった…

43 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 19:46:51 ]
1bitずつ右シフトして1とandとった方がよっぽどマシだろ。
何がどう汎用なのか小一時間

44 名前:デフォルトの名無しさん mailto:sage [2009/05/04(月) 22:33:50 ]
初心者スレにまでPython叩きに来る信者って
惨めだな

45 名前:デフォルトの名無しさん [2009/05/05(火) 00:54:31 ]
右シフトとかアセンブラじゃないんだから
よく知らないけどCとかJAVAはできるの?

46 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 00:58:39 ]
CでもJavaでもPythonでも右シフト演算子はあるよ。
シフト演算子が無くても整数型を2で割るだけだから、できない言語の方が少ない。

47 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 03:15:49 ]
というか、とりあえずhamming distanceでぐぐれ。



48 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 04:11:47 ]
ググった。
 unsigned dist = 0, val = x ^ y;
  while(val) {
    ++dist;
    val &= val - 1;
  }
   return dist;

クヌースさん、歪みねぇな。

49 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:47:03 ]
それってクヌースが考えたの?

gurmeetsingh.wordpress.com/2008/08/05/fast-bit-counting-routines/
の 2a) 2b) は Peter Wegner となってる

50 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:28:39 ]
WikipediaにはKnuth's Algorithmって書いてあったけど、
本の初出が1968みたいだからPeter Wegnerのほうが先なのかな。
先にペーパー出してるかもしれないし、よく分からん。

51 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 18:35:12 ]
>>46
整数型に対する右シフトは、Cだと結果が未定義だぞ。
符号無し整数型ならOKだが。

52 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 19:04:20 ]
仕様厨か?

53 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 19:57:46 ]
違う。右シフトするときにMSBがどう処理されるかの、現実的な問題だ。
gccで試したら、-2を右1ビットシフトすると-1になった。
処理系によっては、INT_MAXになるはず。
で、前者だと>>46の通り整数型を2で割ったのと等しいが、今回の目的には使えない。
後者だと今回の目的に使えるが、整数型を2で割るのと結果が異なる。

54 名前:デフォルトの名無しさん [2009/05/06(水) 20:01:06 ]
1になってるbit数数えるのが目的の用途に符号なし整数使わず
わざわざ整数型持ってくる香具師が馬鹿でFA?

55 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 20:06:04 ]
いや、>>51=>>53は仕様厨ではなく、指摘が回りくどくて揚げ足取りになってるでFAだ。
(おれがその>>51=>>53本人だが)

56 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 20:58:26 ]
1ビット2ビット帰れない〜

57 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 21:41:21 ]
うーん、あまりにも小さなネタ過ぎるのか、アルゴリズムの本やそれこそKnuth本を当ってもHamming Distanceの計算方法が見付からないな...
誰かKnuth本の出てる場所知ってたら教えてくれろ。




58 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 22:22:00 ]
差分をとるのはXORで明白だから、
調べるなら>>49みたいに"bit count"のほうがいいんじゃない?

59 名前:デフォルトの名無しさん mailto:sage [2009/05/06(水) 23:07:27 ]
あーーーーーーがらっとるーーーーーーーーーーーーーーーー
なにがったんじゃーーーーーーーーーーーーーーーーーーーーーーー


60 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 08:26:19 ]
ubuntuを最近の9.04にして
何かアプリいれると勝手にpython2.6が入るぞ

61 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 08:33:11 ]
別にUbuntuじゃなくても

62 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 11:58:45 ]
debianとか誰に必要とされてるんですか?
osにお金も払えない貧乏ニンですよね

63 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 12:13:35 ]
貧乏人でもいいじゃない。
心が貧しくて卑しい >>62 より

64 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 16:18:22 ]
実際、フリーソフト教って怪しいよね

65 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 16:35:20 ]
ソース公開されてなきゃ気持ち悪くて使えないって人とか?
使うソフトいちいちソース調べてるんか

66 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 17:07:33 ]
x = [1, 2]
x += [9, 8]
x == [10, 10]
True

みたいな事ができる、メソッドか関数か計算式ってありませんか?

67 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 17:30:00 ]
マッピー



68 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 17:30:07 ]
map(lambda x, y: x + y, [1, 2], [9, 8])

69 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 17:35:12 ]
In [3]: from operator import *
In [4]: map(add, [1,2], [9,8])
Out[4]: [10, 10]
もしくは
In [5]: [x+y for x,y in zip([1,2], [9,8])]
Out[5]: [10, 10]

70 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 19:23:41 ]
>>65
何か悪いことが起きたら、ソースを読むw

71 名前:デフォルトの名無しさん mailto:sage [2009/05/08(金) 20:03:57 ]
import numpy
x = [1, 2]
x = numpy.add(x, [9, 8])

72 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 00:38:22 ]
>>68-71
どれが一番速いですか?
どれが一番メモリ効率良いですか?

73 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 01:17:55 ]
キー・タイプ数の点で早いのは>>69

モジュールをインポートする必要がないという点で
メモリ効率が良いのは>>68

74 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 02:43:36 ]
>>73
>>69のリスト内包は>>68より効率が悪いの?

75 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 03:39:16 ]
>>70
俺は直す知識が無いからパッチ書いたりとか出来ないけど
ハードコーディングされてて使い難いと思ったところを
ちょこちょこっと書き換えて自分ライクにしたりとかはある。

76 名前:デフォルトの名無しさん [2009/05/09(土) 05:34:00 ]
zipの中身ってyieldだっけ?

77 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 05:35:49 ]
3.0



78 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 15:42:04 ]
>>68-69,71の中では>>71が一番処理速度は早いですよね?

79 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 16:35:37 ]
>>78
自分で測定しろや

80 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 16:52:02 ]
天下のnumpy様に
標準ライブラリや組み込み関数が勝てるわけないだろう。

81 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 17:07:07 ]
>>78
やってみたぞ。

a, bをランダムな整数10000要素のリストとして

1. map(operator.add, a, b)
2. map(lambda x,y: x+y, a, b)
3. numpy.add(a,b)

を各1000回実行するのにかかった時間をtimeitモジュールを使って測定した結果は
以下のとおり。(CPU: Core2Quad Q6600, OS: Linux 2.6.28, Python: 2.6.2)

1. 0.977833986282
2. 1.91782212257
3. 0.0156099796295

ということで当然ながらnumpyの圧勝。
ただし、最初にnumpy.array()でシーケンスをnumpy.ndarrayに変換しておく必要あり。
これをやらないと逆に一番遅い。

82 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 17:45:19 ]
>>78-80
numpyは中身がlapackかなんかじゃなかった?
どっちにしても一部cで書かれてるから場合によってはnumpyが早いかもね

正直言うと全部pythonのlistのまま処理してくれないとめんどくさくて嫌なんだけどね
arrayってなんだよ

83 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 18:10:57 ]
numpyとscipyとpylabとmatplotlibの関係が良く分かんないんだけど。


84 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 18:28:23 ]
>>> _lambda.repeat(1,100000);_operator.repeat(1,100000);_numpy.repeat(1,100000)
[0.5832531788257711]
[0.43510585842614091]
[1.2607769981939327]

85 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 19:10:13 ]
>>84
なにこれ

86 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 19:59:17 ]
>>83
おまい使ったことないだろ。使えばすぐに分かるぞ。

おおざっぱに言うと、numpyで効率的なn次元配列及びそれらに対する
基本的な演算が与えられ、それを使ってscipyで計算をし、
結果をプロットするのがmatlabplotだ。

87 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:28:07 ]
スクリプト系は結局こうなるよな。
アルゴリズムの知識じゃなくて、モジュールの知識。



88 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:32:43 ]
最近の言語はそうじゃない?
今C#やってるけど、ひたすら.NETFrameworkの使い方調べてるぞ。

89 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 21:34:30 ]
>>87
ある程度ライブラリが揃っていれば、スクリプト言語かどうかに関係なく
どの言語も似たようなものだろ。

90 名前:デフォルトの名無しさん mailto:sage [2009/05/09(土) 23:05:14 ]
Python 2.x ではstatementだったexec が3.0ではfunctionになりましたが、
2.xと3.0の両方で動作するように書くにはどうしたらいいでしょうか。
exec '....' in globals, locals # 2.x
exec('.....', globals, locals) # 3.0

globalsとlocalsを指定しなくていいなら exec('....') でいいのですが、globalsとlocalsも指定して、なおかつ2.xと3.0の両方で動かしたいです。

91 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 00:20:09 ]
from __future__ import exec
exec('.....', globals, locals)

とかすればできるのかな。
future文使ったことないから知らん。

92 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 00:50:52 ]
pythonで動画扱いたいのですが
どのライブラリがお勧めですか?

93 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 01:28:57 ]
速さは分かったけど
メモリ効率って
どうやって調べられるん?

94 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 02:39:10 ]
topでresident sizeでも見れば?大雑把な指標にはなる。

95 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 02:50:22 ]
resourceモジュールだっけな、もう忘れた

96 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 07:22:06 ]
resourceモジュールってgetrusage()呼んでるだけだよな。
ということはtopを見れば十分という話だな。
WindowsでもProcess Explorer使えば同様にモニタリング出来るし。

97 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 07:24:00 ]
MacOS XでPython3.0を使っているのですが、help()を使うとときどき
UnicodeEncodeError: 'shift_jis' codec can't encode character '¥xab' in position 3701: illegal multibyte sequence
というエラーがでます。
たぶんデフォルトの文字コードがshift_jisになっているせいだと思いますが、
デフォルトの文字コードをutf-8に変更するにはどうしたらいいですか。
できればLANG以外の方法で。



98 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 10:59:04 ]
>¥xab

\が全角だから

99 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 11:03:21 ]
円マークじゃなくて、\x5c の文字である必要があるから、環境によってはバックスラッシュかもね。

100 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 11:47:29 ]
import math
print math.e ** (1j * math.pi) がOKで
print math.exp(1j * math.pi) がNGなんだけど

expがcomplex を受け取らないのは何か理由があるの?

101 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 12:20:21 ]
>>101
複素数用にcmathが用意されてるから。cmath.exp()を使え。

102 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 12:57:53 ]
expがcomplex を受け取らないのは何か理由があるの?

103 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 13:03:17 ]
ソース読んで自分で調べろボケ

104 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 13:54:36 ]
>>103
お前初めてかここは、力抜けよ

105 名前:デフォルトの名無しさん [2009/05/10(日) 13:57:09 ]
みんなのPython 改訂版 が出たと思いますが
初心者にはおすすめでしょうか?
まったくの初心者です。

106 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 14:00:47 ]
プログラム初心者ならみんパイ
Python初心者ならはじパイって感じじゃね?
amazonのレビューとかは気にすんな

107 名前:デフォルトの名無しさん [2009/05/10(日) 14:15:06 ]
ありがとうございます。参考になりました。



108 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 14:26:20 ]
docs.python.org/3.0/whatsnew/3.0.html
>It is not recommended to try to write source code that runs unchanged under both Python 2.6 and 3.0;
訳) 2.6と3.0の両方で動くように書いたらダメってGuidoが言ってた

109 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 14:50:35 ]
>>104
>>101で答えてやったのに、補足もせずに全く同じ質問をぶつけてきたら
頭に来るだろ。

110 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 15:06:22 ]
裏でなにが行われてるか知らないとキモチワルイ!
ってタイプの人なんだろう。
でもそういう人はソースくらい自分で読めないとね

111 名前:デフォルトの名無しさん mailto:sage [2009/05/10(日) 15:48:31 ]
どうせいつものなりすまし厨だろ。

112 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 00:23:14 ]
おっぱいそん初心者です。

固定長データの中に16進コードで日本語の地名が入っているのですが、
それを日本語で出力するにはどうしたらいいのでしょうか。
(例えば、「東京」ならデータ中には 「93 8C 8B 9E」 とshift jisで入っています)

固定長のデータを変数に入れたとして、
b='93'
c='8C'
d = '\x' + b + '\x'+ c
として「東」 を表示しようとしましたが、dに代入するところですでにエラーが。
どなたかお助けを…


113 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 00:48:07 ]
とりあえず
d = r'\x' + b + r'\x'+ c

114 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 00:59:12 ]
あ、それだと駄目なのか

115 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 01:10:38 ]
>>> s = ["93", "8c", "8b", "9e"]
>>> print "".join(chr(int(x, 16)) for x in s)
東京

116 名前:デフォルトの名無しさん [2009/05/11(月) 03:12:10 ]
>>109
>104 が答えになってないだろ

117 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 03:22:47 ]
頭に血が登ってアンカー間違えたか?
くだらん言いがかりつける暇あるなら調べろよカスが



118 名前:100 mailto:sage [2009/05/11(月) 06:17:42 ]
python に慣習、主義があって
それにしたがってんのかと思い聞いてみたんだが
この感じだとそんなんじゃ、なさそうやね。
単に処理速度の問題かな。

自分のコピペんのせいで荒れるの嫌だから
一応念のためにいうけど>>100 とこのレス以外は別人なんで、よろしく。

119 名前:デフォルトの名無しさん mailto:sage [2009/05/11(月) 08:45:22 ]
2.6用
3.0用
のコードをブランチで分けて
darcsで同じパッチ当てながら開発って

クエン酸いれたらどうっすかなみのアイデアですか


120 名前:デフォルトの名無しさん [2009/05/11(月) 09:26:32 ]
>>117
血が昇る
では?

121 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 00:52:01 ]
2.x系と3.0とを判定するよい方法はありますか。
現在は sys.version.startswith('3') で調べていますが、もっといい方法はありますか。

122 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 00:54:26 ]
>>108
>訳) 2.6と3.0の両方で動くように書いたらダメってGuidoが言ってた

原文は It is not recommended だから、ダメじゃなくて おススメしないというだけだよね。

123 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 01:10:46 ]
>現在は sys.version.startswith('3')で
それでいいんじゃないかと思うけど


適当に考えついた他の例
def is_python3_or_later():
 return range(0) != list(range(0))

124 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 06:32:31 ]
>>121
sys.version_info >= (3, 0, 0)じゃだめ?

125 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 14:19:30 ]
ttp://www.amazon.co.jp/dp/4798118753

激しいクソ本臭がするんだが気のせいかな?

126 名前:デフォルトの名無しさん [2009/05/12(火) 16:07:35 ]
合格です
おめでとう

127 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:10:09 ]
('3')が顔文字に見えてきた



128 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:33:12 ]
>>125
ググってみたら、著者はzope、ploneな人たちっぽい...orz...。

129 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 16:55:34 ]
>>124
sys.version_info なるものがあるのか! これは助かりました。ありがとうございます。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<79KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef