[表示 : 全て 最新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/

2 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 02:03:24 ]
  _  ∩
( ゚∀゚)彡 おっぱいそん!おっぱいそん!
 ⊂彡

3 名前:デフォルトの名無しさん [2009/04/26(日) 03:40:09 ]
ぱいちんこ

4 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 05:48:04 ]
ぱいぱい! ぱいぱい!

5 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:28:12 ]
10分前にPython 3.0.1インタプリタをダウンロードしたものですが
>>> "hello world"
'hello world'
>>> print "hello world"
File "<stdin>", line 1
print "hello world"
^
SyntaxError: invalid syntax
これはどういうことでしょうか?
いきなり挫折しそうです

6 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:31:56 ]
print ("hello world")
自己解決すますま

7 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:32:46 ]
Python3はprintが関数に変わったんで
print("hoge")
ってやらなきゃ駄目なんじゃね

8 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:37:20 ]
>>6
Python 3.0 はまだαだから開発者以外手を出すな。
Python 3.1 はまだβだから一般人は手を出すな。
Python 3.2 はまだRCだから初心者なら手を出すな。
Python 3.3 から初心者もOK。

今、「環境変数取得APIをUnicodeにしちゃったけど、ちゃんとデコードできない
バイナリ列どう扱えばいいと思う?」とか議論しながらAPIを整備中。

9 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 00:44:12 ]
3.4になったら本気出す。

10 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 01:18:55 ]
入門書嫁
ttp://www.amazon.co.jp/dp/4797353953




11 名前:デフォルトの名無しさん [2009/04/28(火) 12:43:20 ]
うちのはPython 2.4だけど
俺がPythonを覚えられない原因がわかったよ


12 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 13:56:03 ]
3.4に手を出すと色々対応してくれるまで待つのが長いね

13 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 17:03:15 ]
なんだ、ABCでもダックタイピングできるんじゃねえか
ABCMeta.registerとかってなんのためにあるんだよ

import collections

class Con():
    def __contains__(self):
        pass
    
class NotCon():
    pass

print(issubclass(Con,collections.Container))
print(issubclass(NotCon,collections.Container))

14 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 17:04:27 ]
>>13
うっかり結果を書くのを忘れた
print(issubclass(Con,collections.Container)) # ==>True
print(issubclass(NotCon,collections.Container)) # ==> False

15 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 17:35:35 ]
>ABCMeta.registerとかってなんのためにあるんだよ
自己解決。collectionのABC実装を見たところ、
ダックタイピングしてもissubclassで型チェックできる
=issubclassの結果を変える__subclasshook__があるのは
実装のないBaseClassのみだったんだよね。

つまり実装のあるBaseClassに関してはするか
手動でメソッドチェックしてregisterしないといけない。うーん……

16 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:16:30 ]
と、思ったけどregisterって動的継承するわけじゃないのか
isinstanceやissubclassが通るようになるだけで、
MutableMappingをregisterしてもpopを自動的に実装してくれるわけではない……
CのクラスをABCに登録するとき用と考えたほうがいいのかなあ……

17 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:53:35 ]
と、いうわけで、未知のクラスにabstractmethodで指定したメソッドが実装されているかのチェックと、
もし可能であれば対応するAbstract Base Classを継承したクラス用
インターフェースを作成する関数を作ってみた。

def is_abc_castable(instance, C):
    return all(
        any(hasattr(Base, abm) for Base in type(instance).__mro__) 
               for abm in C.__abstractmethods__)

def abc_cast(instance, C):
    if isinstance(instance, C):
        return instance

    if is_abc_castable(instance, C):
        class Wrapper(type(instance), C):
            def __init__(self, hold):
                self._hold = hold

            def __getattr__(self, attr):
                return getattr(self._hold, attr)
        
        return Wrapper(instance)

    raise TypeError("Can't cast")

18 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 19:59:40 ]
連投すまん。
これは関数内部でダックタイピング的なチェックを行い、チェックが通ったら動的継承を行う。
委譲ラッパーを使うので関数の外部に影響を及ぼさない。

class Interval(metaclass = abc.ABCMeta):
    @abc.abstractmethod
    def begin(self):
        return NotImplemented

    @abc.abstractmethod
    def end(self):
        return NotImplemented

    def __str__(self):
        return "({begin}, {end})".format(begin = self.begin(), end = self.end())

class DuckInterval():
    def __init__(self, begin, end):
        self._begin = begin
        self._end = end
        
    def begin(self):
        return self._begin

    def end(self):
        return self._end

19 名前:デフォルトの名無しさん mailto:sage [2009/04/28(火) 20:00:04 ]
def interval_print(interval):
    if is_abc_castable(interval, Interval):
        casted = abc_cast(d, Interval)
        print(str(casted))
    else:
        print("This is not Interval.")

if __name__ == "__main__":
    d = DuckInterval(1,2)
    interval_print(d) # ==> (1, 2)
    print(isinstance(d, Interval)) # ==> False

print(str(d)) # ==> <__main__.DuckInterval object ...>


20 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 15:48:36 ]
numpy.arrayじゃなくて
素のlistで行列計算をやってくれるlibraryはないのでしょうか

cのshard libなど(lapack.soなど)を読み込めない環境で数値計算したいのです




21 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 16:53:07 ]
pythonのコードが2chでは潰れてしまうから、勉強がてら変換コマンドをつくってみようと思ったら、>>1のまとめサイトにあったw
やっぱりみんな考えることは同じだぬ・・

22 名前:デフォルトの名無しさん mailto:sage J [2009/04/29(水) 19:47:14 ]
3.1は全角でも実行可能

23 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 22:28:31 ]
まじで?

24 名前:デフォルトの名無しさん mailto:sage [2009/04/29(水) 23:51:19 ]
コードの半角スペースはそのまま書き込んでいいから自己アンカー付けるようにしてくれよ。そうすりゃ專ブラのポップアップでちゃんと表示できるから。
レス番選択→右クリック(Janeのバヤイ)でもポップアップできるけどメンドい。

25 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 11:25:07 ]
PythonPath を call multiply multiply 3 2 として、
PyScripterで2.6と3.01を両方起動できるようになったんだけど
call multiply multiply 3 2 はどういう意味ですか?
あと、3.1もリリースされているけど、今のPyScripterでは
使えないですか?

26 名前:デフォルトの名無しさん [2009/05/02(土) 22:49:40 BE:544161986-PLT(12000)]
Pythonはじめました

27 名前:デフォルトの名無しさん mailto:sage [2009/05/02(土) 22:57:42 ]
がんばって

28 名前:デフォルトの名無しさん [2009/05/04(月) 09:12:35 ]
Pythonの並列計算用のppっていうのって、Core2Duoとか同じマシン上のマルチコアでも並列化してくれるの?


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 なるものがあるのか! これは助かりました。ありがとうございます。

130 名前:デフォルトの名無しさん [2009/05/12(火) 18:06:52 ]
>>125
いつのまにかこんな本も出てたんだね
ttp://www.amazon.co.jp/dp/477413760X



131 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:12:57 ]
>>130
それちょっと気になってる。

132 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:15:13 ]
>>130
その本はひどく読みづらい日本語で書いてあったなあ
あと、著者はPython分かってないと思う(w

133 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:28:37 ]
10日で〜シリーズはそういう層がターゲットだからあんまり期待してもしょうがないでしょ。
それにしてもそんな本でなんでそんなに著者が多いのか・・・


134 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 18:32:16 ]
束になってウンチ本を書いたんですね。ご苦労様です。

135 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:21:24 ]
>>130のは少なくとも入門書てしては失敗してると思う・・・
Python云々ではなく

136 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:21:35 ]
>>115
ありがとーん。
配列なめるあたりも分かりやすいですね。

いつもどおりにawkで書いたのですが、ユーザー関数つくらないとダメでした。
真剣にぱいてん(他言語からPythonへ転向)を考えております…

137 名前:デフォルトの名無しさん mailto:sage [2009/05/12(火) 23:57:05 ]
>>130
この本は、著者タソの才能が著しく低いか、やっつけで書いたのかどっちかだとおもう。
内容については1万歩譲るとしても、書籍として成り立ってない。

138 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 00:19:34 ]
DRYが説明なしにでてきた気がするんだが説明されてた?
Pythonエクスプローラのときはちゃんと説明あったが

139 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 00:33:23 ]
ドジャンゴってゾープと似てね?
使ってる人たちが。

140 名前:デフォルトの名無しさん [2009/05/13(水) 00:58:22 ]
>>132 >>135
ありがとう
Amazonのレビューにだまされるとこだったw



141 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 01:01:55 ]
>>137
そういうのは編集者の方でなんとかすることは出来なかったんだろうか?

142 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 01:05:06 ]
ploneってゾープと似てね?
使ってる人たちが。

143 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 03:29:28 ]
てか、PloneってZopeの直系っしょ?


144 名前:デフォルトの名無しさん [2009/05/13(水) 04:04:13 ]
pythonってrubyと似てね?
使ってる人たちが。


145 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 06:51:49 ]
そりゃねーわ

146 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 07:50:57 ]
ダンジョーはこんなもの。
それが感想。大勢で書いた割にはgdgdだったし。

147 名前:デフォルトの名無しさん [2009/05/13(水) 08:42:12 ]
勘のいい奴はみんPyを買うということか...?

www.amazon.co.jp/dp/4774138053/
23%のカスタマーが
みんなのPython 改訂版を購入しています

www.amazon.co.jp/dp/4873113938/
15%のカスタマーが
みんなのPython 改訂版を購入しています

www.amazon.co.jp/dp/477413760X/
12%のカスタマーが
みんなのPython 改訂版を購入しています


148 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 08:57:46 ]
はじめてのPythonをやってから
リファレンスとか見れば良いだけのような。

はじめてのPythonやってないと
細かな罠にひっかかりまくると思うぞ。

149 名前:デフォルトの名無しさん [2009/05/13(水) 09:50:36 ]
>>148
>細かな罠にひっかかりまくると思うぞ。

やっぱり勘の悪い人が買うんだ(笑)。

150 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 10:51:17 ]
>>149
えっ??



151 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 12:47:55 ]
恥ぱいで身につくとは思えない

152 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 12:49:55 ]
パイチュー

153 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 13:28:21 ]
>>151
身についたと思っているカンの悪い人が上に居るみたいだ。

154 名前:デフォルトの名無しさん [2009/05/13(水) 13:46:09 ]
rubyの%記法の文字列リテラルみたいな物ありますか?

%w[foo bar baz] 

['foo', 'bar', 'baz']と等価になる物です。

155 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 14:12:09 ]
>>154
よく使われるのは "foo bar baz".split()
.split() を省略するためだけにそんな特殊な表記を導入したくないな。

156 名前:デフォルトの名無しさん [2009/05/13(水) 15:28:37 ]
どこのpearl

157 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 15:49:06 ]
Rubyも結構変なことやってんだな

158 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 16:07:13 ]
>>155
なるほど、ありがとうございます

159 名前:デフォルトの名無しさん mailto:sage [2009/05/13(水) 16:10:41 ]
{'foo':'foo', 'bar':'bar', 'baz':'baz'}
print '%(foo)s %(bar)s %(baz)s'%x

160 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 00:50:57 ]
みんpyとか・・・・ ワロスw

あんな本意味なし。ゴミくずだ。



161 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 00:55:25 ]
初版は産廃だったけど改訂版はだいぶ持ち直してるみたいだぞ

162 名前:デフォルトの名無しさん [2009/05/14(木) 00:56:22 ]
>>160
あ?

今から勉強しようと思ったら急遽PHPでいろいろ作業することになってみんpy読むひまがない俺にけんか売ってんお?

163 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:09:48 ]
ttp://sugaya.otaden.jp/e35093.html

そうだな。みんpyを選んだ早稲田の教官はクズで
それを使ってプログラミングを学んでいる学生はウンコだよな。

164 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:17:22 ]
グロ注意

165 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:22:39 ]
[85444, 2300832, 713157, 473942, 3507283, 6213812, 737398,
582550, 9148273, 733699, 5265275, 4307330, 2603059, 2314503,
2253004, 2420119, 5637322, 3994275, 3706583, 3181024, 9019492,
2558557, 1025660, 4504277, 9910254, 4737662, 5362664, 4515987,
4342684, 2881108, 5788213, 2794348, 4332896, 3082922, 2418008,
6420796, 8640377, 8780202, 8790787, 6080687, 9504108, 7991910,
8999531, 4909827, 614814, 2013544, 6017311, 2334914, 1045624, 7220658]
このリストがちゃんとヒープになっているか調べるのが面倒くさいので
スクリプトで解決してください

166 名前:165 mailto:sage [2009/05/14(木) 01:23:48 ]
すみません、なってないですね。四つ目で気付けますよね・・・
自己解決しました・・・

167 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:33:06 ]
激しくデジャブ。

>651 名前: nobodyさん Mail: sage 投稿日: 2009/05/04(月) 23:37:44 ID: ???
>ttp://sugaya.otaden.jp/e35093.html
>
>ダンジョーが何匹集まってもかないそうにないね.
>
>652 名前: nobodyさん Mail: sage 投稿日: 2009/05/05(火) 14:03:29 ID: ???
>グロ注意


168 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 01:42:12 ]
>>165
L1 = [ (中略) ]
L2 = list(L1)
heapq.heapify(L2)
print L1 == L2

169 名前:165 mailto:sage [2009/05/14(木) 02:09:54 ]
>>168
ありがとうございます
自分で書く必要なんてないんですね

170 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 05:05:38 ]
Ploneの勉強しようと思うのですが

ttp://store.shopping.yahoo.co.jp/7andy/31676231.html
ttp://store.shopping.yahoo.co.jp/7andy/31507684.html
ttp://www.7andy.jp/books/detail/?isbn=9784774135014


どっちが良いのでしょうか?



171 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 09:20:31 ]
ここで聞くと参考になる答えは返ってこないかと・・・

172 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 12:18:24 ]
pythonのコードをreadableなcに変換する方法はないのでしょうか
readableなら完全な変換でなくて、多少の手で書きなおす部分があってもいいです

173 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:36:48 ]
readableの定義は?

174 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 16:50:52 ]
めんどくせw

175 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 20:54:21 ]
ちょっとまって、ヒープは一意に決まるのかな?


176 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 21:08:09 ]
>>171
もちろん参考にはしませんので教えれ

177 名前:デフォルトの名無しさん [2009/05/14(木) 22:53:53 ]
>172 pythonのコードをreadableなcに変換する方法はないのでしょうか
無理だ


178 名前:デフォルトの名無しさん [2009/05/14(木) 23:20:24 ]
lambdaが使われているソースがキモすぎて理解できません
誰か親切丁寧かつほのかなエロさで教えろ

179 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 23:27:54 ]
ラムダ計算を勉強してこい

180 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 23:35:45 ]
pythonのlambdaを使うだけならλ計算の勉強はしなくていいです。

lambda a, b: a + b ってのは、

def foo(a, b): return a + b という関数定義がその場にあって、
その場で foo と参照するのと同じ。

以上。難しくないでしょ?



181 名前:デフォルトの名無しさん mailto:sage [2009/05/14(木) 23:39:43 ]
>>180
簡潔。俺のような低能の長年の疑問が…。

182 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 03:27:15 ]
>>178
死ね


183 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 03:49:17 ]
f = lambda: f()
f()

184 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 06:36:46 ]
lambdaの中で使う変数のnamespaceってどうなってんの?

185 名前:デフォルトの名無しさん mailto:sage [2009/05/15(金) 22:35:09 ]
クロージャの話をしろということだろうか

186 名前:デフォルトの名無しさん mailto:sage [2009/05/16(土) 00:16:34 ]
n = []
foo = lambda: n.append("unko")
bar = lambda: n
bar()
foo()
bar()
n = 123
bar()

187 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 11:23:38 ]
各オブジェクトのメモリ使用量とか分かるモジュールありますか?


188 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 12:30:28 ]
>>187
guppy の heapy

でも、もし手元にある Python プログラムがメモリを食っているのなら、
d.hatena.ne.jp/methane/20090517/1242531011

189 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 13:03:14 ]
2009-05-17
■[Python] Pythonプログラムがメモリを大量に使っているとき
もし想定以上のメモリを Python プログラムが消費しているのであれば、ループの中で循環参照が生まれていることや、回収不能オブジェクト(循環参照なうえに __del__ メソッドが存在するためにgcがどこから循環を切っていいのか判らないオブジェクト)が存在しないかを疑う。

import gc
gc.set_debug(gc.DEBUG_LEAK)
gc.disable()
# 問題の処理
gc.collect() # 回収された循環参照や回収不能オブジェクトが表示される



190 名前:188 mailto:sage [2009/05/17(日) 20:09:57 ]
ありがとう。heapy試して見ます。




191 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 00:52:35 ]
Python3.0 changes に

> dict methods dict.keys(), dict.items() and dict.values() return "views" instead of lists.

とあるんですけど、views とはなんですか。iteratorとはまた違うんでしょうか。

192 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:11:26 ]
>>> d = {"abc":2, "def": 0}
>>> d.keys() == {"abc", "def"}
True
>>> "abc" in d.keys()
True
>>> len(d.keys())
2

193 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 03:59:30 ]
>>192
データベース用語じゃないかな。

デリヘルだったのが業態変更で覗き部屋に変わりました
みたいな感じ。



194 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 20:08:13 ]
docs.python.org/3.0/library/stdtypes.html#dictionary-view-objects

195 名前:デフォルトの名無しさん [2009/05/22(金) 19:20:38 ]
プログラミング初心者です。
ちっちゃいツールを作れたら…と勉強開始しました。
最初のうちって数字を抜き出したり、表示させたりばっかりですが
なんかプログラミングって感じないんですよね。
最終的にはそれなりなツールが作れるといいんですが…

ちなみにスライスとかインデックスを指定とかって実際のプログラミングで使ったりするんですか?


196 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:22:43 ]
つRails

197 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:45:51 ]
windowsな人はブビでもやるよろし

198 名前:デフォルトの名無しさん [2009/05/22(金) 20:53:42 ]
linuxも勉強中ですので、頑張って続けてみます。
ありがとうございました。失礼します。。。

199 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 21:06:59 ]
ひでw
お勉強スレでなんで違う言語に誘導すんだよw

200 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:12:27 ]
質問には答えようぜ

>195

> ちなみにスライスとかインデックスを指定とかって実際のプログラミングで
> 使ったりするんですか?

超使います。例えば掲示板ソフトを作ったとして、メッセージの195番っつた
ら、 messages[195] とか書けるように作るのが単純なやりかた。

(もちろん、凝ろうと思えばいくらでも凝れます)






201 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:16:40 ]
messages[194]がいいです

202 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:18:02 ]
>>200

203 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:22:01 ]
>メッセージの195番っつた
>ら、 messages[195] とか書けるように

ちょうウケる(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW

204 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:28:51 ]
”とか”って書いてるからいいじゃん
民主党みたいなことすんなや

205 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:34:20 ]
       ,..--‐‐‐‐‐‐‐‐---..  
     /::::ヽ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;)   
     |::::::::::/        ヽヽ  
    .|::::::::::ヽ ........    ..... |:|  
     |::::::::/     )  (.  .||  
    i⌒ヽ;;|.  -=・=‐  .‐・=-.|   党首辞任”とか”してみたりなんかしちゃったりして
    |.(    'ー-‐'  ヽ. ー' |  
    ヽ.      /(_,、_,)ヽ  |  
    ._|.    /  ___   .|  
  _/:|ヽ     ノエェェエ>  |  
  :::::::::::::ヽヽ     ー--‐  /  
  ::::::::::::::::ヽ \  ___/


206 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:35:41 ]
うわー
ところでmessages[0]はNone?空文字?

207 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:38:28 ]
好きな人の名前に決まっているだろ!

208 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:43:08 ]
messages[0]は0番だろ

209 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 22:47:40 ]
thebbsはたしか0番から始まってた…と思ったらthebbs閉鎖したのね。

210 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 23:52:03 ]
こうして今日もPythonの話題から脱線していくのだったとさ・・・



211 名前:デフォルトの名無しさん [2009/05/22(金) 23:59:16 ]
>>200
すごくわかり易かったです!
ありがとうございます。
基礎は重要ってことですね!
しっかり学びます。(みんなのPython改訂版使用)
図々しいですが、わからない事がありましたらまたお願いします。

212 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:27:13 ]
もしかしてPythonが初めてのプログラミングなのかしら・・・

213 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 07:42:04 ]
プログラミングに向いてない
別のことに時間使え

214 名前:200 mailto:sage [2009/05/23(土) 14:12:12 ]
こんなにウケるとは思わなかったwwww

>201
わかってんならいいよ。でもoff-by-oneバグには気をつけて。
>203
そんな面白い?テヘ(´▽`)
>205
鳩山って一応工学部出てんだけど、なんであんなにデムパなのかね‥‥‥
>206
Noneでも空文字でもいいけど、俺が作るならスレッドタイトル入れとくかなぁ。
>207
おかーちゃんの名前を入れておけ!
>211
がんばれ。


215 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 14:36:27 ]
>>212
俺、Pythonは2番目
最初に覚えたのはbashプログラミング

216 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 18:13:46 ]
Perlから鞍替え組しかいなかったころがなつかしい

217 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:27:53 ]
順番
Ruby->Pythonと
Python->Rubyのひとは
どっちが多いですか


218 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 21:34:02 ]
Ruby->Pythonの方が多そうな気がする。主に実行速度の面で。

219 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 00:08:33 ]
>>218
実行速度もそうですが
Rubyのプログラムの書き方が合わないっていう人はいないんですかね。
自分は関数定義(def)の時のブロックにbeginをつけない所と、
lambda式の記述の仕方がどうも合わなかったんですが…自分だけか…

220 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 00:45:43 ]
perlのせいでLLを毛嫌いしてたけど、
pythonが出てきてからは何にでも使うようになった。



221 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:07:55 ]
Perlを知ってからは何にでも使うようになったら
後で酷いことになった。

222 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:19:16 ]
>>219
俺は end が嫌だったのと、関数が名前空間違う部分が無理だったな。
Rubistにしては書くときに楽しいのかもしれんが、読みやすさは圧倒的に
Pythonの方が上。Pythonを知らない人にも読める executable pseudocode

223 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 04:16:30 ]
まじで!?
基本的にpython大好きだけど
ブロック終端記号がないのだけは好きになれない。

224 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:17:22 ]
Pascalのcase-endですらいらついたしRubyもbeginなしendだし
うっとうしいだけ

225 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:18:24 ]
インデント守ってないコードで終端記号なかったら訳分からんけど
Pythonの場合無くても問題にならないだろ

226 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 07:46:08 ]
Pythonで唯一面倒なのは、テストで途中でブロック追加したり取ったりする場合だな。
まぁ、エディタでブロックごとインデント付けたり消したりできればいいだけなんだけど。

227 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 07:49:30 ]
>>226
それはEmacsで楽に出来るから問題ないな。

228 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 07:53:11 ]
Emacsで、ある範囲を指定してインデントを増やす/減らすのはどうしたらいいの?
いまは C-x r t としてスペースを4つ指定しているんだけど、かっこわるすぎる

229 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 07:56:13 ]
>>228
リージョンを指定して、C-c > で右 C-c < で左インデント

230 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:50:00 ]
>>227
それvimでも簡単だよ!



231 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:25:48 ]
Pythonは読みやすいけどインデントが嫌だ

232 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:28:59 ]
>>231
読みやすさ > 個人の趣味

233 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:31:59 ]
>>232
書きやすさ>読みやすさ>個人の趣味

234 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:11:44 ]
Pythonは基本読みやすいですが、
書籍に載ってるプログラムで次のページにまたいでるとき、
インデントがどうなったのか分かりにくい時があるのがたまにきずですかね。


235 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:19:39 ]
>>233
読む方が多いからそれはないわ

236 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:30:08 ]
ぶっちゃけ、インデントは慣れればそれほど問題じゃないって感じだな。
おまえインデントブロック初めてか?みたいな人にはインパクトはかなりあるがw

結局俺の場合、何で書いてもだいたい同じような見た目になるしw
構造自体が全然違うってのは、関数系言語だな。

237 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 11:39:43 ]
頼むからインデントに最低スペース4つは使ってくれ

238 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:03:23 ]
GoogleAppEngineでは2つが標準みたいだよ

239 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:11:22 ]
そういう議論はこっちで

Pythonに見られるインデントによる制御構造の是非
pc12.2ch.net/test/read.cgi/tech/1169473442/l50

240 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 12:59:48 ]
ブロックのインデント表現は流行らないと思うわ
括弧とか改行とか、もっと積極的な表現の方が人間が認識しやすいもの



241 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:13:20 ]
>>237
それにこだわるひといるみたいだけど
なんか意味あるのか?

242 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:17:36 ]
>>240
気のせいです

243 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:24:52 ]
>>241
インデントが深くなったときパッと見で判別しづらいからとか?

244 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:36:09 ]
dict1 = {'a':1}
dict2 = {'b':2}

とあったときに、2つをマージした新しい辞書dict3を一発でつくるにはどうしたらいいですか。
dict3 = dict1.copy()
dict3.update(dict2)
とするしかないのでしょうか。
dict3 = dict1 + dict2
とかできませんか?


245 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 13:39:47 ]
>>244
D1.update(D2)

246 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:00:03 ]
>>241
それにこだわる人と同じ理由ではないと思うけど、個人的には読み難いし、綺麗じゃない
まぁおれがいつも4つ使ってるから慣れてないだけなのかもしれんけど。

247 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:34:01 ]
ところで皆さんインデントはスペース派?タブ派?
作者はスペースを推しているけど。

248 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:00:17 ]
タブ4。

249 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:18:22 ]
vimでSpace4

250 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:45:22 ]
スペース4だな



251 名前:デフォルトの名無しさん [2009/05/24(日) 16:03:13 ]
pythonだけでも十分?

252 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:04:21 ]
タブ2だな
みんなけっこう違うんだな

253 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:11:55 ]
スペース2にきまっとる

254 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 16:15:05 ]
pep8 では4スペースだから、新規に標準ライブラリにはいるコードは全部4スペース。

255 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 17:54:26 ]
1段目:Space6
2段目:Space5
3段目:Space4
4段目:Space3
5段目:Space2

256 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 19:39:22 ]
途中で改行したばあいの2行目以降の字下げも推奨値あるの?

257 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:40:31 ]
>>256
それ気になる。配列や辞書を途中で改行している場合、かっこを閉じる位置をどこにするか迷う。

258 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 20:47:58 ]
>>249
同じく

259 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 21:00:23 ]
辞書や配列の閉じカッコって、使ってるテキストエディタによって
微妙に位置が違ってなんか痒いところだよな。

260 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 22:09:09 ]
>>245
>D1.update(D2)
これだと D1 が変更されますよね。
やりたいのはD1もD2も変更せずに、かつD1とD2をマージした辞書を一発で新たに作りたいということなんですけど。



261 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:06:14 ]
むりぽ

262 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:09:38 ]
>>257
突然Cみたいになっちゃう俺。

263 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:19:11 ]
dict1 = {'a':1}
dict2 = {'b':2}
>>> dict([(k, dict1[k]) for k in dict1] + [(k, dict2[k]) for k in dict2])
{'a': 1, 'b': 2}

普通すぎてスマソ

264 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:25:14 ]
>>> dict(list(dict1.iteritems()) + list(dict2.iteritems()))
{'a': 1, 'b': 2}
あんまり変わらんか orz

265 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:34:48 ]
eval(",".join((str(dict1)[:-1],str(dict2)[1:])))
気持ち悪い

266 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:37:08 ]
>>264
その方式ならこうじゃね?
>>> d1 = {'a':1}
>>> d2 = {'b':2}
>>> dict(d1.items() + d2.items())
{'a': 1, 'b': 2}


267 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:47:42 ]
>>256
PEP8では「適切にインデントすること」としか書かれていないけど、サンプルコードを見ると
改行前の要素に合わせてるな。

foo(bar,
    baz)

268 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:05:27 ]
どっちかというとそういう関数作った方がキレイだな。

269 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:19:23 ]
setと違って+演算子を割り当てなかったのは、足す前の辞書の要素のうち足す辞書に
重複するキーがあった場合値を上書きしてしまうと言う動作が、+演算子の
「追加する」というイメージに合わなかったからだろうな。
あくまでも更新(update)であって、追加(add)じゃない。

clone() して update() するのが正解だと思うよ。別に面倒でも汚くもないし。

270 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:43:34 ]
d3 = d1 || d2



271 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:52:22 ]
>>270
Pythonにそんな演算子ねーよw
それに、 d3 = d1 | d2 にしても、やっぱりd1にある要素が「消える」ということを考えると
bitwise or とは違うよね。set ならそれでも意味通るけど。

272 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:26:27 ]
エディタのタブ記号のお世話になっているのでタブ4
※タブが推薦されない理由って何?

273 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:40:11 ]
環境によって深さが変わるし

274 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 01:43:48 ]
いまどきのエディタ使ってりゃ2でも4でもどうでもいいんだけどな
それより深くなり過ぎそうならその前に関数にするとかモジュールにするとか
なんか工夫するはずだからな
タブにこだわってる香具師とかインデントにこだわる香具師は
机上の空論
畳の水練

275 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:28:43 ]
Perlでも使ってろ

276 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:38:28 ]
>※タブが推薦されない理由って何?
関数の括弧でそろえたいときとかにスペースと混在するしか無くて、
そうすると環境によって見た目がめちゃくちゃになることかなあ。

どの環境もタブ=スペース4つ分とかで統一してくれればいいのに。
何でタブ=スペース8つ&スペース混在をデフォルト設定にしたんだ。>アレ



277 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 02:42:37 ]
アレって何だ?IBM?ゼロックス?

278 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 07:47:22 ]
おひざもとのコーディングルールが 8タブ& 4インデントのアレとか?

279 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 17:02:18 ]
昔はタブ8桁だったからしょうがないね。
スペースだけにするのが一番問題無い。

280 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:14:44 ]
それ、別に昔の話でもない
端末(エミュレータ)やウェブブラウザなど、多くのソフトウェアは今でも
普通は8タブのはずだよ



281 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:46:04 ]
TAB
八画

282 名前:デフォルトの名無しさん [2009/05/25(月) 22:23:14 ]
みんなのPythonすごく読みやすい。超面白いんですけど、毎日ガンガン読んでます。


283 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:40:47 ]
日本語でおk

284 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:42:07 ]
みんなのPythonすごく読みやすい。超面白いんですので、毎日ガンガン読んでます。

285 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:44:01 ]
ガンガンってまだあったのか

286 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:46:48 ]
みんなのPythonすごく読みやすい。超面白いんですので、毎日ボンボン読んでます。

287 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 22:57:50 ]
殴って人が殺せそうな厚さのコミック雑誌名列挙禁止なw
先月付けの号でガンガン超えてたのあったな…。1000Pとかマジ基地

288 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:29:13 ]
みんなのPythonすごく読みやすい。超面白いんですので、毎日京極夏彦読んでます。

289 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 09:04:46 ]
みんなのPythonすごく読みやすい。超面白いんですので、毎日時刻表読んでます。

290 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 12:05:15 ]
誰かが面白いこと言うまで続くの?



291 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:09:10 ]
ちんこ

292 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:31:11 ]
乳輪大納言

293 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:44:50 ]
久しぶりに7巻読んでみた

294 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 16:48:33 ]
またruby厨の荒らしが来てるのか

295 名前:デフォルトの名無しさん [2009/05/26(火) 18:01:16 ]
デコレータって気持ち悪いね・・・


296 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 22:13:54 ]
むしろ気持ちいい

297 名前:デフォルトの名無しさん mailto:sage [2009/05/26(火) 23:44:16 ]
デコレータイイ
メタクラスヘン

298 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 01:08:06 ]
>>244
dict1 = {'a': 1}
dict2 = {'b': 2}
dict3 = dict(dict1, **dict2)
こんなのどう?


299 名前:デフォルトの名無しさん [2009/05/27(水) 03:31:21 ]
dict3 = dict(**dict1, **dict2)

300 名前:デフォルトの名無しさん [2009/05/27(水) 08:55:08 ]
>>299
勉強しなおしてこい




301 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 09:27:34 ]
dict3 = dict(dict1.items() + dict2.items())
>>298
ナイス。なるほどね。
>>299
動かん。

調べたらstackoverflowにあった。
stackoverflow.com/questions/38987/how-can-i-merge-two-python-dictionaries-as-a-single-expression

298がいいみたいね。

302 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 16:54:40 ]
>>301
>dict3 = dict(dict1.items() + dict2.items())
やりたいことを明示的に示しているという意味ではこっちの方が分かりやすいと思うけどな。
効率はおいとくとして。

303 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:22:25 ]
>>302
それは py3k ではエラーになるという面で >>298 の勝ち。

304 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 17:55:41 ]
結局copyしてupdateの方が明示的のような。

305 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:14:39 ]
2回updateでいいじゃんよ
1行で済ませようとするとろくなことにならんぞ

306 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:45:27 ]
dict3 = dict().update(dict1).update(dict2)

307 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 18:47:51 ]
あら素敵

308 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:14:51 ]
頭良いな。

309 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:33:51 ]
>>306
update() は inplaceに処理する関数でupdate後のdictを返す訳じゃないから
それじゃダメ。

dict3 = dict1.copy()
dict3.update(dict2)

素直だし読みやすいし何も問題なし。

310 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:02:44 ]
Pythonはsortにはsorted、reverseにはreversedみたいな値を返すタイプがもれなくあるから
updateみたいにinplaceのみで値を返す選択肢がないメソッドは意外



311 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:38:00 ]
青年よ、PEPを書け

312 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 23:59:45 ]
彼は書いた。
日本語で。

313 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:33:19 ]
>>309
Java みたいでやだ

314 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:35:33 ]
dict object に updated メソッドを追加するにはどうすればよいですか?

315 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:39:16 ]
適当にdictを継承すれば

316 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 00:53:15 ]
これでいいだろ
なんでメソッドにしたいんだ

def marged(*dicts):
    marged_dict = {}
    for d in dicts:
         marged_dict.update(d)
    return marged_dict

317 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 01:13:14 ]
mergeな

318 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 02:31:58 ]
>>316
ネ申!!!

319 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 04:30:15 ]
辞書をマルゲッドする方法を教えてください

320 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 09:37:15 ]
>>303
それは盲点だった。
なら>>304だな。



321 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 11:20:47 ]
>>313
複雑な式よりもシンプルな文を選ぶと言う点では、Pythonの文化は
Javaに近いと思うよ。
もちろんスクリプト言語の利点や動的型付けの利点があるから、
Javaよりも圧倒的にアジャイルに開発できるけど。

322 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 12:39:27 ]
なんでイテレータどうしを足したらだめなんだろう?
itertools.chainの動作をしてくれれば良いだけだと思うんだけど。

323 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 16:15:24 ]
list ならそれでいいんじゃね?

324 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:52:36 ]
今更だが、Pythonってインデントによるブロック表現とかリスト内包とか
Miranda譲りの部分があるんだな。

325 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 11:13:40 ]
ミランダつーか関数型言語方面からの影響ね。

326 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 11:16:41 ]
Miranda以外にインデントでブロック表現をする関数型言語あったっけ?

327 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 11:33:35 ]
Cyan

328 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 11:46:30 ]
>>327
初めて聞いた言語だな。
ググってもウェブサイトが出てこないが、相当マイナーな言語なのか?

329 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 12:05:43 ]
インデント > Haskell
Pythonの内包表記はHaskell譲り。

330 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 12:08:09 ]
MirandaもHaskellもMLからの影響だな



331 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 12:15:42 ]
>>330
そう。系譜的にはML->Miranda->Haskell。
ただしリスト内包の導入ははMirandaから。
だから、Pythonのインデントやリスト内包はMiranda譲りと言うべき所だな。

332 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 12:52:03 ]
<丶`∀´>インデントと内包表記の起源は韓国ニダ!

333 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 16:09:04 ]
PythonのインデントはABCからだろ

334 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:32:50 ]
本人がABCの仕事してただろが

335 名前:デフォルトの名無しさん [2009/05/31(日) 14:22:28 ]
あの〜すごくレベルの低い話で申し訳ありませんが
みんなのPython改訂版で勉強してます。
for文でちょっとわからないところがあります。
お持ちの方がいましたら(p,105上部のコードです。)

>>>rssitem = {"title":u"Pythonを勉強中",
... "link":"host.to",
... "dc:data":"2006-05-16",
... "comment":5}
>>>validattrs = ["title","link","dc:data"]
>>>rsskeys = rssitem.key()
>>>for key in rssitem.key()
... if key not in validattrs:
... del rssitem[key]
...
>>>rssitem.key()
['title','link','dc:data']



del文のところの意味がわかりません。
なんでこの文で'comment'だけが消されるのか…
低レベルで申し訳ありませんが、宜しくお願い致します。

336 名前:デフォルトの名無しさん [2009/05/31(日) 14:23:44 ]
※すみません、インデントがなくなっちゃってますが(汗

337 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:35:38 ]
>>335
いやーんなコードだな・・・
それはともかくrssitem.keys()とvalidattrsの出力を比べてみたらいいかも

338 名前:デフォルトの名無しさん [2009/05/31(日) 14:37:51 ]
rsskeys = rssitem.key()でエラーになるんですけど、どういうことですかね?

339 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:39:31 ]
keys()が正しいから

340 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:42:48 ]
まさか、if key not in validattrs: の意味が分からないのか?



341 名前:デフォルトの名無しさん [2009/05/31(日) 14:43:40 ]
>>339 本当ですね、ありがとうございます。

rssitem.keys()とvalidattrsの内容はわかります。
やろうとしていることはわかるんですが…
(rsskeys = rssitem.key()とvalidattrsで合致していない項目を削除)
del rssitem[key]ってどういうことですか

342 名前:デフォルトの名無しさん [2009/05/31(日) 14:45:17 ]
>>340
そこはわかるんですけど(汗
その次が…

343 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:48:42 ]
www.python.jp/doc/release/tut/node7.html

5.2 del 文

ぐぐればすぐ出てくるのに・・・

344 名前:デフォルトの名無しさん [2009/05/31(日) 14:49:54 ]
del文は■■■.del[]で引数にはインデント番号や辞書で言うキーを入れると思いますが、
上記のコードでは[key]となっています。keyってキーはなかったので
この文で、「comment」が消えた意味がわかりません。
私変な質問してますかね?(滝汗

345 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:52:28 ]
>>344
おまいマジで言ってるのかよ
keyは変数だろ?中身に何が入ってるかprintしてみろよ

346 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:52:41 ]
とりあえずfor〜in〜を勉強し直すと良いと思うよ

347 名前:デフォルトの名無しさん [2009/05/31(日) 14:53:16 ]
>>343
ありがとうございます。
del rssitem[key]のような使い方がないんですよ(涙
引数の[key]ってどこからきたのーーーーー?

348 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 14:54:26 ]
>>347
for key in rssitem.keys(): を100回声に出して読んでみれ

349 名前:デフォルトの名無しさん [2009/05/31(日) 14:56:37 ]
あ、…解決しました。
keyは繰り返し変数でした。
お時間をとらせてしましてすいません。勉強になりました。
大変お騒がせ致しました。
ありがとうございました。

350 名前:デフォルトの名無しさん [2009/05/31(日) 15:05:57 ]
あ、最後にひとついいでしょうか
rsskeysは、rssitemの全てのキー
つまりkeyも同様にrssitemの全てのキーの繰り返し  ですよね?

del文で、rssitem[key]をやると、全てのキーが消えてしまうように思えますが…




351 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:59:50 ]
>>350
for の次の行で key を print してみろ。

352 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:41:29 ]
配列に対してインデックスでアクセスしないことで
操作イメージが掴みにくくなることもあるんだな

いい勉強になった

353 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:51:05 ]
漏れもPerlのforeachを理解するのに丸一日かかったことがある

いい思い出だ

354 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:22:00 ]
痛レータ

355 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:36:36 ]
>>350

>>342

プログラム以前に、国語とか算数とかからやり直してくれよ。

356 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:50:55 ]
答えたくないなら初心者スレに誘導するなりしろよ。
pc12.2ch.net/test/read.cgi/tech/1243160751/

あとカルシウム取れよ

357 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:58:23 ]
と思った俺が悪かった。
彼はどこに誘導してやればいいのだろう・・・

358 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:14:20 ]
>>335
みんなのPythonってサンプルソースでもこんなに誤字脱字だらけなの?

359 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:16:54 ]
# 元々のデータ(型:ディクショナリ)
rssitem = {"title":u"Pythonを勉強中",
"link":"host.to",
"dc:data":"2006-05-16",
"comment":5}

# 「元々のデータ」の中で残したいキーの名前が入ったリスト
validattrs = ["title","link","dc:data"]

# 「元々のデータ」のキーを繰り返し読み込む(変数keyに格納)
for key in rssitem.keys():
# もし、keyが残したいキーの名前が入ったリストに含まれて"いなければ"
# ディクショナリ中のrssitem[key]は消したいのだからdel文で消す
if key not in validattrs:
del rssitem[key]


これで解決します?
これで解決しないのなら、質問する前に本を一から読み直す事をおすすめします。

あと、ぬいぐるみに質問したい事を先に話してみてから、
質問にくるといいかもしれません。
米国のどこかの大学は、そうすることで、
相談室にくる生徒の数を5割近く減らせたそうです(自己解決したということ)。

360 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:25:49 ]
能力があっても
人を傷つけるのに使うってのがアイタタタタ



361 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:38:55 ]
誤植を抜きにしても
このコードで勉強する初心者かわいそす

362 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:46:37 ]
こんな簡単なコードで悩むやつはプログラミング向いてないから他のことやったほうがいいよね。
人生みじかいんだから自分の得意な分野でがんばったほうがいいよ。

363 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:51:29 ]
えっと、
スレ違いですので
こちらへどうぞ
pc12.2ch.net/test/read.cgi/tech/1243160751

364 名前:デフォルトの名無しさん [2009/05/31(日) 20:59:22 ]
>>359
わかりました。ありがとうございます。
del rssitem[key]ちょっとわかり難かったですが、359さんの説明でわかりました。

365 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 09:03:16 ]
>>359
GJ
よくやった

366 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 10:05:56 ]
みんPyを見てみたけど、リストにはちゃんと説明書きがついてるのな。
日曜にやることがない奴らが盛り上がるネタとしては最適だったかもな(爆笑)。

367 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 10:13:38 ]
釣りだったってこと?

368 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 10:20:59 ]
釣りかどうかは知らないけど
カルシウム足りなそうな奴は友達いないな確実に(wwWwwWwwWW

369 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 11:05:03 ]
理由も示さず誹謗中傷してる人がいるけど、病院に行くことをオヌヌメしる。分裂症の疑いが強い。
分裂症患者は普通の会話ができないので、日曜に時間がたっぷりあるのももっともなわけだが。

370 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 11:32:19 ]
ちょっとまて
 そのかきこみは
   あさひかも



371 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 12:25:25 ]
>>369
キチガイには正しいモノが間違って見えるらしいよ

372 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:17:40 ]
>>370 ウヨ乙。巣に帰ってね。

373 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 15:18:01 ]
またruby厨の荒らしですか

374 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:09:23 ]
なんでこんな突っ込みどころのない簡単なコードで盛り上がってるんだ?
釣りってかんじでもなさそうだったけど。

375 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:33:57 ]
rssitem = {"title":u"Pythonを勉強中",
 "link":"host.to",
 "dc:data":"2006-05-16",
 "comment":5}
for key in rssitem.keys()
 del rssitem[key]

これを実行したとき
全keyは確実に消えますか?
消す順番によってはいくつかのkeyが残る気がして不安です
またrssitem自体は消えますか?

376 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:35:41 ]
rssitemって命名からして嫌な悪寒がしますた

377 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:36:26 ]
rssitem.clear() やっときゃ完璧。

378 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:38:45 ]
RSS処理するならfeedparserだろ

379 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 22:59:22 ]
次の患者さんどうぞ。

380 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 23:29:42 ]
>>374
詳細は>>375

>>375
実際にコードを書いて試したらいいと思いますよ。
荒らしたくてしてるんならこのまま質問攻めでいいですけどね。
(そうなら心置きなくあぼーんできますしw)

> 消す順番によって…
おそらく、ディクショナリのところに書いてあると思います。
ディクショナリは格納する時に、プログラムに書いた通りの順番に
保存する事を保証してくれません(と本に書いてあるはずです)。
それさえ分かっていれば、「順番によって…」というのはないと分かるでしょう。

> rssitem自体は消えますか?
おそらく、これもリストやディクショナリの所で書いてあると思います。
例えば
toy_box = {u"ぬいぐるみ": 2, u"プラモデル": 3, u"ボール": 5}
for toy in toy_box.keys():
del toy_box[toy]
とすると、おもちゃ箱(toy_box)までなくなる事になります。
おもちゃ箱は空になるだけですよね。
試せばtoy_box = {} になると思いますよ。
(ここで、ぬいぐるみは2個あるので1個になることはありますか?とかは愚問です。)



381 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 02:52:52 ]
先生、次の患者さんです。

ttp://d.hatena.ne.jp/perezvon/20090601/1243872974

382 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 03:49:09 ]
2chは宣伝禁止ですよ

383 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 10:22:41 ]
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /


384 名前:デフォルトの名無しさん [2009/06/02(火) 11:02:01 ]
pyqt4.5の開発版は既に3.0に対応してるのか
もしかして今後主流になるのか?

385 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 12:11:17 ]
>>384
pyqt4.5はもうそろそろリリースされそうだね。
でも、Py3k が主流になるのにはまだまだ時間がかかるよ。
Python 3.0 が出た後にも py3k には後方互換性を失う変更が入ってくるし。

386 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 15:23:58 ]
>>381
スクリプトエロゴトニクス通信の人の香ばしさは、頭が良すぎることから来てるのかな?
病院で直るタイプの病気ではなさそうだ(w

387 名前:デフォルトの名無しさん [2009/06/02(火) 16:46:04 ]
初歩的な質問で申し訳ありません。
.pyのついたファイルをウィンドウズで実行したいのですが、どのように設定をしたらいいでしょうか?

python-3.0.1をインストールしてみたのですが、どうしたらいいのかイマイチよくわかりません;;

388 名前:デフォルトの名無しさん [2009/06/02(火) 16:48:46 ]
まずPythonをアンインストールしろ

389 名前:デフォルトの名無しさん [2009/06/02(火) 17:02:05 ]
超初心者スレのほうで聞いてみることにします。
ご迷惑おかけしました;;

390 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 18:32:42 ]
            /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /




391 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:32:33 ]
>> 387
…釣りじゃなかったのか…

392 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 22:34:01 ]
アンインストールしろも嘘じゃなかったんだがな!
半分だけど

393 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 00:44:01 ]
gtkモジュールの初期化をスキップする方法はないでしょうか?
gtk.gdk.pixbufを使いたく、gtkそのものは不要なのですが
普通にgtkをimportすると初期化中にXサーバとの接続までやってくれちゃうらしく
/usr/local/lib/python2.5/site-packages/gtk-2.0/gtk/__init__.py:72: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
という警告が出力されます。
それでも動くのですが、不要な警告が毎回出るというのも気分がよくありません。

394 名前:デフォルトの名無しさん [2009/06/04(木) 02:16:15 ]
except

395 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 02:31:25 ]
>>389
どこで聞いても同じだろ
アホかお前

396 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 02:35:31 ]
ruby厨の荒らしがいるのはここだけです

397 名前:デフォルトの名無しさん [2009/06/04(木) 16:27:29 ]
python の help(..) 結果の文字列をコンソールではなく、str 文字列に簡便に取り出す
方法がないでしょうか。

--------------

python の help(..) 関数は、文字列を返すのではなく、コンソールに直接出力していま
す。でも、その文字列が多すぎると読みきれません。例えば help(scipy) などとすると、
二万行を超える結果が返ってきます。

この多すぎる文字列を正規表現で絞り込もうとしています。自前の help 関数を作り、組
み込みの help が返す結果の文字列から正規表現にマッチする行を抜き出して表示しよう
と思います。

でも help(..) 関数がコンソールに直接出力しているので困っています。pydoc のソース
も追ったのですが、help(..) 結果を str に変更する上手い手が見つかりません。

上手い手段を御存知の方、教えてもらえますでしょうか。ヒントだけでも助かります


398 名前:デフォルトの名無しさん mailto:sage [2009/06/04(木) 16:30:07 ]
>>397
参考になるでしょうか。
ttp://www.python.jp/doc/release/lib/module-pydoc.html






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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