Pythonのお勉強 Part21

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Python オフィシャルサイト
http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
FrontPage - Pythonのお勉強
http://python.rdy.jp/
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1187317688/

◆関連スレッド

Microsoft IronPython 1.0
http://pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

◆関連サイト

Python ドキュメント
http://www.python.jp/doc/release/
Index of Python Enhancement Proposals (PEPs)
http://www.python.org/dev/peps/
参考サイト - Pythonのお勉強
http://python.rdy.jp/wiki.cgi?page=%BB%B2%B9%CD%A5%B5%A5%A4%A5%C8

以上
2デフォルトの名無しさん:2007/10/20(土) 21:57:36
やっと21世紀か
3デフォルトの名無しさん:2007/10/21(日) 00:01:48
1スレ消費に100年使うのか?
4デフォルトの名無しさん:2007/10/21(日) 00:20:06
と言う以前にこのスレA.D.1から始まったのか
5デフォルトの名無しさん:2007/10/21(日) 07:17:24
                    _______
               , -‐' ´  __, -―‐ 、 r‐,―` ‐、
               /   , - '     ̄/!\ ̄  \_
            /   /、!∠ _, - ´ ̄ ̄ ̄ ̄`´ヽー、_フ
          _/   / /!`イ   /         ヽ \
        / \! //  ,/     /           |   ヽ
           ̄`<,ト/ _、i/      /       / ,./ / /l!   ト、
            / ,) /!!   , /    / / / / , .!   ! !
            ! l!   |     | f --,ノ_-_,,∠ , /// / ∧   lノ
            li    l     | ! ̄、-..==、- /´//,< | ! l'
             //li    !    |リ    r:ッr/    ノメ、._`j / /
          / //!   \,  ! /// `ー'      トジ/ / /
          / / ! liヽ│/ lト、 \            ` j/,イ
          / / l li ‐┼‐ li \`ー`       __ ´ .ィイ .|   おっ、Pythonスレですぅ。
         !/   |イ!/│ヽ.l! | \       'ー' , イ   |  |
          !! / ∧!    liノ!   `  、__, イ_ /:| │ |
          i' /:| ! リ   / ` 、_,. -―'´ ̄V /ヽ/ ::| │ |
         //:::| j:/   リ三f::::f三ヽ   / ,,/ヽr、!  |  |
        //rーfく   /!/イ!!l::\ \ヽ!  / r ' / フ |
6デフォルトの名無しさん:2007/10/22(月) 02:40:00
.
7デフォルトの名無しさん:2007/10/22(月) 09:34:28
>6
ed?
8デフォルトの名無しさん:2007/10/22(月) 10:52:05
ttp://golf.shinh.org/p.rb?Look+and+say
誰かカッコヨク解いてくれまいか。
9デフォルトの名無しさん:2007/10/22(月) 11:58:23
ファイルから1行読み込んで正規表現にマッチしたものを
リストにしたいんですが

[ url_re.match(line).group(1) for line in some_file if url_re.match(line)]
もっとシンプルに書く方法は無いでしょうか?
10デフォルトの名無しさん:2007/10/22(月) 12:02:32
わざわざリスト内包で書く意味あるんですか?w
for 展開したらもっとシンプルだと思う。
11デフォルトの名無しさん:2007/10/22(月) 12:11:11
ruby使え
(ruby | perl)は正規表現を明示的にコンパイルする必要ない
12デフォルトの名無しさん:2007/10/22(月) 12:23:10
>>11
>(ruby | perl)は正規表現を明示的にコンパイルする必要ない

それはオブジェクト指向言語として正しいのか?
13デフォルトの名無しさん:2007/10/22(月) 12:37:38
Perlの正規表現はどう考えてもバッドノウハウ
手軽であるが故に,あらゆるテキストのパースを正規表現で行おうとする力学が働く
結果として,再利用性が低いブラックボックスなコードが量産される
そのバッドノウハウを受け継いじゃったのがRubyというわけだなwwwwwwww
14デフォルトの名無しさん:2007/10/22(月) 12:47:37
>>9
その場合なら一気読みしちゃうとか
import re
url_re = re.compile(url_re_ptn)
html = open(some_file_name).read()
url_re.findall(html)

>>12
Rubyはリテラルで /abc/ みたいに生成もできるし
r = Regexp.compile('abc') みたいにもできる
ただ面倒だから誰も使わないだけ
Perlはそもそもオブジェクト指向言語を標榜していないはず
15デフォルトの名無しさん:2007/10/22(月) 13:11:27
>>10-14
ありがとうございます
16デフォルトの名無しさん:2007/10/22(月) 13:21:30
言語仕様なんだからバッドノウハウというのはおかしいんじゃないかな。
ま、釣りなんだろうけど、それにしても間違ってるので。
17OSは何を使ってますか?:2007/10/22(月) 13:30:37
FreeBSDにしようかと思ったんだけど結局Fedora3に
した俺が質問です。みんなOSは何を使ってますか?
18デフォルトの名無しさん:2007/10/22(月) 14:56:28
みかんOSに見えた…
19デフォルトの名無しさん:2007/10/22(月) 15:31:36
>>16
逆に考えるんだ
言語仕様にバッドノウハウが組み込まれていると考えるんだ
20デフォルトの名無しさん:2007/10/22(月) 15:53:56
おまえ頭いいな
21デフォルトの名無しさん:2007/10/22(月) 15:56:13
思う存分やってこい!

【Perl,PHP】LLバトルロワイヤル【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1188997302/

Python厨とRuby厨が仲直りするスレッド
http://pc11.2ch.net/test/read.cgi/tech/1099804004/
22デフォルトの名無しさん:2007/10/22(月) 15:59:16
>>21
そうじゃない
23デフォルトの名無しさん:2007/10/22(月) 16:27:35
>>21
稚拙
24デフォルトの名無しさん:2007/10/22(月) 17:44:40
Py.py
25デフォルトの名無しさん:2007/10/22(月) 18:15:37
>>8
ダサクなら解けた

import sys

def sameval_in_list(lst):
    if len(lst) == 0: yield [ str(0),str(0) ]
    n, c = 0, 1
    for cnt in xrange(0,len(lst)):
        if len(lst)-1 == n or lst[n] != lst[n+1]:
            yield [ lst[n], str(c) ]
            c = 1
        else:
            c += 1
        n += 1

def lookandsay(ilist):
    res = []
    for line in ilist:
        for exl in sameval_in_list(line):
            res.extend(exl)
    return res

sl = [x.strip() for x in sys.stdin]

for c in xrange(0, 12):
    print("".join(sl))
    sl = ["".join(lookandsay(sl))]
26デフォルトの名無しさん:2007/10/22(月) 18:39:29
>>17
FreeBSD。
27デフォルトの名無しさん:2007/10/22(月) 19:35:35
俺はうぶんつ
28デフォルトの名無しさん:2007/10/22(月) 19:56:54
俺はAmiga
29デフォルトの名無しさん:2007/10/22(月) 20:46:22
BeOS
30デフォルトの名無しさん:2007/10/22(月) 23:01:56
OS/2 Warp
31デフォルトの名無しさん:2007/10/22(月) 23:07:06
MS Windows 1.0
32デフォルトの名無しさん:2007/10/22(月) 23:40:00
MonaOS
33デフォルトの名無しさん:2007/10/22(月) 23:48:25
正規表現が外部モジュールなのは個人的にがっかりしたな。
願望としては予約語の少ないperlみたいのが欲しかった
34デフォルトの名無しさん:2007/10/23(火) 00:01:05
つうか正規表現が言語に組み込まれてるのってはっきりいってすごく汚いと思う
35デフォルトの名無しさん:2007/10/23(火) 00:28:07
正規表現なんて俺は使わないからどうでもいいよ
36デフォルトの名無しさん:2007/10/23(火) 00:36:41
>>33
PHP使えよ。
37デフォルトの名無しさん:2007/10/23(火) 01:36:17
正規表現はどんなときでも使う訳じゃないから言語コアからは外したってGuidoが言ってた(ソース失念)
38デフォルトの名無しさん:2007/10/23(火) 01:38:13
今後しばらくは大規模言語で
正規表現を組み込んでいるのなんて出ないだろ。
39デフォルトの名無しさん:2007/10/23(火) 02:09:51
そして相変わらずPerlの天下は続く・・・
40デフォルトの名無しさん:2007/10/23(火) 02:19:38
>>25
を参考にしてやってみたよ。

v = raw_input("")
for t in [0] * 12:
 print v
 s = v + "."
 v = ""
 h = ""
 d = 0
 for c in s:
  if d and c != h:
   v += str(d) + h
   d = 0
  h = c
  d += 1

TsXcって名前で入れといた。
難しい。
41デフォルトの名無しさん:2007/10/23(火) 03:15:27
>>8
やってみたけど100が切れない
42デフォルトの名無しさん:2007/10/23(火) 09:45:51
155。これが精一杯。

g=lambda s,i=0:len(s)==1 and str(i+1)+s[0] or s[0]==s[1] and g(s[1:],i+1) or str(i+1)+s[0]+g(s[1:],0)
a=raw_input("")
for i in range(12):
 print a
 a=g(a)
43デフォルトの名無しさん:2007/10/23(火) 09:55:46
短いなぁ。
ちなみに or や and 前の半スペは削れるよ。
44デフォルトの名無しさん:2007/10/23(火) 09:57:58
>>39
日本国内だけだろ。
海外の開発者はみんな「Perlはもういやだ」と言っている。
45デフォルトの名無しさん:2007/10/23(火) 10:05:11
>>40
内容変えずにゴルフの定番的に短くしてみた。

v=raw_input("")
for t in [0]*12:
 print v;s=v+".";v,h,d="","",0
 for c in s:
  if d and c!=h:
   v+=str(d)+h;d=0
  h=c;d+=1
46デフォルトの名無しさん:2007/10/23(火) 10:27:04
>>45
もう一発

v=raw_input()
for t in[0]*12:
 print v;s=v+".";v=h="";d=0
 for c in s:
  if d and c!=h:v+=str(d)+h;d=0
  h=c;d+=1
47デフォルトの名無しさん:2007/10/23(火) 10:29:27
>>43
あぁー、俺はまた邪悪な技を覚えてしまったw
1andなんて書き方だとIDLEで色がつかない

ところでルール見るとホワイトスペースは計上しないらしいので、これで131となりました。
g=lambda s,i=0: len(s)==1and str(i+1)+s[0]or s[0]==s[1]and g(s[1:],i+1)or str(i+1)+s[0]+g(s[1:])
a=raw_input()
for i in range(12):
 print a
 a=g(a)
48デフォルトの名無しさん:2007/10/23(火) 10:39:26
100切るにはアルゴリズム変える必要があるかもね。
それにしても python でゴルフって python の思想に反すること甚だしいなw
49デフォルトの名無しさん:2007/10/23(火) 15:07:10
でも課題によってはPやRより短く書けるゴルファーが居るんだよな
50デフォルトの名無しさん:2007/10/23(火) 17:14:30
最近お気に入りなzipでやってみた100くらい
c=raw_input()
for n in [1]*12:
 print c;t,c=c,''
 for a,b in zip(t,t[1:]+'.'): n,c=a!=b and (1,c+str(n)+a) or (n+1,c)

forの中身をifにすれば92くらい?
c=raw_input()
for n in [1]*12:
 print c;t,c=c,''
 for a,b in zip(t,t[1:]+'.'):
  if a!=b: c+=str(n)+a;n=0
  n+=1
51デフォルトの名無しさん:2007/10/23(火) 21:07:05
別解。暗黒面に落ちようとしたけど、どうも落ちきれない感じ。

import re;a="0123456789 ";v=raw_input()
for t in a:print v;v="".join(a[len(u)]+u[0]for u in re.findall("+|".join(a),v))
52デフォルトの名無しさん:2007/10/24(水) 10:31:40
おお、一瞬理解不能だった。
53デフォルトの名無しさん:2007/10/24(水) 10:49:49
ホワイトスペースは数えないんだから無理に一行にしなくても…見づらいし…
セミコロンは数えるからむしろ増えているw
54デフォルトの名無しさん:2007/10/24(水) 11:02:40
ホワイトスペース、数えられてるよ。
55デフォルトの名無しさん:2007/10/24(水) 14:41:10
>>51
2007-10-16 - lambda {|diary| lambda { diary += 1 } }.call(hatena)
http://d.hatena.ne.jp/winebarrel/20071016

joinの使い方が思いつかなかったな…
ちょっと理解するのに手間取ったw
56デフォルトの名無しさん:2007/10/24(水) 15:08:00
>>51
a='0123456789 ' がrangeの代わりとstr()の代わりを兼ねてるのに感心した。
57デフォルトの名無しさん:2007/10/24(水) 20:02:07
【2画面ファイラ】 内骨格 Part1 【Python拡張】
http://pc11.2ch.net/test/read.cgi/software/1193166124/
58デフォルトの名無しさん:2007/10/24(水) 20:46:50
>>57
まるで安価で付けたような名前だな
59デフォルトの名無しさん:2007/10/24(水) 20:52:05
なるほど、安価でつけたのか
納得した
60デフォルトの名無しさん:2007/10/25(木) 03:38:10
>>57
いまさらAFXそっくりでWindowsしか動かないファイラーを出しても使わないなあ。
Windows以外でも動くようだったら使いたいけど。
61デフォルトの名無しさん:2007/10/25(木) 06:03:48
JythonとCPythonの違いをまとめたものってありませんか?
62デフォルトの名無しさん:2007/10/25(木) 14:40:11
>>57
まるでAFXだ。DYNA派なのでスルー。

>>61
基本となるバージョンと、javaバインディングのアリナシくらいし違わないでしょ。
じゃないと、意味ないし。。。

ていうか、Jython ってあまり開発してないっぽいよね。今2.2だっけ
63デフォルトの名無しさん:2007/10/25(木) 20:10:01
地味にアップグレードはしてるよ。ペースはたしかに遅いけどね。
64デフォルトの名無しさん:2007/10/25(木) 22:53:09
>>62
今は、2.2.1。2.2は正式バージョンをリリースしたのに、
日本語がまったく使えなかったんだよなwww
次は2.5で 、Django Pylons TurboGears Twistedを動くようにするらしい。
65デフォルトの名無しさん:2007/10/26(金) 20:23:53
.pycってファイルができないんですけど変わったんですか?
66デフォルトの名無しさん:2007/10/26(金) 20:44:14
importしてもできない?
67デフォルトの名無しさん:2007/10/26(金) 22:25:42
>66
サンクスできました。
はじぱいには普通に実行すればできる、と書いてあったのでとまどいました。
68デフォルトの名無しさん:2007/10/26(金) 22:43:53
>>67
普通に実行してもpycはできないよ。
69デフォルトの名無しさん:2007/10/26(金) 22:47:18
初めてのPythonには、トップレベルのファイルは
実行してもpycを生成しないってきっちり書いてあったと思うぞ
そういえば海の向こうじゃ新版出るんだよね
70デフォルトの名無しさん:2007/10/26(金) 23:40:34
Python初心者(他の言語は経験あり)です。
MySQLdbを使ってデータベース処理をするプログラムを練習がてらに組んでいるのですが、
データを取り出すときに、どうもよくわからない文字コードになってしまいます。

具体的には、utf-8をMySQLに叩き込むのはうまくいき、ターミナルで確認しても文字化けは既知のやつ(utf-8)が出るだけです。
おそらくデータベース内に登録されているデータには問題はなさそうです。
ちなみに、その文字化けはファイルに書き出すと問題がないからターミナルの都合みたいです。

ですが、select文でutf-8のデータをとりだすと、
asciiをunicodeに出来ませんみたいなエラーが出ます。

unicode()でエンコーディングしてみても、状況は何もかわらず、このunicode()の文でエラーが出てしまいます。

ファイル処理の場合は読み出す時にエンコーディングを指定する方法は知っているのですが、
MySQLからデータを取り出す時は同じ方法が使えません。
何かいい解決方法はあるでしょうか?

よろしくお願いします。
71デフォルトの名無しさん:2007/10/27(土) 00:30:58
環境なり再現コード貼ったらいいと思うよ
72デフォルトの名無しさん:2007/10/27(土) 01:09:26
すいません。
環境は
MacOSX
Python2.5
MySQL4.0
コネクタは最新版です(昨日落としたので)

即興で作ったコードでちょっと汚いのですが、

#!/usr/bin/env python
import MySQLdb
import sys
import codecs

db_name = "nounindex"
user_name = "root"
mypasswd = ""
writePage = "/Users/yuichi/Desktop/dbOutput.txt"
charCode = "utf-8"

o = codecs.open(writePage,"w",charCode)
sys.stdout = codecs.getwriter(charCode)(sys.stdout)
print "getConnection"
con = MySQLdb.connect(db=db_name, #host="localhost", port=3306,
user=user_name, passwd=mypasswd)

73デフォルトの名無しさん:2007/10/27(土) 01:09:57
cur = con.cursor()
s = "SELECT * FROM mytable"
cur.execute(s)

r = cur.fetchone()
while r != None:
print r
o.write(str(r) + "n")
r = cur.fetchone()

cur.close()

print "disConnect"
con.close()
print "disConnected"
o.close
print "all processes are finished. good bye!"


です。
74デフォルトの名無しさん:2007/10/27(土) 01:16:16
エラーは

File "output.py", line 37, in <module>
o.write(item);o.write(" ")
File "/usr/local/lib/python2.5/codecs.py", line 638, in write
return self.writer.write(data)
File "/usr/local/lib/python2.5/codecs.py", line 303, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 1: ordinal not in range(128)


出力(listの直出し)はこうなりました。stringに変換しようとしたらエラーが出てしまって。
上のエラーは、これをストリングにしようとしたらおきたものです。
この出力を得られた時はエラー無しですが、役に立ちませんので。

(1L, 'test', 'a', 3L, 8L)
(2L, 'test', 'a', 3L, 8L)
(3L, 'test', ' \x82X\n', 2L, 10L)
(4L, 'test', ' \x8bB\n', 2L, 10L)
(5L, 'test', ' \x83\x8c\x83|\x81[\x83g\n', 1L, 10L)
(6L, 'test', ' \x91\xac\x95\xf1\n', 1L, 10L)
(7L, 'test', ' \x8d\xb6\x8a\xdd\n', 1L, 10L)
(8L, 'test', ' \x93\x9d\x8d\x87\n', 1L, 10L)
(9L, 'test', ' \x91O\n', 4L, 10L)
(10L, 'test', ' \x89\xba\x97\x8e\n', 3L, 10L)
(11L, 'test', ' \x8d\xec\x90\xed\n', 1L, 10L)
75デフォルトの名無しさん:2007/10/27(土) 01:18:16
書き忘れましたが、MacOSXはインテルです。
バンドル版はライブラリをインストール(?)できなかったので、新しくPython2.5を入れ直しました。
76デフォルトの名無しさん:2007/10/27(土) 01:20:57
俺はcodecs.pyに手を加えて対処した。
ちなみにこの問題はOSには依存しないようだ。
77デフォルトの名無しさん:2007/10/27(土) 01:25:31
codecs.pyですか。

色々調べてみたんですけど、
sys.setdefalutencoding()
ってのがあれば、楽勝みたいなんですけど、
どうも入ってないようなんですね。

pythonを始めたのも数日前ですので、ライブラリの中まで調べるのはきつそう。
ググリ疲れた。
78デフォルトの名無しさん:2007/10/27(土) 01:38:16
一番楽なのはこれじゃん?
http://www.centosfan.com/modules/tinyd0/index.php?id=8
79デフォルトの名無しさん:2007/10/27(土) 01:48:00
>>77
つ sitecustomize.py

つかMySQL関連のとこで聞いた方がいいと思うよ
80デフォルトの名無しさん:2007/10/27(土) 01:49:35
うーん、いけそうで行けない。
コメントアウトを#にしてみても特に反応しない。
もう一回インストールし直すとか必要ないですよね?
ライブラリもスクリプトだから関係ない気がするんだけど。

よくよく考えたら、エラーがおきている場所を修正すりゃいいんですね。初体験だwww
もう少し試行錯誤してみますね。

解決できても出来なくてもまた来ます。
ありがとうございました。
81デフォルトの名無しさん:2007/10/27(土) 01:52:38
>>79
それもなかったんで、自分で作ってみたんですけど、
スクリプト内にsetdefaultencoding()が必要みたいですね。

卵と鶏の論争みたい。

そうですね、MySQLからutf-8で抜き出せりゃ万事OKですから。
こういうエラーが一番面倒ですね。

ありがとうございます。
82デフォルトの名無しさん:2007/10/27(土) 01:59:36
謎だ
#data, consumed = self.encode(object, self.errors)

としているのに、

File "/usr/local/lib/python2.5/codecs.py", line 303, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 1: ordinal not in range(128)

ってなってしまう。パスも合っているはずなのに。
なぜ?
83デフォルトの名無しさん:2007/10/27(土) 02:04:13
>>81
sitecustomize.pyはユーザが設定する初期化コードだよ
そこでsys.setdefalutencoding呼べばいいだけ
84デフォルトの名無しさん:2007/10/27(土) 02:06:06
>>83
そいつが環境によっては常時latinを返しやがるんだ。
85デフォルトの名無しさん:2007/10/27(土) 02:09:39
>>83
そもそも、それができない。

スクリプトが書いてあるサイトを見つけて、その通りにやってみた

import sys
sys.setdefalutencoding('utf-8')

みたいな感じなんだけど、

それを
python2.5 sitecustomize.py
とやると、エラーがでる。
86デフォルトの名無しさん:2007/10/27(土) 02:23:32
>>84
どんな環境だよ

>>85
sitecustomize.pyは
>>> sys.path
ってやって出てくるパスの中に突っ込むもの
ユーザ定義の環境初期化 'モジュール' だから
あとsetdefalutencodingじゃなくてsetdefaultencodingだから
87デフォルトの名無しさん:2007/10/27(土) 02:35:42
なるほど。
環境を作るための環境みたいなものか。

それはただのタイプミスだwww
間違えないようにコピペで作った。

結局、もう一回pythonをビルドしてみることにしました。
88デフォルトの名無しさん:2007/10/27(土) 02:40:32
がんばれユウイチ
89デフォルトの名無しさん:2007/10/27(土) 02:55:02
名前で呼ぶなwww

気づいたんだけど、ライブラリってPython2.5の下にあるわけじゃないみたいだ。
libってとこの下にあった。
パスが似ていたから気づかなかった。

で、変更したら呪いにあってしまった。
出力が

utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8
utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8utf-8

ってのが続いている。
90デフォルトの名無しさん:2007/10/27(土) 03:19:37
原因が発覚

o = codecs.open(writePage,"w","utf-8")
o.write("sample")

ってやると、

utf-8

と書き込まれている。なんて無情なんだ。
91デフォルトの名無しさん:2007/10/27(土) 03:24:06
解決。

o = codecs.open(writePage,"w")

って、エンコード指定を外すと解決した。
printも同様で、utf-8でエンコードをかけると全てアウトになる。


本当にありがとうございました。
やっと寝れる。
92デフォルトの名無しさん:2007/10/27(土) 03:32:19
おやすみ
93デフォルトの名無しさん:2007/10/27(土) 17:05:46
こんにちは。
昨日お世話になったものです。

ライブラリを書き換えたら、今度は他の物が動かなくなって、
バグがバグを呼ぶというような状態になってしまいました。

無理矢理utf-8にこじつけるのではなく、きちんとライブラリを読んでから変更することにします。
ありがとうございました。
94デフォルトの名無しさん:2007/10/27(土) 17:12:14
OS XならPythonを自分でソースからビルドするんじゃなく、
おとなしくインストーラを使うか、macport使った方がいい。
95デフォルトの名無しさん:2007/10/27(土) 17:16:46
>>93
そこまでするぐらいなら、MySQLとその周辺の上手く動く組み合わせを探したほうが楽そうだわ。
96デフォルトの名無しさん:2007/10/27(土) 21:35:36
MySQLスレ行けば?って向こうでpythonスレ行けって言われそうでw
97デフォルトの名無しさん:2007/10/28(日) 19:23:13
何かパイソンのことばかり考えてたら
斬新なギャグを閃いた





























おっぱいそん
98デフォルトの名無しさん:2007/10/28(日) 19:25:06
>>97
もったいぶらずに書いてくれよ。
99デフォルトの名無しさん:2007/10/28(日) 19:26:00
>>97
速くかけよ?
下のおっぱいそんってのがそれじゃないだろうな?
100デフォルトの名無しさん:2007/10/28(日) 20:29:43
おっぱいは前世紀で既出だろ
101デフォルトの名無しさん:2007/10/28(日) 20:55:35
マイク・パイソン
102デフォルトの名無しさん:2007/10/28(日) 21:21:03
マリリン・パイソン
103デフォルトの名無しさん:2007/10/28(日) 21:47:59
モンティ・パイソンDVD-BOX発売だってな
104デフォルトの名無しさん:2007/10/29(月) 10:18:37
>>97
期待してるぞ
斬新なギャグを
105デフォルトの名無しさん:2007/10/29(月) 11:35:43
しかし斬新なだけのギャグは勘弁な
106デフォルトの名無しさん:2007/10/29(月) 12:50:27
おっぱいそんは
ここの住人にはレベルが高すぎたようだね。
107デフォルトの名無しさん:2007/10/29(月) 13:20:41
|, ,_
|∀゚)
|⊂ノ
108デフォルトの名無しさん:2007/10/29(月) 16:11:14
93です。

叩かれるかもしれないけど、Rubyで作ったら一瞬で作れました。
Pythonでは日本語処理以外を扱うようにします。フレームワークが良さげです。
109デフォルトの名無しさん:2007/10/29(月) 16:26:39
なんと斬新なギャグ(ry
両方使えるっていいなあ
110デフォルトの名無しさん:2007/10/29(月) 17:25:00
全部Rubyでやっとけって
111デフォルトの名無しさん:2007/10/29(月) 17:48:51
「VIPでやれ」みたく無謀にもPyshonで日本語扱おうと質問しにくる香具師に
「Rubyでやれ」って返そうぜ
AAよろしく
112デフォルトの名無しさん:2007/10/29(月) 18:02:03
ここ一週間でPythonとRubyを両方やったんで、良くわかったんですけど、
基本的に文法に違いはないですね。たいして。

Javaに似ているんで、Javaを使えりゃ余裕で覚えられるような気がします。
C++とはちょっと違うような気がする。
113デフォルトの名無しさん:2007/10/29(月) 18:05:15
パイション
114デフォルトの名無しさん:2007/10/29(月) 21:43:36
別に無謀じゃないだろ・・・
115デフォルトの名無しさん:2007/10/29(月) 22:01:38
日本語処理をしたいのなら、マゾでもない限りはRubyのほうがいいと思う。
116デフォルトの名無しさん:2007/10/29(月) 22:06:40
wxPythonのサンプルで日本語入力がきちんとできないのがあるけど、
できるのとできないやつとの違いは何ですか?
117デフォルトの名無しさん:2007/10/29(月) 23:00:12
マゾというか、残り少しで「おっぱい」なのに諦めちゃう人大杉
118デフォルトの名無しさん:2007/10/29(月) 23:11:00
>>94
MacPortsのPythonは腐ってね?
自分でコンパイルした方が断然いい。
簡単にベンチマークしたらかなり違いがでた。
11994:2007/10/30(火) 06:52:57
>>118
macportsのは確かに速度以外にも色々な面でおすすめできないけど、
自力ビルドで失敗してるようだったから紹介してみた。
普通に使うなら、インストーラからで十分だと思う。
関係ないけどLeopard標準搭載のPythonは2.5になってるそうな。
120デフォルトの名無しさん:2007/10/30(火) 22:10:29
try:
  fuck!=you
except:
  print(1)
121デフォルトの名無しさん:2007/10/30(火) 23:45:38
http://www.itmedia.co.jp/enterprise/articles/0710/24/news057.html
IronPythonはCPythonの30分の一の速さと書かれているんだけど本当?
前はCPythonより速いと言っていたような気がするんだけど。
122デフォルトの名無しさん:2007/10/31(水) 00:47:51
>>121
言ってる事変わってなくね?
でも.NETのロードとか含めるとCPythonより遅くなるんだろ、どうせ・・・
123デフォルトの名無しさん:2007/10/31(水) 18:59:53
>>122
変わってるね。
>ronPythonを開発したのは、動的言語が.NETでうまく走らないという説が間違っていることを暴くためだったと語った。
これは元々自身の論文(動的言語が.NETでうまく走らない)を証明するために開発したらうまく動いたのが開発経緯だったはず。
記事自体が信用できない。
124デフォルトの名無しさん:2007/10/31(水) 20:33:14
そういやそうだったな
125デフォルトの名無しさん:2007/10/31(水) 20:42:18
単にC言語はIronPythonより30倍速いと言ってるだけでしょ
CPython関係ない
126デフォルトの名無しさん:2007/10/31(水) 21:05:03
> Although a similar implementation of the C language runs probably 30 times faster that IronPython,
127デフォルトの名無しさん:2007/10/31(水) 22:37:55
ploneにファイルをアップするpython scriptの書き方をどなたか教えていただけませんか?
128デフォルトの名無しさん:2007/10/31(水) 22:39:37
>>127
それくらいも分からないのか、氏ね。
129デフォルトの名無しさん:2007/10/31(水) 23:41:58
わからない人はレスしなくていいです。

どなたか教えていただけませんか?
130デフォルトの名無しさん:2007/11/01(木) 04:12:58
2つのリストに共通要素があるかどうか判定したいのですが
一つずつ取り出して比較しないとダメですか?
131デフォルトの名無しさん:2007/11/01(木) 04:29:23
set(a) or set(b)
132デフォルトの名無しさん:2007/11/01(木) 06:34:42
set(L1) & set(L2) か set(L1).intersection(L2) じゃないだろうか
133デフォルトの名無しさん:2007/11/01(木) 06:51:06
2つのリストを1つのsetにぶち込んで、
そのsetの要素数が元のリストの合計より少なければ共通要素がある。
134デフォルトの名無しさん:2007/11/01(木) 11:22:52
set って NoneType 渡すと例外出すからいつも import sets で
sets.Set使ってる。
import sets
as = sets.Set(al)
ds = sets.Set(bl)
dif = as - ds
if len(dif): print "diff"
135デフォルトの名無しさん:2007/11/01(木) 12:39:43
いやその考え方はおかしい
136デフォルトの名無しさん:2007/11/01(木) 12:42:54
リストの要素にリストがあったりすると難しいな
137デフォルトの名無しさん:2007/11/01(木) 13:39:21
ま、unhashableなインスタンスが入ってると駄目だな
138デフォルトの名無しさん:2007/11/02(金) 09:52:20
リストで各要素の隣同士を比較し続けるような

for i in range(len(seq)-1):
 item0 = seq[i]
 item1 = seq[i+1]
 item0 と item1 を比較•処理

っていうのをもっとエレガントにイテレータを使って書くことはできますか。
ぱっと思いつくのは
item0 = seq[0]
for item1 in seq[1:]:
 item0 と item1 を比較•処理
 item0 = item1

とかしかないんだけど。。。
139デフォルトの名無しさん:2007/11/02(金) 10:11:33
for a,b in zip(seq,seq[1:]):
    print a,b

しかしコピーを伴うのが気にいらん
140デフォルトの名無しさん:2007/11/02(金) 10:26:24
developerWorks(日本)のPython記事が出てこないけど消された?
141デフォルトの名無しさん:2007/11/02(金) 10:29:25
developerWorksのPython記事ってインデントぐちゃぐちゃじゃね?
Pythonの記事としてはそれ、致命的だろと
142デフォルトの名無しさん:2007/11/02(金) 10:30:40
>>139
def zipped(a, b):
for i in xrange(min(len(a), len(b))):
yield a[i], b[i]
とするとか。
143デフォルトの名無しさん:2007/11/02(金) 10:44:01
import itertools
seq = [ 'a', 'b', 'c', 'd', 'e' ]
for a, b in zip(seq, itertools.islice(seq, 1, len(seq))):
    print a, b
144143:2007/11/02(金) 10:50:16
zip -> itertools.izipのがいいのかな
145デフォルトの名無しさん:2007/11/02(金) 11:20:44
そういえば、そんなライブラリがありました
146デフォルトの名無しさん:2007/11/02(金) 13:33:13
>141
んじゃ次は

よーしパパ python のワンライナー記事書いちゃうぞー
147デフォルトの名無しさん:2007/11/02(金) 14:35:55
>>146
Plone厨と一緒に死ねよwww
148デフォルトの名無しさん:2007/11/02(金) 14:46:50
ワンライナーの邪悪さも見てもらったら面白いと思うけどな
149デフォルトの名無しさん:2007/11/02(金) 16:03:05
>>145
PyMOTW: itertools - O'Reilly ONLamp Blog
http://www.oreillynet.com/onlamp/blog/2007/10/pymotw_itertools.html?CMP=OTC-6YE827253101&ATT=PyMOTW+itertools
PyMOTW - Python Module of the Week
http://www.doughellmann.com/projects/PyMOTW/

標準ライブラリを紹介してくれてるサイト。

ワンライナーもいいけど標準ライブラリの
使い方とかも忘れないであげてください…
150デフォルトの名無しさん:2007/11/02(金) 17:44:51
unhashableって何?
151デフォルトの名無しさん:2007/11/02(金) 18:13:49
ワンライナーとか言ってる奴に限って基本的なことが理解できていないことが多い。
ワンライナー厨は典型的な中二病。
152デフォルトの名無しさん:2007/11/02(金) 18:42:53
>150
辞書のキーにできないとかそんな風に覚えておけばおk
153デフォルトの名無しさん:2007/11/02(金) 18:43:36
で >151 はどういう高尚な主張をするのかな???
154デフォルトの名無しさん:2007/11/02(金) 18:48:01
大抵のワンライナーはDQNレヴェルのスクリプトを一行にして得意気になってるアホです。
見づらいとか分かりづらいといった意見を読めないアホが悪いと無視するマジもんのアホです。
別にワンライナー以外が高尚でもなんでもなくただワンライナーがDWNなのです。
155デフォルトの名無しさん:2007/11/02(金) 18:48:37
DQNなのです。
156デフォルトの名無しさん:2007/11/02(金) 19:12:45
自分はもう未熟者じゃないと思ってる未熟者の熱弁って
微笑ましいよな。
157デフォルトの名無しさん:2007/11/02(金) 19:54:33
というか誰もワンライナーがそんないいもんだと思っちゃいないっていうかなんていうか
158デフォルトの名無しさん:2007/11/02(金) 20:11:25
じゃあいちいち作るんじゃねえよ目立ちたいだけの内容ゼロ野郎がwwwwwwwwwwwwwww
159デフォルトの名無しさん:2007/11/02(金) 20:20:28
その文末より目立ちたいだけで内容ゼロなもんもないよな。
160デフォルトの名無しさん:2007/11/02(金) 20:36:32
ここで聞いて良いのか微妙な質問なんですが、
なぜ皆さんはRubyじゃなくてPythonを選んだのですか?
161デフォルトの名無しさん:2007/11/02(金) 20:37:51
取り立ててRubyを選ぶ理由もなかったですし
162デフォルトの名無しさん:2007/11/02(金) 20:53:07
>>140
今は出て来るね。
リニューアルしたみたいだからタイミングが悪かったんじゃない?
163デフォルトの名無しさん:2007/11/02(金) 20:55:03
Pythonはメジャーな鳥とは大体友達
素で使えてフリーなアプリとも大体友達
連携もイケるからRubyでは未来栄光体感し得ないほどに楽チン
カルトでねーマジもんの軽くて軽量、手軽なライトウェイト言語なのよ
164デフォルトの名無しさん:2007/11/02(金) 21:01:56
お前が既にカルトっぽい
165デフォルトの名無しさん:2007/11/02(金) 21:05:22
>>160
昔、RubyはMacOS9で使える実用的なのがなかったからさ
166デフォルトの名無しさん:2007/11/02(金) 21:12:01
167デフォルトの名無しさん:2007/11/02(金) 21:12:25
>>160
個人的には
・記号が少なく明快。
・Rubyよりスタンドアローン分野に強い。
というところだろうか。
168デフォルトの名無しさん:2007/11/02(金) 21:46:15
>>166で挙げられてることごとくPythonの美点だと思うんだけど
169デフォルトの名無しさん:2007/11/02(金) 21:48:16
>>160
悪意を持って言えば
お前みたいのがいないから
他の言語をこき下ろす人間が作ってないから
170デフォルトの名無しさん:2007/11/02(金) 21:50:43
盛り上がってまいりました
171デフォルトの名無しさん:2007/11/02(金) 22:08:32
Pythonの中の人は
⊂二二二( ^ω^)二⊃ ブーン
とかやらないから



すまん俺両方使ってる
172デフォルトの名無しさん:2007/11/02(金) 22:16:52
配列とハッシュで間に合うならPerl、
データ構造がネストの予感あればPython。
Rubyは使い道がない
173デフォルトの名無しさん:2007/11/02(金) 22:19:24
>168
おれも、というか正直このオッサンの
「○○地獄」の感性には学ぶべき何かの匂いがない…
174デフォルトの名無しさん:2007/11/02(金) 22:26:49
カルト言語だからしょうがないよ。
多言語は全部ポアしないと気が済まないんだろ。
175デフォルトの名無しさん:2007/11/02(金) 22:28:42
Rubyは今でこそRaisがあったりしてるけど・・・・俺がPythonかRubyかどっちを使うか考えたときはそんなもの全然無かったんだよ。
176デフォルトの名無しさん:2007/11/02(金) 22:37:16
そろそろ誘導w

Python厨とRuby厨が仲直りするスレッド
http://pc11.2ch.net/test/read.cgi/tech/1099804004/
177デフォルトの名無しさん:2007/11/02(金) 22:38:38
>>173
jijixi's diary - Ruby に比べて Python の面倒なところ
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20071010#p01

リンク先くらいみれ。(ちょっとリンクの張り方がわかり難かったけど)
jijixiさんのエントリに対してmatzさんが感想を述べてるだけですよ、と。

というかの locals() でスコープ内の?ローカル変数が取ってこれる
のは知らなかったのでためになったな…jijixiさん感謝
178デフォルトの名無しさん:2007/11/02(金) 22:40:21
とりあえず、>>168
「proc.call」を「proc.()」と書けてもちっとも嬉しくない人はPython向き。
つーかProcイラネ、関数内関数よこせって人は間違いなくPython向き。
でもlambdaはもう少し便利になって欲しいなって人もPython向き。
179デフォルトの名無しさん:2007/11/02(金) 22:56:09
Pythonでさっさと作業を済ます若い子に萌えるから。
RubyはWEB屋ばっかりでつまらん(しかもおっさんの声がでかいし)
180デフォルトの名無しさん:2007/11/02(金) 22:56:55
lambdaは後方互換のためだけでいいけどな。
新規のコードで使うことある?
181デフォルトの名無しさん:2007/11/02(金) 23:00:47
>>180
lambdaのかわりに何を使ってるの?
182デフォルトの名無しさん:2007/11/02(金) 23:09:59
>>180
名前付き関数を直前に書く。
183デフォルトの名無しさん:2007/11/02(金) 23:13:15
lambdaが使える場合ならlambdaのがタイプ量短くて済むじゃん
lambdaならデフォルト引数にも出来るし(それがいいやり方かどうかはともかく)
184デフォルトの名無しさん:2007/11/03(土) 00:13:29
クラスをパッケージぽく使うことって不可能?

class Fruit:
 class _Base:
  pass
 class Banana(_Base):
  pass
 class Apple(_Base):
  pass


a = Fruit.Apple()
b = Fruit.Banana()

みたいな階層構造にできるとうれしいんだけど。
185デフォルトの名無しさん:2007/11/03(土) 00:17:35
副作用が無いという目印としてlambdaを使ってる。
とくにpred funcを引数にする関数に対して。
186デフォルトの名無しさん:2007/11/03(土) 00:24:30
>>184
moduleで何か不満があるの?
187デフォルトの名無しさん:2007/11/03(土) 00:30:22
class A:
    class B:
        def __init__(self):
            pass
    
    class C(B):
        def __init__(self):
            A.B.__init__(self)
    
    class D(B):
        def __init__(self):
            A.B.__init__(self)
188デフォルトの名無しさん:2007/11/03(土) 00:56:33
>>179
だってGUIアプリをやろうとすると
hoge.method(:fuga)を沢山書くかProcを使わないといけないwwww
189デフォルトの名無しさん:2007/11/03(土) 09:44:47
どっち使ってもいいと思うけど、
Rubyみたいな認定試験がないから。
日本産のプログラミング言語だから盛り上げていきましょう、
っていうお金のにおいみたいなのがないから。
190デフォルトの名無しさん:2007/11/03(土) 09:47:43
>>163
> 未来栄光

「未来永劫」な。
191デフォルトの名無しさん:2007/11/03(土) 12:28:54
>>189
>っていうお金のにおいみたいなのがないから。

「お金のにおい」ってRuby使いが一番嫌ってた言葉じゃね?
192デフォルトの名無しさん:2007/11/03(土) 15:58:09
>>180
GUIのコールバック関数を組むときに名前つきの関数を使うと
手がつけられないほど関数が増えるから自分はlambdaをよく使う
193デフォルトの名無しさん:2007/11/03(土) 16:04:44
>>191
そんなわけなだろ。
リファレンスマニュアルを書かずに同程度の本を大量に出版させる奴らだぞwww
194デフォルトの名無しさん:2007/11/03(土) 16:28:16
>>193
「同程度の本」を具体的に挙げてみれ
195デフォルトの名無しさん:2007/11/03(土) 21:12:02
>>194
Rubyを256倍…
196デフォルトの名無しさん:2007/11/03(土) 21:19:51
るびーの本が出た〜 と買ってはみたものの
最初の章すら読めなかった…

まあ俺の問題なんだろうけどさ…
197デフォルトの名無しさん:2007/11/03(土) 21:56:49
おまいらがPythonの話をしたくないのはよく分かった
198デフォルトの名無しさん:2007/11/03(土) 21:59:29
Rubyを使うぐらいならJavaを使えばいいのに。
199デフォルトの名無しさん:2007/11/03(土) 22:18:53
マジレスする気にもなれん。
200デフォルトの名無しさん:2007/11/03(土) 22:24:13
RubyがJavaより優れてる点ってなんなの?
Pythonは可読性で優れているだろうが・・・・Rubyはオブジェクト化が徹底してるとかその程度か?
201デフォルトの名無しさん:2007/11/03(土) 22:25:59
スレ違いです
202デフォルトの名無しさん:2007/11/04(日) 07:59:43
言語を選ぶかの指標

•自分の欲する機能が標準で提供されているかどうか
•ライセンスはどうなっているか ソースを公開しなくても良いのか 商用利用可能なのか
•GUIアプリを作ろうとしたときに対応はどうなっているのか
•優秀なGUIデバッガが存在するかどうか
•Cアプリに組み込もうとしたとき、APIをどれだけ簡単に利用できるか
•日本語ドキュメント(せめてチュートリアルだけでも)の充実度
•Eclipse のプラグインが存在するか(俺にとっては結構重要)

あとは優先順位の付け方と好み。
203デフォルトの名無しさん:2007/11/04(日) 10:25:59
Cアプリはもはや重要性薄いと思う。
いまどきアプリ開発にC/C++を使うメリットも薄いし。
204デフォルトの名無しさん:2007/11/04(日) 10:29:52
>>203
あんたの言う「アプリ」がどんなだかわからん
Webアプリだの携帯アプリだの請負システムの専用アプリなら、
C/C++はいらんだろうな確かに
205デフォルトの名無しさん:2007/11/04(日) 10:40:52
ライブラリが充実してることといろんなOSで動くことも重要だよね。
自分のやりたいことを全部自分でプログラム組まなきゃいけないのはだるい
その点ではruby, python, perl, javaはどれもレベル高いよなぁ
まあrubyは比較的新しいからライブラリは他の言語に比べると見劣りするけど

なんかrubyの話題で盛り上がってるけど、rubyにできてでPythonでできな
いことのうち、あったらいいなと思うものはある?個人的にはlambdaの中
で文を書きたい。あと関数呼び出しの括弧を省略できるようになると楽だ
と思っているんだけど。
206デフォルトの名無しさん:2007/11/04(日) 10:45:18
>>205
お前にはrubyがオススメって言われるだけだと思うよ
207デフォルトの名無しさん:2007/11/04(日) 13:24:28
>関数呼び出しの括弧を省略
ありえない。
208デフォルトの名無しさん:2007/11/04(日) 13:28:28
Pythonを使うかRubyを使うかなんて、まつもとゆきひろと柴田敦のどっちが好きかできめればよくね?
209デフォルトの名無しさん:2007/11/04(日) 13:53:01
Pythonはクロージャがないのが許せん。
lambdaじゃ役に立たん。
210デフォルトの名無しさん:2007/11/04(日) 14:13:10
クロージャの概念が今一理解できんのだけど。
あと有効性も。
おせーて
211デフォルトの名無しさん:2007/11/04(日) 14:14:34
>>209
クロージャの定義によるのかもしれんが
普通の関数自体がクロージャの性質をもってるよ?
それとも無名じゃなくいやってこと?
212デフォルトの名無しさん:2007/11/04(日) 14:58:47
def hoge(n):
    def _hoge(i):
        _hoge.n = _hoge.n+i
        return _hoge.n
    _hoge.n = n
    return _hoge

a = hoge(5)
b = hoge(100)

print a(1), b(2)
print a(3), b(4)
213デフォルトの名無しさん:2007/11/04(日) 15:12:48
ブロックを投げまくるのが楽しい。スコープの継承もそれなりにスマートだ
214デフォルトの名無しさん:2007/11/04(日) 15:24:08
枕投げの方が楽しい
215デフォルトの名無しさん:2007/11/04(日) 15:33:02
>>208
python好きだけど、どっちもやだ
216デフォルトの名無しさん:2007/11/04(日) 15:41:15
なんでguidoじゃないんだ
217デフォルトの名無しさん:2007/11/04(日) 15:42:12
開発者対決ならLarryの圧勝だ
218デフォルトの名無しさん:2007/11/04(日) 16:00:47
>>211
うい。無名こそ正義。
219デフォルトの名無しさん:2007/11/04(日) 16:45:06
explicit better than implicit
220デフォルトの名無しさん:2007/11/04(日) 16:48:07
pythonのソースコードをC++のソースコードに変換するソフトが見つかりません
ホームページのアドレスをおしえてもらえないでしょうか?
よろしくお願いします。
221デフォルトの名無しさん:2007/11/04(日) 17:11:11
222デフォルトの名無しさん:2007/11/04(日) 17:14:49
>>217
どさくさに紛れて何を言ってるんだ
223デフォルトの名無しさん:2007/11/04(日) 17:26:25
perlでいう
$ret = `cat hoge`;
とか
open(IN, "cat hoge | tail -n 5 |");

pythonでどうやんの?
224223:2007/11/04(日) 17:33:49

わりぃ、無視してくれ。
検索不足だった。

ttp://omake.accense.com/wiki/Python/Snippet/%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
225デフォルトの名無しさん:2007/11/04(日) 18:06:26
Pythonは括弧省略には中々行かないんじゃ?

Rubyは括弧省略出来る換わりに
関数への参照を取り出すのが method(:名前) なんて言う
面倒な書き方になってしまってる。
226デフォルトの名無しさん:2007/11/04(日) 18:08:29
227デフォルトの名無しさん:2007/11/04(日) 18:13:24
>>205
括弧を省略したかったらエディタで関数を入力した後、自動的に括弧を入力させればいいだろ。
228デフォルトの名無しさん:2007/11/04(日) 18:36:56
たしかにエディタに括弧を挿入させるほうが賢いのかもしれない。
括弧があれば変数の参照とメソッド呼び出しを明確に区別できるし。
・・・.emacsいじるの面倒なんだよなぁ。meadowより設定をしやすくて
しかも高機能なエディタあるよって人いない?
229デフォルトの名無しさん:2007/11/04(日) 18:44:16
>>228
TextMate
Scribes
230デフォルトの名無しさん:2007/11/04(日) 19:33:51
>>228
scribesちょっと使ってみたけど良い感じ。しばらく使ってみるよ
サンクス
231デフォルトの名無しさん:2007/11/04(日) 19:56:34
前に使おうとした時は、scribesのsnippetはタブしか使えなかったが今はどうなったかな?
232デフォルトの名無しさん:2007/11/04(日) 20:12:46
233デフォルトの名無しさん:2007/11/04(日) 20:52:15
pythonのコードを出先のマシンでvi(デフォルト)で編集すると
いつのまにかTabが混じってたりして困る。なんとかして。

234デフォルトの名無しさん:2007/11/04(日) 22:21:01
>233
使ってるSCMにタブとっぱらうフィルタ仕込んだら?
235デフォルトの名無しさん:2007/11/05(月) 01:01:41
其れでは始めます…
236デフォルトの名無しさん:2007/11/05(月) 01:04:04
`server.に影響がでない様に「超`local.」で行います…
237デフォルトの名無しさん:2007/11/05(月) 01:07:01
変ですね…(+ФyФ)?質問が無いです…
238デフォルトの名無しさん:2007/11/05(月) 01:25:58
さて…(+ФyФ)!改めて始めます…
239デフォルトの名無しさん:2007/11/05(月) 01:26:54
何故でしょう…(+ФyФ)?質問が無いです…
240デフォルトの名無しさん:2007/11/05(月) 02:32:40
或る参考書を実行していたら`send-mail.して居たのですが…
どうしたら…(+ФyФ)?良いのですか…
241デフォルトの名無しさん:2007/11/05(月) 02:35:38
>>240「追加」 若しも…(+ФyФ)!`win.で実行して居たらと考えると…
242デフォルトの名無しさん:2007/11/05(月) 06:32:34
わからない人はレスしなくていいです。

どなたか教えていただけませんか?
243デフォルトの名無しさん:2007/11/05(月) 06:46:58
変ですね…(+ФyФ)?質問が無いです…
244デフォルトの名無しさん:2007/11/05(月) 19:23:23
すみません
中学2年になるんです、パソコンを覚えようと思ってPHPの参考書を買ったんです
はじめにCentOSをインストールまでは友達に聞いて出来たけど、その友達がそれから先を教えてくれないくて携帯で2chを知ったのですけど、ここで聞いて教えてもらえるのですか?
245デフォルトの名無しさん:2007/11/05(月) 19:32:15
>>244
死ね役立たず。
人の足引っ張って楽しいかゴミクズ。
今すぐ死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。v死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。死ね。
246デフォルトの名無しさん:2007/11/05(月) 19:32:23
買った参考書の題名が必要なんですか?
247デフォルトの名無しさん:2007/11/05(月) 19:33:11
248デフォルトの名無しさん:2007/11/05(月) 19:47:26
テキストを作らなくちゃいけ無い事までは知ったのですけど
249デフォルトの名無しさん:2007/11/05(月) 19:59:11
教えてもらえません
250デフォルトの名無しさん:2007/11/05(月) 20:04:03
でも、お勉強って
251デフォルトの名無しさん:2007/11/05(月) 20:12:57
ここで日本語のお勉強方法は教えていないのですが。
252デフォルトの名無しさん:2007/11/05(月) 20:18:15
ここはPythonスレですが。
253デフォルトの名無しさん:2007/11/05(月) 20:51:46
    いいか、みんな
        (゚д゚ )
        (| y |)
 彼の言ったPHPという字をよく見てみよう
     PH   ( ゚д゚)  P
       \/| y |\/
  PHはPhishingの略であることは間違いない
        ( ゚д゚)  PHishing
        (\/\/
 日本語で言うと
        ( ゚д゚)  釣り
        (\/\/
     一方、残ったPはPythonスレであることは疑いようがない
 Pythonスレ( ゚д゚)
      \/\/)

    つまり、そういうことだ。
        (゚д゚ )
        (| y |)
254デフォルトの名無しさん:2007/11/05(月) 21:10:24
え〜と
どんな質問だったら良いんですか
255デフォルトの名無しさん:2007/11/05(月) 21:25:07
>>254
もういいからどっかいけよ、つまらん
256デフォルトの名無しさん:2007/11/05(月) 21:47:11
>>212
良く分からんが、普通にやるなら、・・・

class Hoge:
  def __init__(self, n):
    self.n = n
  def __call__(self, i):
    self.n += i
    return self.n

a = Hoge(5)
b = Hoge(100)

print a(1), b(2)
print a(3), b(4)
257デフォルトの名無しさん:2007/11/05(月) 21:57:16
>>212はPythonの関数がクロージャである(関数を返す関数を作れる)事を示すためのコードでしょ。
258デフォルトの名無しさん:2007/11/05(月) 22:12:58
>>212ってクロージャっていうのかなあ
関数がオブジェクトであることを利用して、関数の属性を明示的に設定してる
だけだよな
普通、関数が定義されたときの環境(ローカル変数とか)を後で参照できるように
封じ込める仕組みをクロージャっていうんじゃないの

そういう意味のクロージャはPythonにもあるだろ
クロージャから束縛されてるレキシカル変数を「変更」する際の制限はあるけど

>>257
関数を返す関数ってのは、単に高階関数っていわないか?
259デフォルトの名無しさん:2007/11/05(月) 22:50:23
Pythonの場合はクロージャを書く側だと
クロージャの"実装"を書かないとあかん。
使う側からだとクロージャではある。
260デフォルトの名無しさん:2007/11/05(月) 23:00:04
def re_replacer(pattern, replacement, flags):
 import re
 reobj = re.compile(pattern, flags)
 return lambda x: reobj.sub(replacement, x)

こんなのは普通にクロージャと言っていいんじゃないの。
261デフォルトの名無しさん:2007/11/05(月) 23:00:14
>>258
変数nを後から参照しているだろ
262261:2007/11/05(月) 23:12:00
ごめん間違えた
nじゃなくて_hoge.n
263デフォルトの名無しさん:2007/11/05(月) 23:19:07
>>262
それは関数オブジェクトの属性を参照しているだけなので、
クロージャが無い言語でも動くと思われる。
例としてあまり適当ではないのでは。

勘違いならすまん。
264デフォルトの名無しさん:2007/11/05(月) 23:23:19
>>263=>>256でいいのかな?
だとすると自分でクロージャの実装を書いておいて
それがクロージャだと気づいてないように思えるだがw
265デフォルトの名無しさん:2007/11/05(月) 23:23:21
すみません質問です
01: import sys
02:
03: f = open(sys.argv[i])
04: x = f.read()
05: f.close()
06:
07: y = x.split('\n')
08: for i in range(len(y)):
09: z = y[i].split(',')
10: print '%4d: %s' % (i, '\t'.join(z))
のテキストを作って
a,b,c
d,e,f
g,h,i
のテキストを作ったら
pytmp>sample.py data1.txt
のコマンドライン実行で
0: a b(空白)c
1: d e(空白)f
2: g h(空白)i
3:
の結果が見れないんです
何故ですか?
266264:2007/11/05(月) 23:24:39
あれ?>>263=>>258と書くべきだったか?
267デフォルトの名無しさん:2007/11/05(月) 23:27:57
>>264
俺は>>258>>260>>263
だよ。
「自分でクロージャの実装を書いておいて」ってのはどれのこと?
>>260は普通にクロージャだと思ってるよ
268デフォルトの名無しさん:2007/11/05(月) 23:45:48
>自分でクロージャの実装を書いておいて」
>>256

Pythonのレキシカル変数ごにょごにょあたりは同意。
269デフォルトの名無しさん:2007/11/05(月) 23:46:21
>>268
ああ、そのレスなら俺じゃないし
270デフォルトの名無しさん:2007/11/05(月) 23:55:28
>>265
タブ使ってるから。言葉じゃ説明しづらいけど
タブが8文字分なら import sys のあとに
print ('*' + '-' * 7) * 5
とか書き加えてからそのプログラム実行したらわかると思うよ
271デフォルトの名無しさん:2007/11/06(火) 05:32:30
すみません
01: import sys print ('*' + '-' + 7) * 5
02:
03: f = open(sys.argv[1])
のでいいのですか?
272デフォルトの名無しさん:2007/11/06(火) 06:56:36
クロージャとオブジェクトの違いがわからん。
実現出来る事はどっちも変わらんように見える。
273デフォルトの名無しさん:2007/11/06(火) 07:17:07
すみません
01: import sys
02:
03: f = open(sys.argv[1])
のテキストを実行したら
SyntaxError: invalid syntax
となります何故ですか?
274デフォルトの名無しさん:2007/11/06(火) 07:22:31
まさかとは思うが
01: などの行番号はいらないぞ

ともかくもう少し勉強してから質問しろ
275デフォルトの名無しさん:2007/11/06(火) 07:51:43
俺の後輩も、そのまま写せと言ったら行番号まで写してたな。
行番号Basicしか知らないような初心者なら仕方ないかもしれん。
276デフォルトの名無しさん:2007/11/06(火) 08:37:10
>>272
同じことを、少ない手間でできるのがポイント。
Cプログラマが、C++のclassとCのstructの違いが判らないのと同じ。
277デフォルトの名無しさん:2007/11/06(火) 09:14:07
データに関数がついたのがクラス
関数にデータがついたのがクロージャ

と見ることもできる。
278デフォルトの名無しさん:2007/11/06(火) 09:31:16
Perlだと分かりやすいかと。
実現方法が身も蓋もない
279デフォルトの名無しさん:2007/11/06(火) 10:52:50
>>277
関数にデータが付けられるということだけじゃない。

関数を変数に入れて持ち運べる言語で、
関数を宣言したときに、関数の外側にある変数を関数宣言の中で使用したら、
自動的にその変数が関数にくっついて持ち運べるようになる。

>>212は_hoge.nを手動でくっつけてるからクロージャじゃない
>>260は自動でreobjとreplacementがくっついてるからクロージャ
280デフォルトの名無しさん:2007/11/06(火) 11:13:45
>>278
分かりやすいかどうかはともかく、
Perlのクロージャは$f->()
のように呼び出さなければならないのが美しくないんだよな。

Pythonのように、関数もメンバ関数もクロージャも__call__を持つ
ファンクタも同じように扱えて、単に()で呼べたほうがいい。
デリゲートが、単に
f = obj.memfunc
だけで済んでしまうのは素晴らしい。
281デフォルトの名無しさん:2007/11/06(火) 12:48:24
高階関数をクロージャと勘違いしている人がいるみたいだけど、基本的には>>279が正解です。
でもクロージャの説明って難しいよね。>>279の説明読んでもふつうは分からない。

ところでPythonの場合、クロージャの外側の変数は、参照はできても代入はできないじゃん?こんな場合でもクロージャっていえるのかな?
個人的にはPythonのそれは厳密にはクロージャといえないと思っていたから。
282デフォルトの名無しさん:2007/11/06(火) 12:52:26
>>281
破壊的代入はできんが、破壊的操作は出来るので、別に困らないといえば困らない
クロージャからレキシカル変数を変更したいようなケースでは、リストを使えば良い
リストの中身は変更できるから

レキシカル変数を変更できるかどうかってのは、別にクロージャの要件では
ないような
283デフォルトの名無しさん:2007/11/06(火) 13:08:10
Pythonの代入は代入じゃなくて名前束縛だから
284デフォルトの名無しさん:2007/11/06(火) 13:20:38
>>283
その理解は疑わしい。
i = 1
f = lambda x: x + i
f(0)
---> 1
i = 2
f(0)
---> 2

MLのように単一代入の関数型言語では、このような動作にはならない。

PerlやJavaScript, C#のようにクロージャが使える手続き型言語では、
Pythonと同じ動作になるのがほとんどだと思う。
285デフォルトの名無しさん:2007/11/06(火) 14:06:30
手続き型言語と関数型言語を比較してるのか
代入と束縛を比較してるのか、よく分からない俺ガイル。
286デフォルトの名無しさん:2007/11/06(火) 14:23:59
>>265
あの本のやつでしょ?
俺もそれで困ってる。

まったく0から言語学ぶの難しいよな。

287284:2007/11/06(火) 14:26:24
>>285
Pythonの代入が少なくとも破壊的であって、単一代入でないのは>>284
見れば明らかだと思う。

普通は束縛と言えば単一代入のことだと思うが、
>>283が一体何を代入/束縛だと考えているのか、
Pythonが束縛であるというのは何を根拠に言っているのかは俺は知らない。
>>283に聞いてくれ。
288デフォルトの名無しさん:2007/11/06(火) 19:07:24
>>265,>>286
なんの本の話題かしらんけど、最初のsys.arg[i]のところを写し間違ってるんじゃない?
念のため言っておくが、行番号は書くなよ。
289デフォルトの名無しさん:2007/11/06(火) 21:26:19

>>265の01〜09までは理解できたんだが

10: print '%4d: %s' % (i, '\t'.join(z))

これがわからん。

'%4d: %s' ってなに?
290デフォルトの名無しさん:2007/11/06(火) 21:39:24
>>289
ttp://www.python.jp/doc/release/lib/typesseq-strings.html

ここにも書いてるけどC言語のsprintf()相当なもの。
291デフォルトの名無しさん:2007/11/06(火) 23:27:59
>>287
=演算子はJavaの参照型に対する=と同じで単一代入。
そんでもってPython整数はimmutable object。
>>284のlambdaは、1への参照を持っているのではなく、毎回global名前空間
からiを解決してオブジェクトへの参照を取得しているので、globalの影響を受ける。

del i
f(0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
NameError: global name 'i' is not defined
292デフォルトの名無しさん:2007/11/07(水) 00:48:24
PythonをEclipseのPydevでコード書いてるんだけど、Eclipseの表示で日本語を上手く表示できません。
コマンドラインからならきちんと思い通りに動作するんですが。
上手く日本語のメッセージを表示させられてる人はいますか?
293デフォルトの名無しさん:2007/11/07(水) 01:08:42
書式付フォーマットってperl用語だっけ?
言語に依存しないなんか一般的な名称ってなかったっけ?
294デフォルトの名無しさん:2007/11/07(水) 02:56:03
行番号を無くしてみました
y
^
SyntaxError
になってしまいます…
295デフォルトの名無しさん:2007/11/07(水) 06:32:43
すみません
簡単に進められました買った参考書が説明不足だっただけでした
続けて質問です
pythonを起動して
>>>print y
をしたら
2ch管理人は実は鬘を必要とします
とpythonが出力したのはどうしてですか?
296デフォルトの名無しさん:2007/11/07(水) 08:18:19
任意のシーケンス seq があって、その要素を n 個区切りで操作したい場合って

for i in xrange(0, len(seq), n):
 x = seq[i: i+n]
 print x
ってやるしかない?なんかこう、もっとうまくできる気がするんだけど。。。
297デフォルトの名無しさん:2007/11/07(水) 08:30:09
while seq:
 print seq[:4]
 seq = seq[4:]
298デフォルトの名無しさん:2007/11/07(水) 09:15:47
>>291
>=演算子はJavaの参照型に対する=と同じで単一代入。

これ、ほんと?
というか、何をもって単一代入といってる?

>そんでもってPython整数はimmutable object。
>>>284のlambdaは、1への参照を持っているのではなく、毎回global名前空間
>からiを解決してオブジェクトへの参照を取得しているので、globalの影響を受ける。

1行目と、この3行とのつながりがわからん。
299291:2007/11/07(水) 09:19:42
ごめん、忘れてくれ。完全に単一代入を勘違いしてた。
300デフォルトの名無しさん:2007/11/07(水) 09:44:08
よくわからんが、>279の説明と>281の説明を読んだら、
安易にクロージャを使うとバグの温床になるんじゃないか、
という気がした。

301デフォルトの名無しさん:2007/11/07(水) 10:05:31
うん、それは正しいと思うよ。
安易にクラスを使っても、安易に代入を使っても、安易にPythonを使ってもバグの温床になる、
それらと同じ程度には。
302デフォルトの名無しさん:2007/11/07(水) 10:46:45
>>300
少なくともPythonのクロージャは、代入不可能だし外から勝手に別の
オブジェクトに変更されることもないから、Java7のクロージャ以上に
安全だよ。
(Java7のクロージャは多分代入可能)
303デフォルトの名無しさん:2007/11/07(水) 10:51:21
イカ臭い。
304デフォルトの名無しさん:2007/11/07(水) 11:20:58
お、俺じゃねえよ
305デフォルトの名無しさん:2007/11/07(水) 12:12:17
>>296
n = 3
seq = range(10)
for i in seq[0::n]:
print i
# 0
# 3
# 6
# 9
306デフォルトの名無しさん:2007/11/07(水) 12:21:36
>>305
そうじゃないだろ
307デフォルトの名無しさん:2007/11/07(水) 12:36:02
>>296
個人的には折りたたみジェネレータを作るのがいいんじゃないかと思ってる。
ビルトインでコレって言うのはない気がする

def fold(x, n):
  i = 0
  j = len(x)
  while i < j:
    yield x[i:i+n]
    i += n

for x in fold(range(100), 7):
  print x


297
みたいなseq = seq[4:]なやり方は多分アルゴリズム的に微妙に遅いので、
素直にインデックス計算したほうがいいと思う
308デフォルトの名無しさん:2007/11/07(水) 13:18:00
高々数個のシーケンスを扱う処理に「アルゴリズム的に遅い」もクソもないよな
頭の使い方を考えろwwwwwwwwwww
309デフォルトの名無しさん:2007/11/07(水) 13:25:50
頭を使うと草生やすようになるのかな
310デフォルトの名無しさん:2007/11/07(水) 13:30:22
>>308
>>296のお題は「任意のシークエンス」となっているのに
いつの間に「高々数個」に化けたんだ
311308:2007/11/07(水) 13:33:06
ごめん俺中学生なんだ
312デフォルトの名無しさん:2007/11/07(水) 13:52:50
pythonのソースコードをjavaのソースコードに変換するソフトのホームページ教えてください。
313デフォルトの名無しさん:2007/11/07(水) 14:03:31
www.py2j.com
314デフォルトの名無しさん:2007/11/07(水) 16:16:07
すみません
簡単に理解できます
アレだった…
忘れてください
質問です
h = open(...)
y = h.read()
hをオブジェクトに追加出来るのは知れました
オブジェクトを二桁にしてもPC.壊れ無いですか?
315デフォルトの名無しさん:2007/11/07(水) 16:37:14
お前はまず病院行って薬もらって来い
316デフォルトの名無しさん:2007/11/07(水) 16:48:00
まともな日本語を書けるようにする方が先かと
317デフォルトの名無しさん:2007/11/07(水) 18:08:30
すみません
病院ってなんの事ですか?
中学2年になるし、日本語は喋れます
318デフォルトの名無しさん:2007/11/07(水) 18:35:35
下手な釣り師がいるなwwwwwwwwwwwwwwwwwwwwwwwwww
319デフォルトの名無しさん:2007/11/07(水) 19:00:17
>>317
もうちょとさぁ・・・なんていうかさぁ・・・
Python厨が顔真っ赤にして反論しそうな感じでいかない?
この板ID無いんだしさ
320デフォルトの名無しさん:2007/11/07(水) 19:13:24
暇人は氏ねよw
10000回くらい氏んでいいよ
どうせ暇なんだろwwwwwwwwwwwwwwwwwwwwww
氏んで暇つぶせwwwwwwww
321デフォルトの名無しさん:2007/11/08(木) 10:47:34
list("a b c")
->['1', ' ', '2', ' ', '3']

これを、一発で下記のようにする方法ありますか?
->['1', '2', '3']

join の逆ができればいいのに。。。

322デフォルトの名無しさん:2007/11/08(木) 10:52:50
"1 2 3".split()
323デフォルトの名無しさん:2007/11/08(木) 12:59:27
すみません
質問です
友達の所に来てPHP.教えて貰ってるんだけど
基礎構文て言ってたかな?
それは教えてくれるんだけど
基礎構文に附いて聞くと教えてくれない
どううしてですか?
あ、書き込みも友達のデスクトップ借りています
324デフォルトの名無しさん:2007/11/08(木) 13:51:12
>>> a=['1', ' ', '2', ' ', '3']
>>> filter(lambda b:b != " ",a)
['1', '2', '3']

>>> a=['1', '', '2', '', '3']
>>> filter(None,a)
['1', '2', '3']
325デフォルトの名無しさん:2007/11/08(木) 14:26:06
>>> a=['1', ' ', '2', ' ', '3']
>>> [s for s in a if s.strip()]
['1', '2', '3']
>>> [s for s in a if s != ' ']
['1', '2', '3']
326デフォルトの名無しさん:2007/11/08(木) 15:56:25
お前ら楽しそうだな
327デフォルトの名無しさん:2007/11/08(木) 17:42:39
abcが123になってることはスルーか?
328CERN:2007/11/08(木) 18:03:04
日本Pythonユーザのみなさん、
Pythonチャレンジをやりたい人↓どうぞ
http://test-iq.web.cern.ch/test-iq/step1.php?lang=en
よろしくお願いします。
329デフォルトの名無しさん:2007/11/08(木) 18:11:10
>>323
すれ違い消えろ
330デフォルトの名無しさん:2007/11/08(木) 21:51:44
L = list("a b c")
"".join(L).split(' ')
331デフォルトの名無しさん:2007/11/08(木) 21:56:40
>>>a=['1', ' ', '2', ' ', '3']
>>> re.findall(r'(\b\w+?\b)',"".join(a))
['a', 'b', 'c']
332デフォルトの名無しさん:2007/11/08(木) 22:12:39
list("1 2 3".replace(' ', ''))
333デフォルトの名無しさん:2007/11/08(木) 23:40:15
a=['1', ' ', '2', ' ', '3']
a = a[::2]
334デフォルトの名無しさん:2007/11/09(金) 00:19:54
a = list("1 2 3")
del a[1::2]
335デフォルトの名無しさん:2007/11/09(金) 00:32:12
[x for x in list('1 2 3') if not x.isspace()]
336デフォルトの名無しさん:2007/11/09(金) 01:03:22
やっぱpythonやるなら英語使えないとまずい・・かな?
337デフォルトの名無しさん:2007/11/09(金) 01:16:18
a=['1', ' ', '2', ' ', '3']
filter(lambda x : x != min(a) and x, a)

>>327
次の質問は
list("あ い う") がうまく表示されません
と予想
338デフォルトの名無しさん:2007/11/09(金) 12:13:55
すみません
質問です
中学2年になるので
PHP.
を覚えているのですが?
s = 'I`m a boy'
で読むには問題ないと思うのですが?
此れでは駄目なのですか?
339デフォルトの名無しさん:2007/11/09(金) 12:24:11
私の教え子に…(+ФyФ)!全くを以って無礼な…
        ‘バーカ

>>329 名前:デフォルトの名無しさん :2007/11/08(木) 18:11:10

すれ違い消えろ
340デフォルトの名無しさん:2007/11/09(金) 13:22:03
>>338
俺小学生だけど年下に聞いて恥ずかしくない?
341デフォルトの名無しさん:2007/11/09(金) 14:07:04
すみませんが、質問させてください。
pythonでは多次元配列を扱うときはリストのリストを使いますよね。
[ [1,0,2],[-1,2,3],[5,7,2] ]こんな風に。
リストのリストで、ある要素が何行目に入っているのか調べるにはどうしたらよいでしょうか?

例えば上の場合は「5」を入力すると「3」を返すような。
要素は数字だけに限らず文字列の場合もあります。
どなたか上手い方法を教えてください。お願いします。
342デフォルトの名無しさん:2007/11/09(金) 14:32:22
>>> lst = [ [1,0,2],[-1,2,3],[5,7,2] ]
>>> (lambda x, lst: [x in s for s in lst])(5, lst).index(True) + 1
3

冗談だ。
343デフォルトの名無しさん:2007/11/09(金) 14:57:35
>>341

a=[ [1,0,2],[-1,2,3],[5,7,2] ]

普通(.は半スペね)
for n,l in enumerate(a):
.if 5 in l:
..print n+1

リスト内包大好き
sum([1 for l in a if not 5 in l])+1
344デフォルトの名無しさん:2007/11/09(金) 14:57:42
調べ方がまるでわからないというならご参考に

a=[[1,0,2],[-1,2,3],[5,7,2]]
for x,y in enumerate(a):
    if 5 in y:
        print x+1
345344:2007/11/09(金) 14:59:03
いやん、超かぶった・・・
346343:2007/11/09(金) 15:04:46
スマソ・・・
だが、enumerate 使うのが正しい思考だと確認できてご満悦。
347デフォルトの名無しさん:2007/11/09(金) 15:10:03
条件に合うのを全部求めたいんならfilterかリスト内包
最初の一個ならenumerateって気がする
関数化してもいいかも

def findif(seq, pred):
    for i, x in enumerate(seq):
        if pred(x):
            return i
    return -1
348デフォルトの名無しさん:2007/11/09(金) 15:17:52
>>340 :デフォルトの名無しさん:2007/11/09(金) 13:22:03

俺小学生だけど年下に聞いて恥ずかしくない?


すみません
私の先生が小学生が教えられる言語だから小学生に聞けと言っています
349デフォルトの名無しさん:2007/11/09(金) 15:29:26
>>320 :デフォルトの名無しさん:2007/11/07(水) 19:13:24
暇人は氏ねよw
10000回くらい氏んでいいよ
どうせ暇なんだろwwwwwwwwwwwwwwwwwwwwww
氏んで暇つぶせwwwwwwww
350デフォルトの名無しさん:2007/11/09(金) 15:44:11
>>345 名前:344 :2007/11/09(金) 14:59:03
いやん、超かぶった・・・
351デフォルトの名無しさん:2007/11/09(金) 15:44:35
>>338
PHPとPythonはまったく別の言語です
352デフォルトの名無しさん:2007/11/09(金) 15:53:15
>>338
 「ネット関連」カテゴリー
のWebProg板 に
PHP.
関連のスレッドが?
たくさんあるので、
そっちで聞いたほうが
丁寧に教えてくれると思うよ
353デフォルトの名無しさん:2007/11/09(金) 16:13:54
>>343のリスト内包って回答として正しい?
354デフォルトの名無しさん:2007/11/09(金) 16:22:52
python で試せばいいだろ
355デフォルトの名無しさん:2007/11/09(金) 17:20:55
>>343-347
ありがとうございます。今までリスト内包記はめんどくさそうなので敬遠してました。
勉強します。
356デフォルトの名無しさん:2007/11/09(金) 17:22:28
>>353
条件に適合する全てのインデクスのリストが欲しいんなら、俺ならこう書く
seq = [[1,2,3],[4,5,6],[7,8,9]]
found = [i for i, x in enumerate(seq) if 5 in seq]
357デフォルトの名無しさん:2007/11/09(金) 17:30:31
教え子に見せる前に確認…(+ФyФ)?斯様な知識を持ち合わせるとあの様に…

>>352 名前:デフォルトの名無しさん :2007/11/09(金) 15:53:15
>> 338
 「ネット関連」カテゴリー
のWebProg板
358デフォルトの名無しさん:2007/11/09(金) 17:36:40
>>356 thx
最後のseqはxかな?
でも簡潔でいいねそれ
359デフォルトの名無しさん:2007/11/09(金) 17:43:48
>>358
スマソ間違えた><
360デフォルトの名無しさん:2007/11/09(金) 17:55:23
リスト内包って癖になるよね。
最近ファイルから読み込むときも無意味に

allist=[l for l in sys.stdin]
for l in allist:
...
って書いちゃう。イミネー
361デフォルトの名無しさん:2007/11/09(金) 18:22:20
一般化してみた。

def search(mtx, cmp_v, idx=0):
    if isinstance(mtx, list):
        hitidx = []
        for rowidx,item in enumerate(mtx):
            srchidx = search(item, cmp_v, rowidx)
            if isinstance(item, list):
                tmp = []
                for i in srchidx:
                    if isinstance(i, list):
                        tmp.append([rowidx]+i)
                    else:
                        tmp.append([rowidx]+[i])
                srchidx = tmp
            else:
                srchidx = srchidx
            hitidx = hitidx + srchidx
        return hitidx

    else:
        if callable(cmp_v) and cmp_v(mtx) or cmp_v == mtx:
            return [idx]
        else:
            return []
362デフォルトの名無しさん:2007/11/09(金) 18:24:06
a = [0, 5, 2, 3, 4, 5, 4, 2, 9, 5]
b = [[ 1,5,5],
     [-1,2,5],
     [ 5,7,2],
     [ 0,1,2],
     [ 8,5,0]]
c = [[ 1,5,5],
     [3,4],
     [4,8,[0,2,5],2],
     [5,4,7,2]]
d = [[1,5,5],
     [3,4],
     [4,8,[[0,8,7,6,5],2,5],2],
     [5,4,7,2]]

>> print search(a, 5)
[1, 5, 9]
>> print search(b, 5)
[[0, 1], [0, 2], [1, 2], [2, 0], [4, 1]]
>> print search(c, lambda x: x==5)
[[0, 1], [0, 2], [2, 2, 2], [3, 0]]
>> print search(d, lambda x: x==5)
[[0, 1], [0, 2], [2, 2, 0, 4], [2, 2, 2], [3, 0]]
363デフォルトの名無しさん:2007/11/09(金) 20:40:50
リスト内包はめったに使わない。
ジェネレータ式なら頻繁に使う。
364デフォルトの名無しさん:2007/11/10(土) 01:04:44
>>361
そういうのはジェネレータで作らないと、調べたいリストがでかいときに不便になる。
あと、再帰してるのに3回もlist判定をするのはなんかおかしいと思う
365デフォルトの名無しさん:2007/11/10(土) 01:28:19
def search(x, test, index=()):
  if isinstance(x, list):
    for n, y in enumerate(x):
      for i in search(y, test, index+(n,)):
        yield i
  elif x == test or (callable(test) and test(x)):
    yield index

...
>>> d=[[1,5,5],[3,4],[4,8,[[0,8,7,6,5],2,5],2],[5,4,7,2]]
>>> list(search(d, 5))
[(0, 1), (0, 2), (2, 2, 0, 4), (2, 2, 2), (3, 0)]
366デフォルトの名無しさん:2007/11/10(土) 11:33:34
perlのCrypt::RC4 モジュールみたいな

$ref2 = Crypt::RC4->new( $passphrase );
$decrypted = $ref2->RC4( $encrypted );

pythonこのような可逆暗号モジュールってあるのでしょうか。
367デフォルトの名無しさん:2007/11/10(土) 11:37:11
解けない暗号に意味はあるんでしょうか
368デフォルトの名無しさん:2007/11/10(土) 11:56:16
>>366
opensslの実装に使われてるはずなんだが、標準では
暗号モジュールとしての機能がエクスポートされてないようだねえ

非標準のは探せば色々あると思うよ
python cryptography
とかでぐぐれ
369デフォルトの名無しさん:2007/11/10(土) 12:08:43
>>368
ありがとうございます。ぐぐります。
370デフォルトの名無しさん:2007/11/10(土) 15:32:18
pycrypto-2.0.1.tar.gz
371デフォルトの名無しさん:2007/11/10(土) 19:20:34
java勉強したらpython使う理由が見当たらなくなってしまったのですが
pythonの利点ってなんですか?
372デフォルトの名無しさん:2007/11/10(土) 19:33:57
>>371
むしろ、そこまでしてPythonを使おうとする理由は何ですか?
373デフォルトの名無しさん:2007/11/10(土) 19:51:24
pythonとjavaを同時に利用してアプリケーションを作ることはできますか?
374デフォルトの名無しさん:2007/11/10(土) 19:52:21
>>371
python勉強したらjava使う理由が見当たらなくなってしまったのですが
javaの利点ってなんですか?
375デフォルトの名無しさん:2007/11/10(土) 19:54:45
>>373
つ jython
マルチプロセスのサーバアプリのようなものなら、別にどんな言語の
組み合わせだろうと可能だけどね。
376デフォルトの名無しさん:2007/11/10(土) 19:55:54
pythonってJavaと比べてどれくらい速度遅いの?
BitTorrentとか使うとJavaよりよさそうと思えるけど。
377デフォルトの名無しさん:2007/11/10(土) 19:57:10
そう思っていた時期が俺にもありました
378デフォルトの名無しさん:2007/11/10(土) 20:05:42
>>376
ベンチマークサイトなんていくらでもあるだろ。
単純に言語自体の機能を使って計算能力を比較したら、お話にならないほど
Javaのが速い。

とは言っても、I/O律速になるタイプのプログラム(ネットワークやらDBやら
を使うようなプログラムは大体そうだ)ではその違いは大した問題ではないし、
メインのボトルネックになる部分をCで書かれたライブラリに丸投げできるなら、
同じく大した問題ではない。
379デフォルトの名無しさん:2007/11/10(土) 20:09:02
でもさ
http://ja.uncyclopedia.info/wiki/Python
見るとPythonのほうが1000倍速いってよ!
380デフォルトの名無しさん:2007/11/10(土) 20:13:49
Pythonで正規表現とかが使いやすい分、気楽に使っちゃうと遅くなっちゃうのよね。
そんなのもあるんじゃない?
381デフォルトの名無しさん:2007/11/10(土) 20:19:17
>>379
俺そこ大好き。愛してる。
382デフォルトの名無しさん:2007/11/10(土) 20:30:06
みんなだまされるな
アンサイクロペディアになってるぞ
383デフォルトの名無しさん:2007/11/10(土) 20:31:52
でも書いてあることは正しいからなぁ
384デフォルトの名無しさん:2007/11/10(土) 20:32:37
>>379
むしろJavaにワロタw
385デフォルトの名無しさん:2007/11/10(土) 20:44:04
>>379
この文章書いた人天才w
386デフォルトの名無しさん:2007/11/10(土) 21:06:40
それ書いたの新山さんでしょ
387デフォルトの名無しさん:2007/11/10(土) 21:19:24
新山さんってなに?どういうやつ?
388デフォルトの名無しさん:2007/11/10(土) 21:23:17
新山祐介でぐぐれ
389デフォルトの名無しさん:2007/11/10(土) 21:24:29
>>379
JavaとPerlの特徴がマッチしすぎだな
390デフォルトの名無しさん:2007/11/10(土) 23:44:32
>>388
http://www.math.tohoku.ac.jp/~kuroki/keijiban/a0060.html

こんなのが出てきたのだが。
391デフォルトの名無しさん:2007/11/11(日) 08:19:39
>>390
何か別の人っぽいな

新山ってpygame実況中継の人だったんだね
392デフォルトの名無しさん:2007/11/11(日) 09:34:16
>>391
その実況中継戸やらも中途半端だし
390みたいなパーソナリティ、日記を見てても愚痴ばっかり
リアルでは絡みたくない人種だなwwww
393デフォルトの名無しさん:2007/11/11(日) 11:02:17
>>392
それまでpython知っててもさわる気になれなかったけど。
pygame実況中継が俺にとってのきっかけになった。
大変感謝している。
394デフォルトの名無しさん:2007/11/11(日) 11:41:02
>>379
わろた。しかしこれを書いてる人の労力がもったいないような。
395デフォルトの名無しさん:2007/11/11(日) 12:01:22
もったいないことに労力をつぎ込める奴ってのは
労力が余ってる奴だから大丈夫。
396デフォルトの名無しさん:2007/11/11(日) 12:09:00
とあるソースでこんな風に書いてあるんですが、buffer()を使う意図
は何なんでしょうか?単にos.write()で全バイト書き込まれるのでは
ないのでしょうか?

def writeall(fd, data):
 while len(data) != 0:
  n = os.write(fd, data)
  data = buffer(data, n)
397デフォルトの名無しさん:2007/11/11(日) 12:29:15
>>396
os.write()はシステムコールを直接呼ぶから、一般には1度の呼び出しで
全バイト書き込まれることは保障されていない。特にfdがソケットであったり
するような場合は、partial writeはごく普通に発生する。

本当はEINTRの場合の処理もやったほうがいい筈だが、割り込まれた時に
システムコールのwrite()を自動的に再送するかどうか、といった挙動が
Unixでもシステムによって様々なので、移植性のあるコードを書くのは
難しいかもしれん。
398デフォルトの名無しさん:2007/11/11(日) 13:15:12
C:/app/foo/main.py の中から C:/app/foo/db/data.dat にファイルアクセスしようとして、
open('db/data.dat') と書いてみたのですが、'db/data.dat'をmain.pyを実行したディレクトリを基点とした
相対パスと解釈されてしまうらしく、意図どおりの動作をしてくれません。

foo ディレクトリ以下をコピーさえすれば、main.py がどのディレクトリパス上にあっても
使用できるようにしたいため、open() に渡すパスをフルパスにはしたくありません。
何かよい方法はないでしょうか?
399デフォルトの名無しさん:2007/11/11(日) 13:32:07
setuptools の pkg_resources.resource_stream を使いましょう
__file__ は zipimport できなくなるのでオススメしない
400デフォルトの名無しさん:2007/11/11(日) 14:49:23
scribesの機能貧弱すぎて萎えた
やっぱemacs
401396:2007/11/11(日) 15:11:25
>>397 どうもありがとうございます。
402デフォルトの名無しさん:2007/11/11(日) 19:12:11
>>390
しんやまさんは昔から香ばしい人だったんだな(www
403デフォルトの名無しさん:2007/11/11(日) 23:18:56
C++勉強したらpython使う理由が見当たらなくなってしまったのですが
pythonの利点ってなんですか?
404デフォルトの名無しさん:2007/11/11(日) 23:27:30
おもしろくpythonの利点を聞きたくなるには何を勉強すればいいんですか。
405デフォルトの名無しさん:2007/11/11(日) 23:32:01
>404
Lispなど勉強されては?
Lispを極めれば他の言語など無用の長物にございまするよ
406デフォルトの名無しさん:2007/11/11(日) 23:40:09
407デフォルトの名無しさん:2007/11/12(月) 00:01:22
ブラジリアン柔術勉強したらpython使う理由が見当たらなくなってしまったのですが
pythonの利点ってなんですか?
408デフォルトの名無しさん:2007/11/12(月) 00:19:18
>>407
ブラジリアンが気に入ったのならLuaにでもしとけ
409デフォルトの名無しさん:2007/11/12(月) 00:50:25
クラスインスタンスって結構メモリ食いますかね?食いますよね?

def sample1():
  for x in range(1000000):
    ary.append(DummyClass1('TestTest%09d' % (x)))
  print "last"
def sample2():
  for x in range(1000000):
    ary.append(DummyClass2('TestTest%09d' % (x)))
  print "last"
def sample3():
  for x in range(1000000):
    ary.append('TestTest%09d' % (x))
  print "last"
sample1()
time.sleep(5)

DummyClass1, DummyClass2 ともに引数の値をインスタンス変数に渡すだけですが、
DummyClass2 のほうでは10個以上のメソッドを作ってあります。
今編集中のプログラムに上記と似たような箇所があり、(実際はループも引数ももっと意味のあるものですが)
クラスの処理がクラスメソッドでなく関数で行われていたためクラスに移動しようかと思いましたが、
クラスのメソッドの数で更にメモリを使うものかと思って上記のようなものを作った次第です。

タスクマネージャで見た結果では sample1(), sample2() が250MB超えるのに対して sample3() は80MB程度で済みます。
できれば今のままクラスで扱いたいと思っていましたが、こんな差が出るなら見直しは必要かと思います。
オプションか何かでクラスインスタンスの使うメモリの量を減らすことってできませんかね?
410デフォルトの名無しさん:2007/11/12(月) 00:59:47
>>409
新クラスか旧クラスかで全然違うと思うけど
411デフォルトの名無しさん:2007/11/12(月) 01:00:56
>>409
重要なのはsample1とsample2の差なんじゃないの?
sample3が小さいのは当たり前の話
412デフォルトの名無しさん:2007/11/12(月) 01:06:47
100万インスタンスで+200MB弱なら1インスタンス200Bytes未満。
それっとわりと優秀じゃんとか思った。
(仮想メモリサイズじゃなくてメモリ使用量見てるとかかな)

例示のように結果としてインスタンスを保持する必要があるなら
メモリ使うのはしょうがないけど
メソッドの返り値だけほしいならコーディングが悪いな。
413デフォルトの名無しさん:2007/11/12(月) 02:28:09
>>410
object継承してるんで新クラスですかね。
でも上の例だと継承してるほうが20MBほど軽くなってるみたいです。

>>411
その通りなんですが、効果があるなら配列&辞書にしてしまってもいいかなと。
コードは多少汚くなりますが、今のクラスでは特別な処理はしてないんで軽量化も狙えると思いまして。

>>412
最大メモリ使用量見てました。

クラスへのメソッド追加はメモリ使用量に殆ど関係ないようなので、
当初の目的通りの修正を入れたあと状況を見て作り直そうかと思います。
414デフォルトの名無しさん:2007/11/12(月) 05:10:19
wxPythonのScintillaベースバージョンをあげてくれないかな。
そうすればIMEの使い勝手がよくなるのに。
415デフォルトの名無しさん:2007/11/12(月) 05:43:21
>>398
import os
datafile = os.path.join(os.path.dirname(__file__), 'db/data.dat')
でどうでしょう?
416デフォルトの名無しさん:2007/11/12(月) 05:58:14
>>409
この数値を信用するとして、sample1()とsample2()は100万個のオブジェクトの配列、sample3()は100万個の文字列の配列だから
文字列1コあたり 80MB / 1,000,000コ = 80byte/コ
オブジェクトのほうは 250MB / 1,000,000コ = 250byte/コ
オブジェクトはインスタンス変数として文字列を含んでいるからそれを除いても 250 - 80 = 170byte/コ
配列のメモリ消費量を考慮していない大雑把な計算だけど、こんなものではないの?減らす方法はなさげ。
インスタンス変数が文字列ひとつだけで、大量のオブジェクトを生成し、メモリも節約したいということなら、クラスを使わないという選択肢はありでしょう。
417デフォルトの名無しさん:2007/11/12(月) 06:18:55
>>409
rangeだけで相当メモリ食ってそうだな
418デフォルトの名無しさん:2007/11/12(月) 07:23:24
(python起動) # <= 1.7M
a=range(1000000) # <= 17M
a=['TestTest%09d'%x for x in range(1000000)] # <= 66M
class X:
  def __init__(self,x): self.x=x
a=[X('TestTest%09d'%x)for x in range(1000000)] # <= 242M

って感じだった・・・
ちなみにニュースタイルクラスにしてもサイズはほぼ変わらなかった(1M差以内)
419デフォルトの名無しさん:2007/11/12(月) 08:03:24
>>417
PythonのGCはreference count方式だから、range() がつくるlistはすぐに解放されるため、計測するときにはでてこないと思う。
xrange()にかえても結果は一緒だよ。この場合は。
420デフォルトの名無しさん:2007/11/12(月) 10:10:57
python勉強したらC++使う理由が見当たらなくなってしまったのですが
C++の利点ってなんですか?
421デフォルトの名無しさん:2007/11/12(月) 14:20:41
>>420
バカには使えないところ
422デフォルトの名無しさん:2007/11/12(月) 16:04:09
速い
423デフォルトの名無しさん:2007/11/12(月) 17:26:50
動的言語と静的言語比較してもなぁw
確かにバカには使えないところ。ってのは面白い。間違ってないよw
424デフォルトの名無しさん:2007/11/12(月) 17:38:49
動的言語でもバカはバカなりにしか使えません
425デフォルトの名無しさん:2007/11/12(月) 17:56:48
python勉強したらRuby使う理由が見当たらなくなってしまったのですが
Rubyの利点ってなんですか?
426デフォルトの名無しさん:2007/11/12(月) 17:59:37
入門本が多い
427デフォルトの名無しさん:2007/11/12(月) 18:06:16
バカでも使えるところ
428デフォルトの名無しさん:2007/11/12(月) 18:37:22
RailsがJ2EEやその他の何じゃもんじゃに対して
いかに便利かを鼻息荒く力説できる

YARVキタコレとか言える
429デフォルトの名無しさん:2007/11/12(月) 19:39:52
import re
import urllib

for a, b, c in re.findall('(.*)(p|P)ython(.*)', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()): print a + b + 'ython' + c
430デフォルトの名無しさん:2007/11/12(月) 20:11:39
バカはバカなりに使えるのが素晴らしいんだよpython。
バカにc++触らせたらとんでもないことになる。
本当にpythonは素晴らしい。



別にrubyでもいいんだけどさ
431デフォルトの名無しさん:2007/11/12(月) 20:20:05
C++はコンパイラに大量の仕事を与えて「このドジでのろまなカメめ」とか言って
言葉攻めにしてみたり
半年前に自分で書いた<>とか使いまくったソースの意味がさっぱり分からなくて
うろたえたりとかして遊べるよ
432デフォルトの名無しさん:2007/11/12(月) 21:36:02
世の中に自分の能力以上に実力を水増ししてくれるような道具なんてないよ。
PythonだろうがRubyだろうがC++だろうがHSPだろうがね。
> バカはバカなりに使えるのが素晴らしいんだよpython。
ユーザーにこういう勘違いさせてしまうんだったらPythonは糞言語の一角だな。
433デフォルトの名無しさん:2007/11/12(月) 21:42:49
意気揚々と的外れなこと書かれてもなー。
434デフォルトの名無しさん:2007/11/12(月) 21:43:17
バカがバカなりに使ってるのに実力水増しなのか
435デフォルトの名無しさん:2007/11/12(月) 22:15:18
根本的なところで誤読してるんだろう、たぶん。
436デフォルトの名無しさん:2007/11/12(月) 22:19:21
プログラミング言語の前に自然言語を(ry
437デフォルトの名無しさん:2007/11/12(月) 22:31:00
>>430
バカは面白いな(wwwwwwwwwww
438デフォルトの名無しさん:2007/11/12(月) 22:51:53
PythonとかRubyとかPerlが真価を発揮するのは,スキルの高い少数精鋭のチームが開発に使ったときだと思う。
430みたいなバカのいる大集団の開発チームではJavaとか使った方がいいぞ。
439デフォルトの名無しさん:2007/11/12(月) 23:01:17
なんでPerlが入ってるのかと小(ry
440デフォルトの名無しさん:2007/11/12(月) 23:13:02
Perl使いにもオールドタイプとニュータイプがいてだな
441デフォルトの名無しさん:2007/11/12(月) 23:13:45
>>438
賢いこと言えないハンデを単語レベルのトゲでカバーしても
あんまりかっこよく見えないですよ
442デフォルトの名無しさん:2007/11/12(月) 23:20:56
>>438
バカは面白いな(wwwwwwwwwww
443デフォルトの名無しさん:2007/11/12(月) 23:22:31
バカって怒った方が面白いんだなwwwwwwwwwwww
444デフォルトの名無しさん:2007/11/12(月) 23:23:20
>>441
バカだからそんな反論しかできないんですね.ご愁傷様です...
445デフォルトの名無しさん:2007/11/12(月) 23:36:20
  _  ∩ 
( ゚∀゚)彡 おっぱい!おっぱい! 
 ⊂彡 
446デフォルトの名無しさん:2007/11/12(月) 23:37:46
>>444
441が「論に対して反論してる」ように見えてるのは君だけだと思うよ。
他の人には「ヒステリーをたしなめてる」ように見えているもの。
447デフォルトの名無しさん:2007/11/12(月) 23:41:45
そうだね
バカ呼ばわりされたら相手をたしなめないと気が済まないよね
もっともなことだ
448デフォルトの名無しさん:2007/11/12(月) 23:43:29
バカはバカなりにwwwwwwwwwwwwwwww
449デフォルトの名無しさん:2007/11/12(月) 23:45:06
>>447
喧嘩売られたからって全力で買ってんじゃないって言ってんだって。
450デフォルトの名無しさん:2007/11/12(月) 23:48:10
>>449
449(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
451デフォルトの名無しさん:2007/11/12(月) 23:50:08
>>447
んー、それは熱くなっちゃってる人の発想だと思うよ。
一所懸命逆撫でを頑張ろうとするのはわかるけど(今さら冷静になると負けた気になるものね)、
あんまり意味無いよ。他の人喧嘩する気無いし。
452デフォルトの名無しさん:2007/11/12(月) 23:52:22
447が「熱くなっちゃってる人」ように見えてるのは君だけだと思うよ。
他の人には「バカをからかって遊んでいる」ように見えているもの。
453デフォルトの名無しさん:2007/11/12(月) 23:52:54
  _  ∩  
( ゚∀゚)彡 おっぱい!おっぱい!  
 ⊂彡  
454デフォルトの名無しさん:2007/11/12(月) 23:55:05
>>452
Pythonとちっとも関係ない話題な時点で大差ないだろそれは。
暇つぶしならMixiでやってろ。
455デフォルトの名無しさん:2007/11/12(月) 23:55:32
なんか楽しそうな事してんなぁw
仕事でストレス溜まってんのか?おっさんにいってみろw
456デフォルトの名無しさん:2007/11/12(月) 23:57:00
なんだなんだぁ?俺も混ぜてYO
457デフォルトの名無しさん:2007/11/12(月) 23:57:50
  _  ∩   
( ゚∀゚)彡 おっぱい!おっぱい!   
 ⊂彡   
458デフォルトの名無しさん:2007/11/12(月) 23:58:46
>>453
ところでオパーイはどこにあるのだ?
459デフォルトの名無しさん:2007/11/12(月) 23:58:50
>>455
溜まってるのかもねえ。なんかオウム返しとか始めちゃってるし。
460デフォルトの名無しさん:2007/11/12(月) 23:59:33
       _  ∩  
    ( ゚∀゚)彡 PyPy!PyPy!  
     ⊂彡    

461デフォルトの名無しさん:2007/11/12(月) 23:59:53
>>460
やっと理解できたw
462デフォルトの名無しさん:2007/11/13(火) 00:00:22
>>452
ごめん俺他の人だけど超必死にしか見えないw


このレスに対するキャラ付けもだいたい読めるから期待してるw
463デフォルトの名無しさん:2007/11/13(火) 00:05:41
すげえ(w
464デフォルトの名無しさん:2007/11/13(火) 00:06:56
  _  ∩    
( ゚∀゚)彡 おっぱいそん!おっぱいそん!    
 ⊂彡    
465デフォルトの名無しさん:2007/11/13(火) 00:08:12
もうやめてええええええええええええええ
466デフォルトの名無しさん:2007/11/13(火) 00:09:28
>>462
>他の人だけど

ウンウンw

>キャラ付けもだいたい読めるから

で?w
467デフォルトの名無しさん:2007/11/13(火) 00:17:58
誰かいないの?誰か返事をしておくれよおおおおお
468デフォルトの名無しさん:2007/11/13(火) 00:20:23
>>420からとりあえずここまであぼーん
469デフォルトの名無しさん:2007/11/13(火) 00:22:28
ID出ないのをこれほど残念に思ったのは久しぶりだ。絶対面白いのに
470デフォルトの名無しさん:2007/11/13(火) 01:01:20
バカ寝たのか?wwwww
471デフォルトの名無しさん:2007/11/13(火) 06:42:44
pythonお勉強したらニート3年目の僕にも就職できますか?
472デフォルトの名無しさん:2007/11/13(火) 06:57:01
勉強しなくていいから履歴書書け
473デフォルトの名無しさん:2007/11/13(火) 08:34:15
おはようございます
今日もがんばって煽ってください
474デフォルトの名無しさん:2007/11/13(火) 08:48:56
はい分かりました
今日もよろしくお願いします
475デフォルトの名無しさん:2007/11/13(火) 09:30:32
ま、PythonよりはRubyだな。
476デフォルトの名無しさん:2007/11/13(火) 10:36:22
test
477デフォルトの名無しさん:2007/11/13(火) 10:37:50
>>429
やや短く

import re,urllib

for x in re.findall('(.*(P|p)ython.*)',urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()):print x[0]
478デフォルトの名無しさん:2007/11/13(火) 13:48:12
同じ結果だけ求めるなら
for x in re.findall('.*python.*', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read(), re.I): print x
のほうが分かりやすいような。
479デフォルトの名無しさん:2007/11/13(火) 17:59:45
>>440
Perlほど人間性が露になる言語も珍しいよなw
480デフォルトの名無しさん:2007/11/14(水) 00:13:01
>>477-478
初心者なんですけど
得られた値がunicodeかどうかって調べる方法あります?
それともそんなの気にしなくてもいいんですか?
481デフォルトの名無しさん:2007/11/14(水) 00:15:02
>>478
for x in re.findall('.*ython.*', urllib.urlopen('http://pc11.2ch.net/tech/subject.txt').read()): print x
こうしないと同じ結果にならないケースが出てくると思う
482デフォルトの名無しさん:2007/11/14(水) 00:19:33
しかしJythonも引っかかる
483デフォルトの名無しさん:2007/11/14(水) 00:26:12
その方が有難いかも
484デフォルトの名無しさん:2007/11/14(水) 00:33:45
>>480
s = "foo"
print isinstance(s, str) #=> True
s = u"foo"
print isinstance(s, unicode) #=> True
485デフォルトの名無しさん:2007/11/14(水) 01:24:49
>>480
unicode かどうかは大いに気にする必要がある。
うっかり str と混ぜると暗黙の unicode → str 変換が起こって
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
みたいなエラーが出る羽目になる。要注意。
486デフォルトの名無しさん:2007/11/14(水) 02:56:35
>>485

>>> u"うにこーど" + "ばいとれつ"
u'\u3046\u306b\u3053\u30fc\u3069\u3070\u3044\u3068\u308c\u3064'

起こらない。
487デフォルトの名無しさん:2007/11/14(水) 03:46:41
起こった。

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> u"うに" + "ばい"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0x82 in position 0: ordinal
not in range(128)
>>> "うに" + "ばい"
'\x82\xa4\x82\xc9\x82\xce\x82\xa2'
>>> u"うに" + u"ばい"
u'\u3046\u306b\u3070\u3044'
>>>

488デフォルトの名無しさん:2007/11/14(水) 05:28:09
>>484
ありがとうございましt
489デフォルトの名無しさん:2007/11/14(水) 05:33:16
file = u'ほげ.txt'
fullpath = u'%s/%s' % (os.path.abspath(os.path.dirname(sys.argv[0])), file)

みたいな書き方をしたとき、
実行ファイルの場所のパス名がすべて半角英数なら問題なさそうなのですが、
日本語が含まれていると、

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

が出てきてしまいます。
490デフォルトの名無しさん:2007/11/14(水) 05:34:10
Python 2.5.1 です。
491デフォルトの名無しさん:2007/11/14(水) 05:44:23

path = os.path.abspath(os.path.dirname(sys.argv[0]))
print isinstance(path, str)
print isinstance(path, unicode)

if isinstance(path, str): path = unicode(path, 'mbcs')
file = u'デスマ.txt'
fullpath = u'%s/%s' % (path, file)
print fullpath

とりあえずこれでどちらでも正常に動くことが確認出来ました。
492デフォルトの名無しさん:2007/11/14(水) 07:51:02
本物のPythonプログラマは日本語を使わない
493デフォルトの名無しさん:2007/11/14(水) 11:55:13
string <-> unicode変換でasciiコーデックが使われてしまう奴は、
sitecustomize.pyに
sys.setdefaultencoding('cp932')
とか記述汁
詳細はsitecustomize.pyでぐぐれ
494デフォルトの名無しさん:2007/11/14(水) 12:28:35
僕は中学二年生なんですが。

>sitecustomize.pyに
>sys.setdefaultencoding('cp932')

とやったら文字が化け化けになっちゃいました。
僕は中学二年生だけどMac Book Proに4Gバイトメモリを載せて使っています。
家がお金持ちです。

アドバイスください。
495デフォルトの名無しさん:2007/11/14(水) 12:36:40
'cp932'てのはただの例だ。環境に応じて適切なエンコーディング名を指定しろ。
utf-8とかeuc-jpとかな
496デフォルトの名無しさん:2007/11/14(水) 12:36:46
ところでみんな今日の昼飯はなに?
おれは親子丼だよ
497デフォルトの名無しさん:2007/11/14(水) 13:53:16
おいらはカレーライスだよー
498デフォルトの名無しさん:2007/11/14(水) 15:17:23
スレの空気がアレだが、無視して質問させてください。
浮動小数点の精度の悪さにムカついているのですが、分数をちゃんと扱えるライブラリはないですか?
499デフォルトの名無しさん:2007/11/14(水) 15:30:51
>>498
精度を問題にするならDecimalモジュールをどうぞ
http://www.python.jp/doc/2.4/lib/module-decimal.html
分数を扱うモジュールは標準ではなさそう。「python fraction」でぐぐると
http://www.spiritone.com/~english/code/fraction.py
というのがあった。
もしかしたら科学技術計算用のモジュールが役に立つかも。
500デフォルトの名無しさん:2007/11/14(水) 15:40:55
「精度」「ちゃんと」
なんか理解してない気がするな
501デフォルトの名無しさん:2007/11/14(水) 16:10:49
pythonって日本語処理が苦手ってどっかで多々見たんですがどうなんですか?
502デフォルトの名無しさん:2007/11/14(水) 16:14:02
>>501
別に苦手ってほどのものでもないと思うが。
ちゃんとUnicodeに対応していて、それが使いにくいわけでもない。

個人的には、Javaよりは落ちる。Perlよりはマシ。という印象。
503デフォルトの名無しさん:2007/11/14(水) 18:48:42
Python3000になれば、今より良くなる(はず)

現状でもちゃんと調教すれば素直なんだけど、それがめんどくさい。
504デフォルトの名無しさん:2007/11/14(水) 19:09:46
Pythonでマルチバイト文字列をうまく扱えない人は、頭の悪い人だと思います。
505デフォルトの名無しさん:2007/11/14(水) 20:00:15
僕が一番Pythonをうまく使えるんだ!
506デフォルトの名無しさん:2007/11/14(水) 20:17:26
だが日本じゃあ二番目だ
507デフォルトの名無しさん:2007/11/14(水) 20:17:30
みんなsitecustomize.pyをいじる派?

ひょっとして、人に渡すスクリプトには、
assert sys.getdefaultencoding() == 'cp932'
とか書くのだろうか。
508デフォルトの名無しさん:2007/11/14(水) 20:29:03
入出力には codecs を通す。

print は本番コードには使わない。
動作をちょっと見たりとか、
デバッグの時だけしか使わんから無問題。
509デフォルトの名無しさん:2007/11/14(水) 20:55:12
副作用ありそうで怖くていじれない派

デフォルトのエンコーディングが ascii であることを前提として
書かれているモジュールなんていくらでもありそうだし
510デフォルトの名無しさん:2007/11/14(水) 22:04:21
>500 〜 >501 の流れで「精度」とか「ちゃんと」を
pythonが解釈して処理する話かとオモタ…
511デフォルトの名無しさん:2007/11/14(水) 22:15:43
Windows使ってるけど
sys.setdefaultencoding('utf-8')
にしてるよ
512デフォルトの名無しさん:2007/11/14(水) 23:33:56
>500

まぁ、文系出身のオレなので、理解してないかもしれないが、理解しているかもしれない。
単に分数で厳密に扱える量を含む行列を1000乗ぐらいしたいだけなんだがな‥‥‥。

>499

ありがと。Numeric.dot 相当は自分で書かなきゃだめかね...
513デフォルトの名無しさん:2007/11/15(木) 00:37:56
514デフォルトの名無しさん:2007/11/15(木) 00:56:13
515デフォルトの名無しさん:2007/11/15(木) 01:30:11
>>509
asciiならまだまし
pymacsなんてLatin-1前提に作ってたからsetup.pyすら動かなかったwww
516デフォルトの名無しさん:2007/11/15(木) 02:22:02
517デフォルトの名無しさん:2007/11/15(木) 06:25:01
>>492
賢いこと言えないハンデを単語レベルのトゲでカバーしても
あんまりかっこよく見えないですよ
518デフォルトの名無しさん:2007/11/15(木) 06:37:20
単に「本物のプログラマはPASCALを使わない(Real Programmers Don't Use PASCAL)」のパロディだろ
出来がいいかはともかく
519デフォルトの名無しさん:2007/11/15(木) 18:41:54
本物のプログラマはプログラムを書かない
520デフォルトの名無しさん:2007/11/15(木) 18:58:51
>>519
矛盾してるがなwww
521デフォルトの名無しさん:2007/11/15(木) 20:24:15
プログラムを出力するプログラムを書くのだよ
522デフォルトの名無しさん:2007/11/15(木) 21:37:50
>>520
や、意外と矛盾しないんじゃないか?
「無駄な車輪の再開発を避ける」って意味なら。
523デフォルトの名無しさん:2007/11/15(木) 22:17:09
>>522
たしかに。
同じものを延々と作ってるうちの会社の某氏にいってやりたいw
524デフォルトの名無しさん:2007/11/16(金) 01:14:40
>>523
直接言えよこの社内ヒキコモリめwwwwwwwwwww
言えないなら氏ねよM字ハゲwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
525デフォルトの名無しさん:2007/11/16(金) 01:25:25
突然変なのわいたな
526デフォルトの名無しさん:2007/11/16(金) 02:09:41
pdb で gdb みたく SIGINT (Ctrl-C) を受け取ったらプログラム止めるとかする方法はないのでしょうか。

gdb だと
http://flex.phys.tohoku.ac.jp/texi/gdb-j/gdb-j_16.html#SEC23

$ handle SIGINT stop

とかしておけばできた覚えがあるのですが。

527デフォルトの名無しさん:2007/11/16(金) 12:13:18
>>525
なんか心当たりがあったんじゃない?
528デフォルトの名無しさん:2007/11/16(金) 22:16:28
静的メソッドを使う前にクラスを初期化したいのですが
メソッドを呼び出す前に初期化を行う(C#の静的コンストラクタ)みたいなものって作れますか?
529デフォルトの名無しさん:2007/11/16(金) 22:21:40
>>528
自己レス

class Hoge:
の下にそのまま処理を書いていけばいいだけだった
530デフォルトの名無しさん:2007/11/16(金) 22:53:48
バカな発言だがAndroid上でJythonが使えたりとかあるのかねえ。
531デフォルトの名無しさん:2007/11/17(土) 00:38:08
pythonでMS Ofiiceは操作できますが
他に作図ソフトでpythonで操作しやすいインターフェースの充実した
ソフトはないでしょうか?
図はtexに貼り付けるので texのままかepsで出力できるとうれしいです
532デフォルトの名無しさん:2007/11/17(土) 02:03:02
OfficeファミリーだけどVisioは?
epsで出せたかしらんけど、ダミーのPSプリンタセットアップしてそこへ印刷掛けて
出力をファイルにできればPostScriptファイルは得られるでそ。
533デフォルトの名無しさん:2007/11/17(土) 03:02:52
>>531
OOo Draw
534デフォルトの名無しさん:2007/11/17(土) 05:50:23
>>531
Inkscape
535デフォルトの名無しさん:2007/11/17(土) 10:36:36
>>531
Pythonで操作しやすいって、Pythonでお絵かきしたいってことじゃなくて
Pythonでドローソフトやのマクロみたいなのを書きたいってこと?
使ったことは無いが、Python製のSkencilというドローソフトもあるよ

ファイルのフォーマットは、pstoeditで変換すれば、大概どうにかなるんじゃね
536デフォルトの名無しさん:2007/11/17(土) 13:48:21
>>531
GIMP の Python-Fu
537デフォルトの名無しさん:2007/11/17(土) 18:00:45
>>535
SkencilはWindowsで動くのか?
538デフォルトの名無しさん:2007/11/17(土) 19:15:00
>>537
X 鯖立てて Linux box からディスプレイ飛ばす・・・・・のは動くうちに入らないよな、やっぱw
539デフォルトの名無しさん:2007/11/17(土) 19:39:35
cygwin, coLinuxあたりでなら動くんじゃね
540デフォルトの名無しさん:2007/11/18(日) 01:27:09
OLEとか対応してればなんでも動かせるんでねえの?
541デフォルトの名無しさん:2007/11/18(日) 04:35:57
ありがとうございます
vmwareでubuntu linux動かしてskencil動かそうと思ったら駄目でした
542デフォルトの名無しさん:2007/11/18(日) 09:39:57
pyrexの最新バージョンinstallしようとするとエラーになる。
543デフォルトの名無しさん:2007/11/18(日) 21:14:56
文字列の各文字を、数値に変換したいのですが、何かいい方法はありませんか?

例)
x = " "
y = henkan(x) # ASCIIでスペースは20なので、yには数値で20が入ってほしい
544デフォルトの名無しさん:2007/11/18(日) 21:19:24
y = ord(x)


SPACEは数値32、16進で0x20
545デフォルトの名無しさん:2007/11/18(日) 21:19:29
ord
546デフォルトの名無しさん:2007/11/18(日) 21:21:08
arigatou
547デフォルトの名無しさん:2007/11/18(日) 21:51:04
printで一文字ずつ表示させると、間にスペースであいてしまうのはなぜ?

例)
x="hoge"
for y in x:
print "%c" % ord(y),

出力:
h o g e
548デフォルトの名無しさん:2007/11/18(日) 21:56:38
print i, j, k, l としたときに見やすいから
549デフォルトの名無しさん:2007/11/18(日) 22:10:06
printは主にデバッグ用だから


くっつけたいなら、print''.join("%c" % ord(y) for y in x)
550デフォルトの名無しさん:2007/11/18(日) 22:15:11
sys.stdout.write()でもいいよ
551デフォルトの名無しさん:2007/11/18(日) 22:34:11
ありがとうございます。
552デフォルトの名無しさん:2007/11/18(日) 23:41:45
ttp://www.cbook24.com/bm_detail.asp?sku=9784797341812
> みんなのPython Webアプリ編
553デフォルトの名無しさん:2007/11/18(日) 23:47:50
>>552

ttp://www.amazon.co.jp/dp/4797341815/

アマゾソでもハッケソしたぉ
554デフォルトの名無しさん:2007/11/19(月) 00:34:15
おお、すばらしい、
555デフォルトの名無しさん:2007/11/19(月) 00:35:05
TurboGearsの本がいまいちだったから不安だなぁ
556デフォルトの名無しさん:2007/11/19(月) 11:45:02
pythonはデザインパターンの本が無いのが、
pythonのレベルの低さを露呈してるよなwww
557デフォルトの名無しさん:2007/11/19(月) 12:16:38
残念だがPython Programming Patternsって本がある
558デフォルトの名無しさん:2007/11/19(月) 12:21:30
>>556がレベルの低さを露呈したな。
559デフォルトの名無しさん:2007/11/19(月) 14:59:36
560デフォルトの名無しさん:2007/11/19(月) 15:14:31
>>555
そうなの? 買ってないからシラネ。
561デフォルトの名無しさん:2007/11/19(月) 15:22:02
562デフォルトの名無しさん:2007/11/19(月) 17:09:16
みんpyの最後のほうの章みたいなノリだときついな
これが売れないとPython関係の本が出にくくなりそうで嫌だから
良書であることを願うよ・・・
563デフォルトの名無しさん:2007/11/19(月) 17:26:37
ミンpyは良書じゃないって噂をよく効くが本当だった実怠惰ね
564デフォルトの名無しさん:2007/11/19(月) 18:13:27
じゃあ初心者の俺は何を参考にすればいいのさ
565デフォルトの名無しさん:2007/11/19(月) 18:41:14
初心者にとっては、なんでも参考になる
566デフォルトの名無しさん:2007/11/19(月) 18:48:50
何はなくともチュートリアル読め。
Pythonではなく「プログラミング」初心者なら知らね。
567デフォルトの名無しさん:2007/11/19(月) 18:54:44
プログラミング初心者向けなら「インスタント・ハッキング」でいいんじゃないの。
568デフォルトの名無しさん:2007/11/19(月) 19:02:15
hspならやった事ある
569デフォルトの名無しさん:2007/11/19(月) 19:17:15
Haskellをずっと使ってました
570デフォルトの名無しさん:2007/11/19(月) 19:17:21
まずインタラクティブモードからどうやって情報を引き出すかを勉強するのが重要
571デフォルトの名無しさん:2007/11/19(月) 19:20:07
pythonは値のコピーがいつ発生するかがわかりにくい。

x = [1,2,3]
y = x

はポインタコピー?
572デフォルトの名無しさん:2007/11/19(月) 19:28:54
ttp://docs.python.org/lib/module-copy.html
これ読んで考えてみな。
573デフォルトの名無しさん:2007/11/19(月) 19:44:22
ポインタコピーかどうかは、yに値をappendしてみて、xがどうなったか調べれば分かる
574デフォルトの名無しさん:2007/11/19(月) 19:45:17
>572
それ読んでも、いつdeep copyが起きて、いつshallow copyが起きるかはわからないよ。

言語仕様書のどこかに書いてなかったっけ?
575デフォルトの名無しさん:2007/11/19(月) 19:59:11
一部のビルトインオブジェクトを除いて全て参照でしょ
int,long,complex,bool,basestringとか。こういうのなんて言うんだっけ?
576デフォルトの名無しさん:2007/11/19(月) 20:01:06
代入でコピーが発生する言語の方が少ない希ガス。
577デフォルトの名無しさん:2007/11/19(月) 20:09:17
>>575
略)プッwwww                                リミティブ
578デフォルトの名無しさん:2007/11/19(月) 20:11:39
C/C++/C#あたりか
579デフォルトの名無しさん:2007/11/19(月) 21:48:37
>>571,573

>>> x=[1,2,3]
>>> y=x
>>> id(x)
11749376
>>> id(y)
11749376
580デフォルトの名無しさん:2007/11/20(火) 01:21:11
通常copy.deepcopy使わないと深いコピーは起こらないので、
差し当たって浅いコピーだけ考えればいい。
まず代入文でコピーが起こることはない。
変更不能なオブジェクトがコピーされるかどうかはどうでもいい。
変更可能なオブジェクトを返す関数や演算はコピー以外を返すことはない。
組み込みの挙動についてはこれで全部だろう。
581デフォルトの名無しさん:2007/11/20(火) 10:27:41
なんで気にするの?
582デフォルトの名無しさん:2007/11/20(火) 14:13:14
>>581
変数の(ユーザが)予期しない書き換えが起こるときがあってかなり悩む時があるから
>>> lst = [[0] * 3] * 3
>>> lst
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
>>> lst[0][0] = 1
>>> lst
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]

これが複雑なルーチンの中に入り込むと・・・
583デフォルトの名無しさん:2007/11/20(火) 14:15:26
×予期しない
○理解できていない
584デフォルトの名無しさん:2007/11/20(火) 14:22:04
○理解できていない
◎日本語でおk
585デフォルトの名無しさん:2007/11/20(火) 15:07:57
うーん。
タプルとリストがあるのは潔くない、というのなら分かるけど。
Pythonで悩むなら、JavaでもC#でも悩みそうなもんだ。
586デフォルトの名無しさん:2007/11/20(火) 17:00:56
>>562,563
くやしいのう(w
くやしいのう(w
587デフォルトの名無しさん:2007/11/20(火) 17:12:43
初心者の俺にはどうしても参照渡しがよく理解できない。
本の上ではなんとなく分かるような分からないような状態で・・・・何かトレーニングに向きそうな練習問題か何かないでしょうか?
588デフォルトの名無しさん:2007/11/20(火) 17:46:38
C言語でもやれ
589デフォルトの名無しさん:2007/11/20(火) 17:48:42
a=[1,2,3]
b=[1,2,3]

def F( ar1, ar2 ):
 ar1[0] = 9;
 ar2[0] = 9;

F( a, b[:] );

でどうかな
590デフォルトの名無しさん:2007/11/20(火) 18:46:19
>>587
俺もPythonの練習問題ほしい!

591デフォルトの名無しさん:2007/11/20(火) 18:51:53
Python Challengeをやろう!
http://pc11.2ch.net/test/read.cgi/tech/1175919288/
592デフォルトの名無しさん:2007/11/20(火) 18:59:54
code golfの問題をサイズを縮めることを考える事を考えずに普通に解くとか
593デフォルトの名無しさん:2007/11/20(火) 19:01:43
594デフォルトの名無しさん:2007/11/20(火) 20:16:07
>>587 >>590
アルゴリズムとデータ構造関連の本に掲載されている例題や練習問題なんかは手頃なんじゃないかな?
ソート、グラフアルゴリズム、動的計画法とか何か他の問題に取り組むにしても、考え方として参考になる
ものが多いかと。

これらをやり尽くして退屈しているんだったら、パズルのソルバを作ってみたりするのも面白いかも知れないよ。
ニコリっていうパズルの本が有名かな。ここでも見てごらんよ。

http://www.nikoli.co.jp/ja/
595デフォルトの名無しさん:2007/11/20(火) 21:32:50
os.path.os.path.join("hoge","hage")
なんてコードを見つけた
これで動いちゃうんだな・・・
596デフォルトの名無しさん:2007/11/20(火) 21:38:44
urllib.socket.os.path.join("hoge", "hoge")
597デフォルトの名無しさん:2007/11/20(火) 21:42:45
>587
(C言語方面の)ポインタの話をつらつら見れば…
598デフォルトの名無しさん:2007/11/20(火) 23:54:27
ポインタの概念を理解できる奴と理解できない奴がいるよな。
ポインタの概念を理解できない奴は参照渡しも理解できないと思う。
599デフォルトの名無しさん:2007/11/21(水) 00:00:51
>>582
それは言語として腐ってないか?
600デフォルトの名無しさん:2007/11/21(水) 00:03:38
>>598
ポインタはもっと低レベルな感だな。
型のサイズやメモリ配置を意識しないといけない。
601デフォルトの名無しさん:2007/11/21(水) 00:39:41
オブジェクト→箱
オブジェクトの中身→箱の中身
参照→ひも
変数→ひもに付けたラベル
変数への代入→もう一本ひもを用意して同じ箱に結び付ける
(関数/メソッド呼び出し時の引数も代入相当)

とかじゃダメかね?

>>> a = [10] # (・▽・)/<a>~~~[10]
>>> b = a # (・▽・)/<a>~~~[10]~~~<b>\(-▽-)
>>> a += [20] # (・▽・)/<a>~~~[10, 20]~~~<b>\(-▽-)
>>> print b
[10, 20]
602デフォルトの名無しさん:2007/11/21(水) 00:42:56
>>601
みんぱいにもそういう解説が図入りであったな。
他の入門書はどうだかしらんが。
603デフォルトの名無しさん:2007/11/21(水) 02:14:44
参照と言うと大抵は型の概念がある気がするね。
ポインタはただのメモリ上のアドレス(プロセスに割り当てられた仮想アドレスでも良いけど)。
604デフォルトの名無しさん:2007/11/21(水) 02:56:02
Cで拡張モジュールを書けば「参照」の何たるかが分かると思われ。
605デフォルトの名無しさん:2007/11/21(水) 03:46:27
>>599
これはひどい
606デフォルトの名無しさん:2007/11/21(水) 10:27:53
質問です。

list = [ value1, value2 ]

とあった時に 下記のように出力するには
どうすればいいですか?

value1 = ...
value2 = ...

要は、Cのマクロで言うところの
#に該当する機能が欲しいのですが・・・。
607デフォルトの名無しさん:2007/11/21(水) 10:42:33
>>606
質問がさっぱりわからない。
Cの#って何?#includeでも#defでもなさそう。
608デフォルトの名無しさん:2007/11/21(水) 10:49:25
#define printdebug(N) printf("%s is %s", #N, N);

char a[] = "string";

printdebug(a);

という風に使うときの # です。
変数名を動的に出力したいってことなんですが。
609デフォルトの名無しさん:2007/11/21(水) 11:36:25
def printdebug(var): print "%s is %s" % (var,eval(var))

printdebug("a")

とかじゃだめ?
610デフォルトの名無しさん:2007/11/21(水) 11:48:17
>>606
それ、Cでも出来ないっしょ。
出来そうな言語ってLispぐらいか?
611デフォルトの名無しさん:2007/11/21(水) 12:37:40
>>609

それの逆がしたいんです・・・。

printdebug(a)

612デフォルトの名無しさん:2007/11/21(水) 12:38:52
>>610
マクロでできるんです。
# は文字列化のマクロなので。
613597:2007/11/21(水) 13:20:59
>600,603
なるほどね.そういわれればそういう側面もあるかな.
(ポインタが難しいとかいわれるのはその辺も絡むからか?)

ま,実態としてどういう受け渡し(参照先の情報だけ or 中身丸ごと)
ってとこは当然ながら同じだよね

>601
そういうのを否定はしないけど、得てして置き換えすぎて
よく分からなくなることってある気がする
614デフォルトの名無しさん:2007/11/21(水) 14:51:47
>>608
Cみたいにプリプロセッサ使うか、
Lisp みたいにシンボル型が扱える言語じゃないと無理じゃね?
615デフォルトの名無しさん:2007/11/21(水) 15:31:14
そこのlistってところは、Cだと配列でいいんだよな?
Cで配列に突っ込んだ変数から、どうやって名前を引っ張ってくるんだorz
ぎぶみーmacro

#define PRT(N) printf("%s %i\n", #(N[0]), N[0])
int main()
{
    int value1=1, value2=2;
    int lst[] = {value1,value2};
    PRT(lst);
}
616デフォルトの名無しさん:2007/11/21(水) 15:33:09
>>615
これは無理だ・・・
617デフォルトの名無しさん:2007/11/21(水) 15:34:22
配列じゃなくていいなら python でもおk?

#define prn(N) printf("%s is %s", #N, N);

int a = 1;
prn(a)
618デフォルトの名無しさん:2007/11/21(水) 16:37:18
いいこと思いついた
PythonでLispを動かそうZE
619デフォルトの名無しさん:2007/11/21(水) 16:57:01
配列のそれぞれの要素に文字列が入っている状態で、
文字列の中で文字数一番でかいのを知りたいのですが、

def m(x, y):
    return max(len(x), len(y))

print reduce(m, [u'あああ', u'いいい', u'うう'])

とすると

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<stdin>", line 2, in m
TypeError: len() of unsized object

となります。どこが悪いんでしょうか?
620デフォルトの名無しさん:2007/11/21(水) 17:10:37
結局
そもそもの状態を文字列にして
>>609さんのようにすることにしました。
621デフォルトの名無しさん:2007/11/21(水) 17:24:16
>>619
m(x,y)の返値が整数になってる。
文字列を返したいんでしょ?
622デフォルトの名無しさん:2007/11/21(水) 17:27:59
>>619
reduce 使わなくても
max([u'あああ', u'いいい', u'うう'], key=lambda o: len(o))
623デフォルトの名無しさん:2007/11/21(水) 17:28:27
max([u'あああ', u'いいい', u'うう'], key=len)
624デフォルトの名無しさん:2007/11/21(水) 19:00:11
csvをcrlf改行で作りたいのだけれど、どうするのがエレガントですか。
csvライブラリだとfileオブジェクトを渡してwriterつくってwriterow
みたいな流れですが、これだと改行までcsvライブラリが出力しちゃう
のでどこで手を出していいかわかりません。

perlの:crlfレイヤみたいのがあればいいんですけどね。

625デフォルトの名無しさん:2007/11/21(水) 19:09:13
PerlのCPANのようなものはありますか?
コマンドラインから、
pyinstall USPP
とかでUSPPがインストールされちゃうみたいなヤツです
626624:2007/11/21(水) 19:33:54
自己解決。

Dialectのlineterminator属性で指定する。そしてデフォルトのDialectがexcelなので
特に何もしなくてもcrlf改行になる。
627デフォルトの名無しさん:2007/11/21(水) 20:17:33
>>625
setuptools の easy_install
628デフォルトの名無しさん:2007/11/21(水) 22:46:59
>>606
listじゃなくていいなら、python的には辞書じゃないか?

d = dict(value1=value1,value2=value2)

print d
629デフォルトの名無しさん:2007/11/22(木) 01:47:25
三項付いた2.5出てるどころか3k見えてる今ごろ何だけど…

2.4以前の三項代用構文A and B or Cって、なんで働くのかよくわかんない。
後ろから評価してんのかな?Aが偽でもCに飛べない気がする。
いつも一行で書くの諦めて、普通にif else使ってるけど。
630デフォルトの名無しさん:2007/11/22(木) 01:49:44
まとめwikiのFrontPage、Googleのキャッシュ見ながら復旧させてみた。
最近かなり頻繁にspam投稿されてるから履歴が消える前に
管理人さんが気づいて凍結してくれるといいな…(´・ω・`)
631デフォルトの名無しさん:2007/11/22(木) 03:04:39
>>629
A and B or C は
(A and B) or C と同じ。
X = A and B
X or C
だと思えばおけ。
632デフォルトの名無しさん:2007/11/22(木) 11:37:45
text = []
for line in text:
    text.append(line.rstrip().decode('utf-8'))

を map を使って書き直した場合、どうなりますか?
633デフォルトの名無しさん:2007/11/22(木) 12:12:41
ループの読み込み元のリストと、追加する先のリストが同じだと・・・無限ループになる?
634デフォルトの名無しさん:2007/11/22(木) 12:15:39
当然そうなる
635デフォルトの名無しさん:2007/11/22(木) 13:58:43
意味は変わっちゃうけど、実のところ、
text = map(lambda line: line.rstrip().decode('utf-8'), text)
みたいなのを期待してるんじゃないのかなあ。

mapを使わないで、無限ループにすることもできるけど。
text.extend(line.rstrip().decode('utf-8') for line in text)
636デフォルトの名無しさん:2007/11/22(木) 15:17:46
>>628
これってどういう意味? 初めてみた・・・。
637デフォルトの名無しさん:2007/11/22(木) 15:21:57
そのまんまの意味だ
638デフォルトの名無しさん:2007/11/22(木) 15:27:52
d = {"value1":value1, "value2":value2}
639デフォルトの名無しさん:2007/11/22(木) 16:56:57
借りてたレンタルwikiが管理放棄っぽく、不具合続出で逃げ出したい
でも当然シェルというかファイルには触れない、ソースで落とすしかない
一括修正できないから、書式変えるたびに個別手作業で泣けてた
分量は1000ページ弱で、ただでさえ応答が遅く怪しく、手動DLは論外
例え終わっても、他のwikiと文法違い、エディタ手修正じゃ追いつかん

Pythonをやらなきゃと思ったきっかけ、しかし借り先鯖完全崩壊までに、
こんなの作れるほどの上達が間に合うか…、ダメか…
今度はファイル触れるように、自鯖wiki設営も勉強せなならんし
チラ裏愚痴でお目汚しすまん
640デフォルトの名無しさん:2007/11/22(木) 17:06:26
>>639
面白そうだなあ
ここじゃチラ裏どころかスレ違いっぽいので
WikiのURL晒せるならPythonの宿題スレにでも持っていったら?
641デフォルトの名無しさん:2007/11/22(木) 17:11:25
確かに楽しそうな課題だ。
しかし、データ抜き出しまではクローリングのツール設定で何とかならんかな?
抜き出したデータをいじる、としたほうが敷居は低い気がする。
642デフォルトの名無しさん:2007/11/22(木) 17:31:44
どうせ鯖乗り換えなきゃならんのなら
新鯖側でDjangoでも使って
旧鯖から吸い上げと同時に
修正まで済ましてしまうのが吉
643デフォルトの名無しさん:2007/11/22(木) 17:36:46
d = dict(value1=value1, value2=value2)

d = {"value1":value1, "value2":value2}
かー。
dict の初期化の仕方が納得できないが、そういうものか。
ていうか、>>606 のやりたがってた変数の文字定数化って
この過程がわかればできそうだ。
644デフォルトの名無しさん:2007/11/22(木) 19:26:43
ちょっと質問です。
あるファイルの中身を日付ごとに分割して保存するには、
どんな感じでやればいいでしょうか?

ちなみに日付は
200711221930
のような感じです。(2007: 年, 11: 月, 22: 日, 19: 時, 30: 分)
645デフォルトの名無しさん:2007/11/22(木) 21:14:21
>>643
こういうのも面白いかも。
>>> def values():
... value1=1
... value2=2
... return locals()
...
>>> print values()
{'value2': 2, 'value1': 1}
646デフォルトの名無しさん:2007/11/22(木) 21:43:42
>>608 の文字列化、一応出来てる?

import traceback
import re

def debugprint(value):
  stack = traceback.extract_stack(limit=2)
  name = re.search(r"debugprint\((.*?)\)", stack[0][3]).group(1)
  print "%s: %s" % (name, value)

def f():
  a = 5
  debugprint(a)

b = "hoge"
debugprint(b)
debugprint("foo")
f()
647デフォルトの名無しさん:2007/11/22(木) 22:37:43
list(u'あいうえお')
の逆の操作(リストを文字列に戻す)をしたいのですが、効率のいい方法を教えてください。

t = u''
for c in list(u'あいうえお'):
  t += c

では効率が悪いような気がして...
648デフォルトの名無しさん:2007/11/22(木) 22:40:48
>>647
t = ''.join(list(u'あいうえお'))
649デフォルトの名無しさん:2007/11/22(木) 23:01:18
>>> u = '%s' % (list(u'あいうえお'))
>>> print u
[u'\u3042', u'\u3044', u'\u3046', u'\u3048', u'\u304a']
>>> t = list(u'あいうえお')
>>> print t
[u'\u3042', u'\u3044', u'\u3046', u'\u3048', u'\u304a']
>>> for c in t: print c
...





>>> if (t != u): print 'yes'
...
yes
>>>

なぜですか?
650デフォルトの名無しさん:2007/11/22(木) 23:07:22
t.append(u'か')

print t
print u
651デフォルトの名無しさん:2007/11/22(木) 23:08:22
・・・・・・
652デフォルトの名無しさん:2007/11/22(木) 23:08:37
t != uは自明だろ
653デフォルトの名無しさん:2007/11/22(木) 23:11:04
>>649
>>> type(u)
<type 'str'>
>>> type(t)
<type 'list'>
654デフォルトの名無しさん:2007/11/22(木) 23:13:44
> for c in u: print c

これやると大変なことに・・・
655デフォルトの名無しさん:2007/11/23(金) 00:29:36
厨ですみませんが質問させてください。

Pythonを、ローカル環境でCGI稼動させるには
どーいう感じにしたら良いんでしょうか?
OSは窓なんですが。
656デフォルトの名無しさん:2007/11/23(金) 00:34:54
win版のApacheをインストール
  or
VMwareなどでLinuxやFreeBSDを動かす
657デフォルトの名無しさん:2007/11/23(金) 00:38:29
>>655
import BaseHTTPServer
import CGIHTTPServer
BaseHTTPServer.HTTPServer(('', 80), CGIHTTPServer.CGIHTTPRequestHandler).serve_forever()
658デフォルトの名無しさん:2007/11/23(金) 00:40:02
>>656>>657
ありがとうございます。
やってみます〜
659デフォルトの名無しさん:2007/11/23(金) 05:23:13
自作moduleをIDLEとかで再importするには
どうすればいいかな?

ファイルを書き換えてもう一度importしても
うまく変更を反映してくれません… >IDLE
660デフォルトの名無しさん:2007/11/23(金) 05:27:35
reload
661デフォルトの名無しさん:2007/11/23(金) 10:38:50
>>660
どもIDLEだとCtrl+F6でrestart shellみたいなのが
ありましたd
662デフォルトの名無しさん:2007/11/23(金) 11:50:17
655です。
めでたくCGI稼働はしたんですが、
この場合だとcgi-binフォルダ以外(下部階層も含め)が
読み込めないっぽいですが、仕様なんですかね?
下部フォルダから画像とか読み込みたいんで、
できればアクセスできるようになりたいんですが、
win側の設定かなぁとかいう気もするんですが、
お教えいただけたら嬉しいです。
663デフォルトの名無しさん:2007/11/23(金) 12:24:19
>>662
Apacheなら仕様だよ。他は知らない。
HTMLや画像を置くフォルダとスクリプトを置くフォルダは分けるのが原則。
それが嫌ならAddHandlerやOptionsなどの設定が必要。

Pythonとはまったく関係ない話なので、以後はHTTPサーバのスレにどうぞ。
664デフォルトの名無しさん:2007/11/23(金) 12:26:18
ああそうか、CGIHTTPServer使ってる可能性もあるのか。
だとしたら>>663はスルーで
665デフォルトの名無しさん:2007/11/23(金) 14:52:33
そういうあなたには
Django
をおすすめしますよ
666デフォルトの名無しさん:2007/11/23(金) 14:53:53
いや Pylons だろ
667デフォルトの名無しさん:2007/11/23(金) 15:09:11
>>662
CGIHTTPRequestHandler を継承して
適当に機能を上書きすればできるようになるけど、
正直 Apache や他の簡易ウェブサーバを使ったほうが早いと思う。
668デフォルトの名無しさん:2007/11/23(金) 16:33:55
unicode 文字列に、他の言語でいう tr をやりたいんですが、かしこい方法はありますか?
以下のようなことはやってみました。

>>> 'hello'.translate(string.maketrans('l', '_'))
'he__o'

>>> u'hello'.translate(string.maketrans(u'l', u'_'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
669デフォルトの名無しさん:2007/11/23(金) 16:43:05
import re
s = u'hello'
print re.sub(u'l', u'_', s)
670デフォルトの名無しさん:2007/11/23(金) 16:52:05
>>> u"hello".translate({ord(u"l"):u"_"})
u'he__o'
671デフォルトの名無しさん:2007/11/23(金) 17:15:12
何でPythonにtrが無いのかずーっと不思議に思ってる。
引数順はre.subに沿って書いた。
最適化の余地はまだあるかな?

def tr(pattern, repl, string):
    m = dict(((p,r) for p,r in zip(pattern, repl)))
    return ''.join((m.get(c,c) for c in string))

print tr('lo', '_0', u'Hello, world')

672デフォルトの名無しさん:2007/11/23(金) 17:18:34
tupleにする必要はないよ
- m = dict(((p,r) for p,r in zip(pattern, repl)))
+ m = dict(zip(pattern, repl))
673デフォルトの名無しさん:2007/11/23(金) 17:31:05
#>>670, 671 を混ぜてみる
def tr(pattern, repr, text):
  return text.translate(dict(((ord(p), r) for p, r in zip(pattern, repr))))
print tr(u'lo', u'_0', u'Hello, world') # => He__0, w0r_d
674デフォルトの名無しさん:2007/11/23(金) 17:37:26
tr/a-z/A-Z/ ができるようにならないか
675デフォルトの名無しさん:2007/11/23(金) 17:55:57
>>669でいーじゃん
676デフォルトの名無しさん:2007/11/23(金) 18:00:50
>>674
集合をA-Zで略記できるのってキモくない?
そういうのはテキスト処理系ツールの中だけでいいよ。
tr(f('a-z'), f('A-Z'))で精一杯でしょ。
677デフォルトの名無しさん:2007/11/23(金) 18:05:06
>676
正規表現を否定されても困る
678デフォルトの名無しさん:2007/11/23(金) 18:39:20
>>675
>>669は2つ以上の文字置換ができん

>>673
変なものを混ぜるなwww
というわけで、>>671-672を混ぜてみた

def tr(pattern, repl, string):
    m = dict(zip(pattern, repl))
    return ''.join((m.get(c,c) for c in string))
679デフォルトの名無しさん:2007/11/23(金) 18:44:01
import re
s = u'1富士2鷹3茄子'
for frm, to in zip(u'123', u'一ニ三'):
    s = re.sub(frm, to, s)
680デフォルトの名無しさん:2007/11/23(金) 18:50:09
ジェネレータにしろって言ってんだろ
-    return ''.join((m.get(c,c) for c in string))
+    return ''.join(m.get(c,c) for c in string)
681デフォルトの名無しさん:2007/11/23(金) 19:11:44
だが断る
-    return ''.join(m.get(c,c) for c in string)
+    return ''.join((m.get(c,c) for c in string))
682デフォルトの名無しさん:2007/11/23(金) 19:16:15
tr('abc','*','abcdef')
>>> *bcdef
まともに動きませんwww
683デフォルトの名無しさん:2007/11/23(金) 21:49:16
>>674
こうですか?!わかりません><

>>> u"Hello, world".translate(dict(zip(map(ord, string.lowercase), map(ord, string.uppercase))))
u'HELLO, WORLD'
684デフォルトの名無しさん:2007/11/23(金) 21:53:14
>>674
こうですか?!わかりません><
>>> u"Hello, World.".upper()
u'HELLO, WORLD.'
685デフォルトの名無しさん:2007/11/23(金) 21:54:22
upperがここまで回りくどくなるとは
686デフォルトの名無しさん:2007/11/23(金) 21:57:38
Python 2.5.1 をダウンロードして
eclipse 3.3 に PyDev を突っ込もうとしたのですが
PyDev のページをみると Python 2.3 とか 2.4 とか書いてあるのに
2.5 は何も書かれていないので心配です
ちゃんと動きますか?使ってるひといますか?
687デフォルトの名無しさん:2007/11/23(金) 22:01:46
Python 2.5 syntax supportedって書いてあるように見えるのだが
featuresのとこ
688デフォルトの名無しさん:2007/11/23(金) 22:05:01
print u"\u00e1gua".translate(dict(zip(map(ord, string.lowercase), map(ord, string.uppercase))))
print u"\u00e1gua".upper()

結果が違う。
689デフォルトの名無しさん:2007/11/23(金) 22:37:42
>>686
うちは
Python2.5
PyDev1.3.10
eclipse3.2 (PyDev本家では3.3使えと書いてあるけど)
で問題なく動いてるよ
ProjectでPython2.5選べる
690デフォルトの名無しさん:2007/11/23(金) 22:42:54
>>688
つまりもっと回りくどくしろと言うのだな!?
691デフォルトの名無しさん:2007/11/23(金) 23:59:53
二次元配列を初期化するスマートな方法はありますか?

ar2 = [[0] * 16] * 8

とかやって、2時間ぐらいはまったところ。
692デフォルトの名無しさん:2007/11/24(土) 00:01:43
リスト内包使えば?
693デフォルトの名無しさん:2007/11/24(土) 00:10:16
>>671
def tr(pattern, repr, text): return text.join(pattern.split(repr))
でやってる
694デフォルトの名無しさん:2007/11/24(土) 00:11:51
>>691
わかるわかるw

>>692がいいと思うけど、
とりあえず っ numarray, numeric, numpy

でもこっちもはまるぜw
695デフォルトの名無しさん:2007/11/24(土) 00:14:10
>>691
import numpy
ar2 = numpy.zeros((8,16),numpy.int).tolist()
696デフォルトの名無しさん:2007/11/24(土) 00:14:48
>>691
冗長でもいいからわかりやすいコードの生成関数をつくる。
そっちのがスマート。
697デフォルトの名無しさん:2007/11/24(土) 00:20:26
>>696
>そっちのがスマート。

でも696はデブオタ。
698デフォルトの名無しさん:2007/11/24(土) 00:52:42
for a,b in zip(alist, blist):
    msg = b.join(msg.split(a))

for a,b in dict.iteritems():
    msg = b.join(msg.split(a))

どっちのほうが速いかな?
iteritems() はあまり速くない印象があるけど…
699デフォルトの名無しさん:2007/11/24(土) 00:53:41
実測が基本
700デフォルトの名無しさん:2007/11/24(土) 01:23:44
>>699
テストデータの喰わせかたが思いつかない罠…

2004-02-05 - はてなダイアリー日記
http://d.hatena.ne.jp/hatenadiary/20040205#1075960162

EUC_JPかつちょっと古いやね。むぅ
701デフォルトの名無しさん:2007/11/24(土) 01:23:45
ar2 = [[0]*16 for x in range(8)]
で、浅いコピーが起こらない

[[0] * 16] * 8
だと、(行列とみなせば)各行は同じものになる
702デフォルトの名無しさん:2007/11/24(土) 01:33:34
>>698
つうか、その処理の前の時点で、alist、blist、dict、が全部あるのっておかしくないか?
alist = dict.keys(); blist = dict.values()で作るんだったら多分遅くなるでしょ
703デフォルトの名無しさん:2007/11/24(土) 07:31:21
split処理のコードを全く書いたことのない人には何がポイントかが
解りにくいと思うので解説します。仕様の問題ともいえるのですが、
区切り文字列候補が [abc,b,bcd] のように重複する部分があると
この処理コードは大変複雑になり、区切り文字を含む解モードでは
非決定性のアルゴリズム(プログラム)になります。具体的にいうと、
頭から、abcが見つかったとして、それ以後の文字列を処理してしまうと
bcdのd部分を見失ってしまうということです。それ以後ではなくabcを
含んだそれ以後の文字列を対象にしなくてはなりません。しかもそこで
いきなり現れるabcは無視して2文字目以降に[abc,c,bcd]が現れるか
調べますが、今度はa+bcd+...のaをどう処理すればよいかの問題も生じます。
abcdを区切り文字と見なして良いのなら事前にそう作り替えておけば
済みますが。Prologのsub_atom/5はこの問題を一述語でやってしまうので、
splitに初めて使ってみましたが、そんなにうまくはいきませんでした。
詳しくは知りませんが一般には、split の区切り候補にこのような重複を
含むことを仕様で禁じることでこの問題を回避しているのではないかと
思います。
704デフォルトの名無しさん:2007/11/24(土) 07:58:41
b.join(msg.split(a)) == msg.replace(a, b)
705デフォルトの名無しさん:2007/11/24(土) 08:06:21
区切り文字列集合→NDFA→DFA
では駄目なの?

prologならbacktrackで素直にかけそうだが。
706デフォルトの名無しさん:2007/11/24(土) 12:14:55
mmapで共有メモリ使いたいんですが、
他のプロセスを排他するやり方が分かりません。

import mmap
FNAME="hoge"
f = open(FNAME, "r+")
data = mmap.mmap(f.fileno(), 20)
data[0:3] = "foo"
data[10:13] = "bar"

最後の2行の実行を他のプロセスから見てアトミックにしたいんですが、
どんな感じに書けばいいんでしょうか。
707デフォルトの名無しさん:2007/11/24(土) 12:26:54
別にロックファイルを使うとか。
MMAPしたファイルはロックされないし、ふつうファイルロックの
実装はアドバイザリロックだったりで完全にアトミックではないけど。
708デフォルトの名無しさん:2007/11/24(土) 13:05:33
709デフォルトの名無しさん:2007/11/24(土) 13:07:24
>>706
mutex
710デフォルトの名無しさん:2007/11/24(土) 13:21:50
>>709
それって標準モジュールのmutex?それとも広義の?
前者ならサンプルコードちょっと書いてみてよ。
711706:2007/11/24(土) 13:23:40
>>707,709
レスありがとうございます。

ロックファイルは使ったこと無いんですが、
(Cのセマフォしか経験がない)
完全に排他的にできるかが不安です。

mutexは使ってみましたが、
ttp://www.python.jp/doc/2.4/lib/module-mutex.html
を読んでも、他のpythonやCのプロセスと、
どうやって排他処理するのか分かりませんでした。
マルチプロセスではなくて、
マルチスレッドのみでmutexは働くんでしょうか。
712706:2007/11/24(土) 13:24:30
mutexとかセマフォは環境依存かもしれません。
Linuxです。
713デフォルトの名無しさん:2007/11/24(土) 13:30:17
ロックファイルはよく使われるから大丈夫だよ。
エラーが発生したときの
ロックファイル消し忘れに注意。

Pythonライブラリのmutexはスレッド系のもので他のプロセスには無理。
714デフォルトの名無しさん:2007/11/24(土) 13:32:26
今だとwithを使って、ロックファイルの生成・削除をすればいいのか
715デフォルトの名無しさん:2007/11/24(土) 13:33:12
ttp://www.python.jp/doc/2.4/lib/module-mutex.html

ここ見るとスレッド制御に使えないって書いてあるなぁ

一体どこで使うんだよw
716706:2007/11/24(土) 13:54:56
ttp://nikitathespider.com/python/shm/
こういうのを見つけました。
標準モジュール以外はちょっと不安ですが、
これを試して駄目そうだったらロックファイルを試してみます。
皆さん、どうもありがとうございました。

もしこのモジュール使ったことある方いらっしゃれば、
何かコメント頂けると有り難いです。
717デフォルトの名無しさん:2007/11/24(土) 14:09:13
grep結果: 1件
Python-2.5.1/Lib/test/test_sundry.py: import mutex

どう見ても使われていません。本当に(ry
718デフォルトの名無しさん:2007/11/24(土) 15:57:23
POSIXを仮定してよいのなら、fcntl.lockf()が無難かと。

ロック用のファイルは適当に作っておく。何ならスクリプト自身でも良い。
ロックはディスクリプタをクローズしたときに解除される。
プロセスが死ぬ時は、いずれにせよkernelによってディスクリプタは
クローズされるので、kill -KILLで殺されようが何しようが、ロックが
残ったままにはならずに済むよ。

これより移植性が高いが後始末を考えると面倒くさいプロセス間排他制御の
手段としては、mkdir()などが考えられる。
719デフォルトの名無しさん:2007/11/24(土) 17:28:40
habu とか 熊野古道 スレはどこかにないでしょうか。
誰か誘導して。
720デフォルトの名無しさん:2007/11/24(土) 17:39:47
国内旅行板とか害虫害獣対策板とか@の溜まり場IIで聞け
721デフォルトの名無しさん:2007/11/24(土) 17:44:30
>720 には失望しました。
722デフォルトの名無しさん:2007/11/24(土) 17:45:18
>>718-720
Pythonスレの底力を見た
723デフォルトの名無しさん:2007/11/24(土) 18:10:14
どんだけ手広いんだよ
724デフォルトの名無しさん:2007/11/24(土) 18:24:57 BE:869338548-2BP(999)
無通信状態で5秒経ったらポップアップでお知らせとか
pythonで通信状態の監視って出来ますか?

725719:2007/11/24(土) 18:28:13
あれ、なんか反応が鈍いな。どっちも Python で Plagger するやつなんだけど。
興味のある人のために一応リンク張っておくよ。

habu - ttp://sourceforge.jp/projects/pyhabu/wiki/FrontPage
熊野古道 - ttp://kawasaq.from.tv/blog/Python/Kumanokodo/kumanokodo.html
726デフォルトの名無しさん:2007/11/24(土) 18:31:46
そういうのはソフトウェア板の領分ではなかろうか
727デフォルトの名無しさん:2007/11/24(土) 18:32:29
>>724
自前のsocketなら自明だからNICの通信状態ってこと?
Win32ならパフォーマンスカウンタ
Linuxとかなら/procか/devあたり読めばいけるんでない?
728デフォルトの名無しさん:2007/11/24(土) 21:56:11
skencil とmatplotって組み合わせられるのかな?
matplotで折れ線グラフ描いてskencilで編集ってできるなら便利なんだけど
729デフォルトの名無しさん:2007/11/24(土) 22:18:16
>>725
作りっぱなしの放置プロジェクトに興味示すのなんて、今時幼稚園児くらいですよ。
730デフォルトの名無しさん:2007/11/25(日) 00:20:44
ひょっとしてsetsモジュールって、もういらない子?
731デフォルトの名無しさん:2007/11/25(日) 08:51:44
threadを使ってみようと思ったんですが、

#!/usr/bin/env python
import thread
def threadA():
for i in range(100):
print "threadA()"
def threadB():
for i in range(100):
print "threadA()"
def main():
thread.start_new_thread(threadA, ())
thread.start_new_thread(threadB, ())
if __name__=="__main__":
main()

を走らせると、
Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:
Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:

となってしまいます。
Linux/OS X(python 2.5)ともに同じ症状です。
どこが使い方間違っているんでしょうか。
732デフォルトの名無しさん:2007/11/25(日) 08:57:38
>>730
Set()があるからいらないこ
733デフォルトの名無しさん:2007/11/25(日) 09:19:18
>>731
プログラムを終える前にthreadの終了を待つんだ。
734デフォルトの名無しさん:2007/11/25(日) 09:44:03
>>733
ああ、なるほど。ありがとうございます。
メインのスレッドが先に終わっちゃうわけですね。
ttp://www.python.jp/doc/2.4/lib/module-thread.html
を読むと、子スレッド同士をjoinさせる機能がないんですが、
Cみたいにスレッドを待機する機能を使うためには、
threadじゃなくてthreadingを使えってことでしょうか。
735731=734:2007/11/25(日) 09:54:24
threading.Thread.join()
で、期待通りに動きました。
736デフォルトの名無しさん:2007/11/25(日) 10:15:51
>>732
Set()はsetsモジュールに定義されている訳だが。この知ったかバカが。
入門書くらい嫁。おまえがいらないこ。
737706:2007/11/25(日) 14:41:25
>>716のやつを使ってみましたが、
Cの知識と同じでうまく動作しました。
ただし、threadingを使ってマルチスレッドにしようとすると、
Pythonの疑似マルチスレッド?のせいか、
P()とP()がぶつかり合いデッドロックするという問題があります。
2つのセマフォを用意して、
それぞれが異なるスレッドで走るのは問題ないですが、
1つのセマフォが複数のスレッドに現れると駄目です。

この問題を除いては、なかなか便利そうです。
738デフォルトの名無しさん:2007/11/25(日) 18:44:01
IPCでマルチスレッド制御はしないだろ、常考
739デフォルトの名無しさん:2007/11/25(日) 19:01:31
>>738
スレチだが、muti threadのものをmulti processで走らせる場合は?
で、全部のthreadで協調動作。
740デフォルトの名無しさん:2007/11/25(日) 20:37:17
>>736
setの間違い
setsモジュールなくても使える
http://www.python.jp/doc/release/lib/types-set.html
741デフォルトの名無しさん:2007/11/26(月) 01:19:33
http://www.kohgakusha.co.jp/books/detail/978-4-7775-1321-5

このタイトルは
オライリーに怒られないのだろうか・・・
742デフォルトの名無しさん:2007/11/26(月) 01:25:06
>>741
駄目だろwww
743デフォルトの名無しさん:2007/11/26(月) 01:34:03
本を書きました。
(この数ヶ月ホームページの更新をサボっていたのはこの本を書いているためでした。) 
はじめての Python という本で工学社から出ています。

題名が O'Relly Japan の "初めての Python" にそっくりですが、
細かいことは気にしないでください。
744デフォルトの名無しさん:2007/11/26(月) 01:40:19
>題名が O'Relly Japan の "初めての Python" にそっくりですが、
>細かいことは気にしないでください。
わざとかよ。糞野郎氏ね。
745デフォルトの名無しさん:2007/11/26(月) 01:51:09
746デフォルトの名無しさん:2007/11/26(月) 01:54:48
特殊メゾット・・・
747デフォルトの名無しさん:2007/11/26(月) 01:57:19
なんかおいしそうだな
748デフォルトの名無しさん:2007/11/26(月) 01:59:36
確かにうまそうだ・・・
まあ、タイトルは出版社が決めたんじゃないかなぁ・・・
749デフォルトの名無しさん:2007/11/26(月) 02:07:34
題名、出版社、著者とも三流(w
内容はどうなんだろうな(wwwwwwwwwwwww
750デフォルトの名無しさん:2007/11/26(月) 02:17:00
 特別付録CD-ROM
 ●Python2.5.1(Windows)
 ●Python2.5 ドキュメント(英語)   ←英語のままですか?^^;
 ●Python2.4 ドキュメント(日本語)
 ●本文ソースコード  ●解答 収録 
751デフォルトの名無しさん:2007/11/26(月) 02:24:30
>http://www.shido.info/misc/misc.php?id=31
>最低なやつだな。

>特殊メゾット・・・

>題名、出版社、著者とも三流(w
>内容はどうなんだろうな(wwwwwwwwwwwww

紫藤涙目wwww
752デフォルトの名無しさん:2007/11/26(月) 02:39:21
>>749
http://www.kohgakusha.co.jp/samples/3605/download/python_060.jpg

3.2.3 ブール演算子
Pythonでも他の言語と同様に、「論理積(and)」「論理和(or)」「否定(not)」
などのブール演算を行うことが出来ます。
「and」と「or」は真偽値を返すのではなく、右側か左側の変数の値をそのまま返します。

■not
否定を返します。
not True → False
not False → True

否定には、以下の構文糖衣注が使えます。
not (a is b) ⇔ a is not b
not (a ==b) ⇔ a !- b
not (a in b) ⇔ a not in b
753デフォルトの名無しさん:2007/11/26(月) 02:40:29
>>741
きょうたまたま立ち読みしてきたけど
糞本だったので別のを買ってきた
754デフォルトの名無しさん:2007/11/26(月) 03:09:09
今日本屋で見かけた。装丁がパッとしなかった。

>>752
>>> 1 == 1
True
>>> 1 or 1
1 # True じゃなくて

知らなかった。
755デフォルトの名無しさん:2007/11/26(月) 04:01:19
perl の

hoge() or die();

みたいなことができるようになってんだな。
756デフォルトの名無しさん:2007/11/26(月) 04:27:23
誰が書いたものが誰に分かりやすいか分からないからね、・・・
あと、純粋に1冊よりは3冊ぐらいあったほうが分かりやすいという人も居るし・・
757デフォルトの名無しさん:2007/11/26(月) 04:57:27
>>754
それって bit 演算とどう違うの?
758デフォルトの名無しさん:2007/11/26(月) 05:00:13
>>> 3 or 5
3
>>> 5 or 3
5
>>> 3 | 5
7
>>> 5 | 3
7
>>> 0 or 1
1
>>> 1 or 0
1
759デフォルトの名無しさん:2007/11/26(月) 05:01:33
>>> True or False
True
>>> False or True
True
>>> False or 3
3
>>> 3 or False
3
>>> False or 0
0
>>> 0 or False
False
>>>
760デフォルトの名無しさん:2007/11/26(月) 05:05:40
流れがよめてないかもだけど
some() or else
ready() and go()
こんなんでTrue/Falseが返ってきたらおかしいだろうと。
761デフォルトの名無しさん:2007/11/26(月) 11:32:22
python ReportLabがあったらtexいらない気がしてきた
しかし過去のtexのドキュメントとか図とかも活用したい
困ったな
762デフォルトの名無しさん:2007/11/26(月) 14:37:10
自動コンバートできるでしょ
763デフォルトの名無しさん:2007/11/26(月) 19:20:28
>>752
Pythonでシンタックスシュガー?について書いている時点で糞だし
そもそもシンタックスシュガーじゃなくて式展開してるだけだしwww
764デフォルトの名無しさん:2007/11/26(月) 20:11:03
>>763
本来 not (a is b) と書けば済むところを、
プログラマの利便のためにわざわざ is not なんて比較演算子を用意してる
そういうのをシンタックスシュガーっていうんだろうから別に噛み付くところじゃないと思うけどな
765デフォルトの名無しさん:2007/11/26(月) 20:16:03
まぁ、そこはかとなく草壁臭がする気がしないでもない。
766デフォルトの名無しさん:2007/11/26(月) 20:45:43
isと==は違いますか?
767デフォルトの名無しさん:2007/11/26(月) 21:03:54
>>> a = [0]
>>> b = [0]
>>> a == b
True
>>> a is b
False

"is"はオブジェクトが一致するかどうか
768デフォルトの名無しさん:2007/11/26(月) 21:08:43
a is b は id(a) == id(b) と等しい。
769デフォルトの名無しさん:2007/11/26(月) 21:20:40
ReportLabってそんなにいいの?
TeXの偏執狂みたいな「割り付け」へのこだわりは、やっぱり
使ってて安心感があるんだけど、そこらへんいかがでしょうか > 761

とは言え俺も、これpythonでやりました、って言いたい気もするな :-D
仕様書ジェネレータみたいなの書くのは趣味と実益を兼ねてていいかもしれん。
770デフォルトの名無しさん:2007/11/26(月) 21:26:58
個人的印は reStructuredText と docutils で満足してるんだが、
図を書いたり張ったりしたい人たちには足りないのかなあと思うy
771デフォルトの名無しさん:2007/11/26(月) 21:38:19
rubyのpやppに相当することはpythonではどうやればいいですか?
772デフォルトの名無しさん:2007/11/26(月) 21:57:33
>>771
print repr(obj)
なんだけど、インスタンス変数が表示されないんだよな。そこが残念。
まあインスタンス変数とインスタンスメソッドの区別がないから仕方ないけど。
773デフォルトの名無しさん:2007/11/26(月) 22:03:46
pprintってモジュールもあるよ
774デフォルトの名無しさん:2007/11/26(月) 22:12:46
>767-768
ありがとうございます。
すっきりしました。
775デフォルトの名無しさん:2007/11/26(月) 22:29:12
pythonはRubyみたいに
整数や文字列はメソッドを持っていないんですか?
型変換をstr()のような関数を使わず
それ自体のメソッドでやりたいんですが
776デフォルトの名無しさん:2007/11/26(月) 22:32:29
rubyでやれ
777デフォルトの名無しさん:2007/11/26(月) 22:37:13
え…まじでないんですか?
rubyはどうも好きになれなくてpythonをはじめたのですが…
778デフォルトの名無しさん:2007/11/26(月) 22:49:54
好きなだけ__int__と__str__を呼べよ
779デフォルトの名無しさん:2007/11/26(月) 22:54:10
python は正規表現や範囲がライブラリでのサポートになってるとか、
ruby とかゴリゴリに高級言語してるような言語よりは
C++ のようなものに近い感覚。
780デフォルトの名無しさん:2007/11/26(月) 23:02:28
文句は使いこなしてから言え。
781デフォルトの名無しさん:2007/11/26(月) 23:08:32
>>775
たしかにそれ欲しいよな。
俺なんか、strタイプするの苦手だから、str関数ラップしたsっていう関数作ってそれ使ってるぜ。
これならマジ簡単。お前もやってみな。
782デフォルトの名無しさん:2007/11/26(月) 23:15:53
>>775
print u'しね'.endoce('utf-8')
783デフォルトの名無しさん:2007/11/26(月) 23:23:39
>>775
str(obj)は、実際には obj.__str__() を呼び出している。
ただ、RubyのようにすべてのルートとなるObjectクラスみたいなのがPythonにはないから、RubyのようにObjectにメソッド定義すればどのクラスでも使えるようになるという便利機能はない。
784デフォルトの名無しさん:2007/11/26(月) 23:23:43
>>749
とりあえず

マルチバイト文字列は内部的に「Unicode(UTF-8)」として扱われます。

なんて記述が許せないなら跨いで通った方がいいよ
785デフォルトの名無しさん:2007/11/26(月) 23:44:46
サンプル三枚目の日本語にいらいらする
786デフォルトの名無しさん:2007/11/26(月) 23:50:55
>>783
Rubyってルートオブジェクトに属性追加して拡張するのが普通なの?
だとしたらとてもuglyだね
787デフォルトの名無しさん:2007/11/26(月) 23:51:34
>>784
そうなのか。初めて知ったよ。
ずっとファイルで指定したエンコーディングか
sys.getdefaultencodingが使われていると思っていたよ。
788デフォルトの名無しさん:2007/11/26(月) 23:53:19
>>783
strもobjectを継承してるだろ
789デフォルトの名無しさん:2007/11/26(月) 23:55:25
内部的にはUTF-16だろ。
790デフォルトの名無しさん:2007/11/27(火) 00:05:40
>>789
サロゲートペアに対応してない気がするが
791デフォルトの名無しさん:2007/11/27(火) 00:13:02
UCS-2というべきか。
UCS-4の可能性もあるみたいだな。

UTF-8はありえないが。
792デフォルトの名無しさん:2007/11/27(火) 00:14:55
>>784 >>749
すくなくとも著者はコンピュータ素人
たまたま何かのきっかけでPython触って
俺にも書けそうだと思って本書いただけ
本の中身だけじゃなくてネーミングが許せない
793デフォルトの名無しさん:2007/11/27(火) 00:15:06
Pythonもメタクラスあるんだからメソッド追加しろよ
と思ったら、ビルトインなクラスは無理なんだな

ちなみに>>786さんはAOP嫌い?

メタクラスプログラミングは賛否両論あると思うけど
他のプログラムに対して影響を与えないのなら、ありだと思うけどね
794デフォルトの名無しさん:2007/11/27(火) 00:22:09
ttp://ns.jk.to/zwiki/Nikki/PEP0263

ここに出てくるUnicodeっていうのが具体的に何を指すのかわからないので
漏れは読んでいていまひとつピンとこないのだが
Unicodeにデコード、って言ってるぐらいだからエンコーディングスキームっぽいけど
795デフォルトの名無しさん:2007/11/27(火) 00:22:40
Pythonのポケリファ本出してくれよ
ライブラリ探すの大変なんだよ
796デフォルトの名無しさん:2007/11/27(火) 00:25:29
>>793
Objectへのメソッド追加以外にも
未知のメソッドが呼ばれたときにでも
それをあるものとして実行する方法があったよね
797デフォルトの名無しさん:2007/11/27(火) 00:32:15
>>795
これなんかどうだろう
ttp://www.amazon.com/dp/0672328623/

ジュンク堂でみたときは6000円くらいで売ってたけど
日本のamazonで買ったらもっと安いはず
798デフォルトの名無しさん:2007/11/27(火) 00:33:41
と思ったら5195円か
すまそ

直輸入してください
799デフォルトの名無しさん:2007/11/27(火) 00:34:01
Pythonに限らずUnicodeって言葉だけで
中身が分からんものが多いよな。

公式配布のCPythonは>>791のUCS-2(16bit)orUCS-4(32bit)相当。
どれだか忘れたけどUCS-4コンパイルされているLinuxディストリも確かにある。

サロゲートペアなどには対応してないから、UTF-16ではない。

JythonはJavaに準じるのかな?
800デフォルトの名無しさん:2007/11/27(火) 00:34:11
>>791
configureで--enable-ucs4を付けたらUCS-4で、デフォルトはUCS-2だったと思う。(うろ覚え)
801デフォルトの名無しさん:2007/11/27(火) 00:46:05
Unicode関係のゴタゴタ見るたびに関係者死ねよって思ってしまう
802デフォルトの名無しさん:2007/11/27(火) 00:48:44
etreeってあるだろ?
これUnicode喰ってくれないんだぜ……
803デフォルトの名無しさん:2007/11/27(火) 00:59:35
Pythonは日本語処理が苦手っていうのが
あちこちのブログで書かれてるんだけど

1)それは過去の話で今のPythonはそんなことはない
2)いまだにその状況は続いている
3)プログラム書く香具師が分かってないのでPythonに濡れ衣

どれだと思いますか?
私的には 1)-3) だと思ってるんですが
804デフォルトの名無しさん:2007/11/27(火) 01:03:47
文字コードの自動判定をする関数がデフォルトで用意されていないのが大きいと思う。
805デフォルトの名無しさん:2007/11/27(火) 01:03:54
言語の内部処理形式のUnicodeっていうとUCS-2が多い・・・はず。
UTF-8みたいな、可変長文字コードは内部形式としては扱いにくいんじゃないか・・・
でもPerlはUTF-8なんだよな。
もともとはUnicode イコール UCS-2のことだったはずだが、
今は必ずしもそうとはいえない・・・まあ、UCS-2が多いと思うんだけど。

>>794 は書いてあるとおりソースコードの文字コードを処理系に認識させる仕組みの話。
最近の言語処理系はソースコードをUTF-8で書くことが推奨されているものが多いけど、
内部形式はまた別の話。文字コードを認識したら処理系は内部形式に変換してしまう。

あと、python の defaultencoding は、標準入出力なんかのデフォルトコードを指定して
いるだけ。terminal出力時の文字化けなんかへの対応に使われる。ロケールってやつ?
処理系内部の文字コードが制御できるわけではない。
806デフォルトの名無しさん:2007/11/27(火) 01:04:00
sjisコードの中でsjis日本語のパス名にos.path.normcaseを使うと文字化けすることがあるし
未だに尾を引いてるように感じる
807デフォルトの名無しさん:2007/11/27(火) 01:12:02
>>806
それはSJISの問題だろ
808デフォルトの名無しさん:2007/11/27(火) 01:13:19
minna ro-majide kaiwasureba yokune???
809デフォルトの名無しさん:2007/11/27(火) 01:20:20
Ruby流の obj.to_s() はホントに文字列を返してるのか疑ってしまう
str(obj) はちゃんと __str__() の返値をチェックしてるのが好き
そんなワケで俺はRでも String(obj) 派だな
810デフォルトの名無しさん:2007/11/27(火) 01:23:11
>>806
ちゃんと Unicode に変換すればそんな事にならないよ
つまり ascii のみと Unicode 文字列にしか対応しない
という点で首尾一貫している
811デフォルトの名無しさん:2007/11/27(火) 01:37:07
Pythonて
if !式:
みたいな書き方できないの?
812デフォルトの名無しさん:2007/11/27(火) 01:38:20
Rubyでやれ!
813デフォルトの名無しさん:2007/11/27(火) 01:42:39
ってかfalseでも受けつけないんだ・・・
どんだけセンシティブだよ
ガラスの小瓶か
814デフォルトの名無しさん:2007/11/27(火) 01:53:31
>>803
Python だとバイト文字列をバイト文字列のまま扱おうとするとはまる
でもスクリプト言語だとそれが出来る
(本当は出来てないけどたまたま通ってしまうというのも含めて)
のが多いから
そこらへんの常識のギャップでそういうイメージが出来てしまっているのだと思う
815デフォルトの名無しさん:2007/11/27(火) 01:55:18
情報としてまとまってるのはこのへんかな
ttp://python.matrix.jp/tips/string/encoding.html
816デフォルトの名無しさん:2007/11/27(火) 01:59:22
>>806
それはSJISの問題であってPythonの問題ではないし
Windowsの環境だけで動けばいいやっていうひとは
(そういうひとにとって)意味不明なトラブルを回避するために
プログラム中ではすべてutf-8で処理して
入出力だけsjisにする習慣にするといいと思う
(決して内部コードがutf-8という意味ではないよ)
817デフォルトの名無しさん:2007/11/27(火) 04:31:49
マルチバイト文字列ってstrのことだよな。
内部的にUCS-2orUCS-4に変換してるのか。
818デフォルトの名無しさん:2007/11/27(火) 04:42:37
strはただのバイト列だそ?
そこにマルチバイト入れるのは勝手だけど。

>>816
Unicodeじゃなくてutf-8(str)なの?
まんどいことこの上ない。
819デフォルトの名無しさん:2007/11/27(火) 06:08:43
pythonはRubyみたいに
整数や文字列はメソッドを持っていないんですか?
型変換をstr()のような関数を使わず
それ自体のメソッドでやりたいんですが
820デフォルトの名無しさん:2007/11/27(火) 06:22:24
ループ開始
おれはキャストしてるような今の形の方が自然に感じるなあ
821デフォルトの名無しさん:2007/11/27(火) 08:57:32
そんなにやりたきゃ __str__() 直接呼べばw
822デフォルトの名無しさん:2007/11/27(火) 09:20:32
WxPython 使ってる?
命名規則で悩むんだけど、WxPython を組み込む時って
WxPythonの流儀(キャメルスタイル)に合わせる?
それとも、あくまでも Python標準と思われる小文字+アンダースコアで統一する?
823デフォルトの名無しさん:2007/11/27(火) 09:23:01
>>822
Python標準にしてる。
それと、WxPythonじゃなくてwxPythonだろ。
824デフォルトの名無しさん:2007/11/27(火) 09:41:28
もうひとつ。いま、GUIプログラムを作っていて、これは4つのレイヤにわかれてるのよ。
•レイヤ0 -- アプリケーション根幹部分を実装したモジュール(プラットフォーム非依存)
•レイヤ1 -- コマンドラインによってアプリケーション根幹部分を操作するためのCUIモジュール(プラットフォーム非依存)
•レイヤ2 -- マウスからの入力情報をコマンドライン文字列に変換したり、描画のための情報を生成するGUIモジュール(プラットフォーム非依存)
•レイヤ3 -- WxPython や Win32Api などを使って実際に GUI 情報を生成するためのモジュール(プラットフォーム依存)

俺は今
core/main.py
core/sub.py
cui/main.py
cui/sub.py
gui/main.py
gui/sub.py
wx/main.py
wx/sub.py
こんな感じにしてるんだけど、wx っていうパッケージ名(wxライブラリと同じ名前)とか、
パッケージ名が違うだけでフィアル名は同じとか、なんか混乱の元になりそうな気がする。
みんなだったらどういうふうにファイル&パッケージ命名する?

825デフォルトの名無しさん:2007/11/27(火) 09:42:43
>>823
あ、失礼 wxWidgets/wxPython だった
やっぱりPython側で統一か
826824:2007/11/27(火) 09:48:13
>>824 に追加。それぞれの main.py には class Main が、
それぞれの sub.py には class Sub があるんだけど、このクラス名も
同じ名前がたくさんあって
確かにパッケージ名によって区別は付けられるんだけど、
なんか混乱の元になりそうで怖い。
827デフォルトの名無しさん:2007/11/27(火) 10:07:56
>>> a=1
>>> a.__str__()
'1'
>>> b='abc'
>>> b.__len__()
3
828デフォルトの名無しさん:2007/11/27(火) 10:12:01
>>822
使ってますよ
あと WxPython じゃなくて wxPython だよ
829デフォルトの名無しさん:2007/11/27(火) 10:15:17
>>824
core/main.py
core/sub.py
cui/main.py
cui/sub.py
gui/main.py
gui/sub.py
frontend/main.py
frontend/sub.py

とか

>>824 に追加。それぞれの main.py には class Main が、
>それぞれの sub.py には class Sub があるんだけど、このクラス名も
>同じ名前がたくさんあって
>確かにパッケージ名によって区別は付けられるんだけど、
>なんか混乱の元になりそうで怖い。

ここは同感
830デフォルトの名無しさん:2007/11/27(火) 11:08:32
ubuntuがフォルダー名を日本語で「デスクトップ」とかつけるからpython使うの怖い
831デフォルトの名無しさん:2007/11/27(火) 11:14:47
macosx でもファインダー(Windowsでいうエクスプローラ)上では「デスクトップ」ってなってるけど、
コマンドラインでアクセスすると desktop って名前になってる。
> cd デスクトップ
ってやってもアクセスできない。
本名は desktop だけど、GUI上でのみ通用する別名が定義されている感じ
そういうシステムが windows にもあればなあって思う事が多々ある
832デフォルトの名無しさん:2007/11/27(火) 11:29:25
>>831
> そういうシステムが windows にもあればなあって思う事が多々ある
あるよ。「マイ ビデオ」とかはそうなってる。
でもなぜかデスクトップの実体は「デスクトップ」なんだよ。
API経由で特殊パス取得すればいいんだけど謎ではある。

>>830
ubuntuは基本utf-8だから問題はおこらないような。
833デフォルトの名無しさん:2007/11/27(火) 11:43:17
>>783
>ただ、RubyのようにすべてのルートとなるObjectクラスみたいなのがPythonにはないから

Pythonで「ほぼ」すべてのオブジェクトのルートになってるのは「object」だろ。
アトリビュート追加したりして変更できないけど。
834デフォルトの名無しさん:2007/11/27(火) 11:46:28
デスクトップは自分で変更すればおk
何かと便利になる
835デフォルトの名無しさん:2007/11/27(火) 13:14:28
Macの勝ち
836デフォルトの名無しさん:2007/11/27(火) 15:50:31
はじぱい
837デフォルトの名無しさん:2007/11/27(火) 16:21:34
http://www.amazon.co.jp/gp/product/images/4797341815/

ものすごいデザインだな・・・
838デフォルトの名無しさん:2007/11/27(火) 16:27:38
ほんとだ・・・こりゃ黒い
839デフォルトの名無しさん:2007/11/27(火) 16:37:29
実物はたいしたことないだろうけど、webで見ると何このアレさ加減…
840デフォルトの名無しさん:2007/11/27(火) 16:38:41
ま、まあ・・・
大事なのは中身だよ!中身!
841デフォルトの名無しさん:2007/11/27(火) 16:40:33
はじぱいよりはましだといいけど
842デフォルトの名無しさん:2007/11/27(火) 17:11:52
centos4に入ってるpythonが2.3で古いんですが
システム管理に使ってるので削除しない方がいいらしいです
パッケージ版とソースからと二ついれるのが普通ですか?
843デフォルトの名無しさん:2007/11/27(火) 17:15:37
新旧ぶつからないように入れればいいんじゃないの
844デフォルトの名無しさん:2007/11/27(火) 17:19:18
なぜか巻き添え喰らってるLutzカワイソス
こうjなるとネーミングに問題ありと言わざるを得ない

自分はとりあえずApressから出るDjango本に期待。
845デフォルトの名無しさん:2007/11/27(火) 17:26:08
Zopeをめちゃめちゃ親切に教えてくれるサイトってあるかなあ?
846デフォルトの名無しさん:2007/11/27(火) 17:28:18
847デフォルトの名無しさん:2007/11/27(火) 17:31:01
すみません
この本↓持ってるかたがいらっしゃったらお伺いしたいのですが、
ttp://www.amazon.jp/products/dp/1932394621/

これのサンプルって最新のバージョン(wx.hogehoge の記述の方)ですか?
848デフォルトの名無しさん:2007/11/27(火) 17:32:21
めちゃくちゃハードル高そうなんでつが
849デフォルトの名無しさん:2007/11/27(火) 17:34:04
>>842
./configure --prefix=$HOME
850デフォルトの名無しさん:2007/11/27(火) 17:47:13
851デフォルトの名無しさん:2007/11/27(火) 18:02:25
>>847
サンプルはみんな import wx 前提だよ。
from wxPython import wx とかはしてない。
852デフォルトの名無しさん:2007/11/27(火) 18:20:51
>>850
ありがとうございました
853デフォルトの名無しさん:2007/11/27(火) 18:21:28
>>851
ありがとうございました
854デフォルトの名無しさん:2007/11/27(火) 18:23:07
ttp://www.manning.com/foord/

なんかこの本もほしくなってきました
855デフォルトの名無しさん:2007/11/27(火) 18:51:30
>>837
>http://www.amazon.co.jp/gp/product/images/4797341815/
>
>ものすごいデザインだな・・・

デザインっつーか色な、色。
856デフォルトの名無しさん:2007/11/27(火) 19:14:26
元のみんぱいのRGBの輝度反転しただけなんかな
857デフォルトの名無しさん:2007/11/27(火) 19:36:26
>>841
その略称は「初めてのPython」のためのものです
似たようなタイトルの本は存在しません
858デフォルトの名無しさん:2007/11/27(火) 20:01:09
恥ぱい
にしようよ
859デフォルトの名無しさん:2007/11/27(火) 22:35:21
中身の質以前に、ネーミングの根性が気に入らないから、
俺の脳内略称にはそれ採用させてもらうよ
860デフォルトの名無しさん:2007/11/27(火) 22:57:13
>>837
なんというためになりそうな本。
ぜひみんな購入するべき。
861デフォルトの名無しさん:2007/11/27(火) 23:06:46
pythonのリストのスライシングは
[開始インデックス:終了インデックス+1]
のようですが、何故終了インデックス+1なんでしょう?
わかりにくくないですか?
[開始インデックス:終了インデックス]
にしたらいいのに。
862デフォルトの名無しさん:2007/11/27(火) 23:08:23
スライスだからさ
863デフォルトの名無しさん:2007/11/27(火) 23:10:54
|A|B|C|D|E|F|
ここからCDE(index:2,3,4)を取り出すとしたら、index:2とindex:5の仕切りでスライスするから。
864デフォルトの名無しさん:2007/11/28(水) 00:04:54

[2,5)

みたいな表記だと分かりやすかったとは思う
865デフォルトの名無しさん:2007/11/28(水) 00:14:29
解析器には分かりにくそうだ
866デフォルトの名無しさん:2007/11/28(水) 00:16:32
数学表記に逆らってるんだよな。
他の言語とも違うし。
867デフォルトの名無しさん:2007/11/28(水) 01:00:41
index を 0 からじゃなく 1 からにするべきだったな
868デフォルトの名無しさん:2007/11/28(水) 01:46:14
C++のSTLの begin と end のしきたりに慣れている人なら自然に受け入れられると思う
空っぽの区間も表現できるので表現力が高いし
869デフォルトの名無しさん:2007/11/28(水) 04:25:47
>>868
C++もSTLも知らない人間には何の根拠にもならん
870デフォルトの名無しさん:2007/11/28(水) 04:33:43
あーなるほど
空っぽの区間が表現できるということか・・
871デフォルトの名無しさん:2007/11/28(水) 04:38:05
>>869
ここでいう「C++やSTLのしきたり」は決して独特なものではないから、
それは「C++もSTLも知らない人間」の意見というより、それも含めてろくにモノを知らない人間の意見、
という感じだね。
872デフォルトの名無しさん:2007/11/28(水) 04:39:47
Pythonてブロックがインデントだけに規定されてるから
うっかりインデントを削除しすぎてしまった時に
その行がどのブロックに属するのか分からなくならない?
873デフォルトの名無しさん:2007/11/28(水) 05:19:44
うん、分からない。
874デフォルトの名無しさん:2007/11/28(水) 06:36:13
バックアップくらいとるだろ不通
875デフォルトの名無しさん:2007/11/28(水) 07:00:10
>>872
意味分かって書いてたらそんなことない
876デフォルトの名無しさん:2007/11/28(水) 07:07:58
分かっててもやっちゃうのが 「うっかり」
877デフォルトの名無しさん:2007/11/28(水) 07:25:09
>>872
つ Ctrl+Z
878デフォルトの名無しさん:2007/11/28(水) 07:38:23
>>872
if、while、defの次ならインデントとか、勝手にきまるんじゃね?
つか、コロンで終わる行の次がインデントな希ガス。
879デフォルトの名無しさん:2007/11/28(水) 08:06:02
この辺の買ったひといますか
ttp://www.cafepress.com/wxpython
880デフォルトの名無しさん:2007/11/28(水) 08:07:06
>>878
インデントは決まるけどアンインデント(インデントを1個引っ込める)のは決まらない
881デフォルトの名無しさん:2007/11/28(水) 08:07:18
>>878
終わりが一意に決まらない

意図的に空行で切ってるケースもあるみたいだけど
882デフォルトの名無しさん:2007/11/28(水) 09:39:13
大抵の言語でもうっかり{}消したら分からなくなる
883デフォルトの名無しさん:2007/11/28(水) 10:10:12
>>879
マグカップの文は何て書いてあるんだろう
商品説明みても全文がわからん
884デフォルトの名無しさん:2007/11/28(水) 10:34:55
Cからの流れで用意してあるのだろうけど、
ビット演算のための演算子[&, |, ^, ~, >>, <<]が存在することに
違和感を感じるようになった。

ビット演算の対象はビット幅固定だと思うが、
組み込みの数値は型拡張される。
バグが混入しやすいし、気づきにくい。
(安全にやるには、専用のクラスと関数を用意することになる)

もう非推奨→廃止にしてもいいと思わね?

で、そのあとに新しい使い道でも…
885デフォルトの名無しさん:2007/11/28(水) 10:39:33
>>872の問題ってさあ、ソースをコピペしたあとにソースを整形するのにこまるんだよね。
886デフォルトの名無しさん:2007/11/28(水) 10:42:39
そうですか
887デフォルトの名無しさん:2007/11/28(水) 10:44:30
>882
すばらしい洞察
888デフォルトの名無しさん:2007/11/28(水) 10:48:09
ブロックの無いアセンブラ最強
889デフォルトの名無しさん:2007/11/28(水) 10:57:11
emacsだとpassがアンインデントの機能を持つ。
だからpassを書けばオートインデントも効くのだけど
毎回passを書くのはちょっとpythonらしくない。
rubyのendを思い出してしまう。
890デフォルトの名無しさん:2007/11/28(水) 11:51:29
return とかもアンインデントのヒントだね。emacs では。
pass は書きたくないけど、書いたほうがなんとなく安全だなあ。
と、最近思い始めてる。

ただ、下記のようなコードが

if 0:
   if 0:
      exec(...)

passで明示するために下記にまでなるってことだよね。。。ひどい。
if 0:
   if 0:
      exec(...)
      pass
   else
      pass
else
   pass
891デフォルトの名無しさん:2007/11/28(水) 12:21:39
elseのとこにpassを書くんじゃだめなの?
892デフォルトの名無しさん:2007/11/28(水) 12:40:39
http://www.python.jp/Zope/workshop/200712

社内ヒキコモリのおまえらには関係ないと、念のため思うけど張っておきますね。
893デフォルトの名無しさん:2007/11/28(水) 12:46:23
オートインデントに頼らない
894デフォルトの名無しさん:2007/11/28(水) 14:08:11
895デフォルトの名無しさん:2007/11/28(水) 14:18:58
>>891

>>890 は else: を else と書いている時点でモグリ
896デフォルトの名無しさん:2007/11/28(水) 14:20:10
ここにはモグリとヒキコモリしかいません。
897デフォルトの名無しさん:2007/11/28(水) 14:34:11
イモリならここに。
898デフォルトの名無しさん:2007/11/28(水) 14:46:13
タモさんはアルタに。
899デフォルトの名無しさん:2007/11/28(水) 14:54:36
Pythonをやれるオハケンってありますか?
900デフォルトの名無しさん:2007/11/28(水) 15:00:30
あるわけないだろ常考(wwwwwwwwwwwwwwww
901デフォルトの名無しさん:2007/11/28(水) 15:01:29
>>891
ダメじゃない?
902デフォルトの名無しさん:2007/11/28(水) 15:06:27
if 0:
  if 0:
    exec(...)
    pass
  pass
pass

これはOK
903デフォルトの名無しさん:2007/11/28(水) 15:21:18
オハケンならJAVAのほうがいいんですか?
904デフォルトの名無しさん:2007/11/28(水) 15:34:54
>>902
最後の一つは要らなくね?
905デフォルトの名無しさん:2007/11/28(水) 15:50:36
Pythonに見られるインデントによる制御構造の是非
ttp://pc11.2ch.net/test/read.cgi/tech/1169473442/

たまにはオレのことも思い出してください。
906デフォルトの名無しさん:2007/11/28(水) 16:26:50
ま、いずれにせよ、インデント壊れるのを防ぐのに
pass 入れるっていう選択肢は選びにくいな。

実際のところ、たまに ruby とか書くと end がウザいな
ってちょっとは思う。ってことはやっぱ python のインデント
式はオレに合ってる。それだけのこと。
907デフォルトの名無しさん:2007/11/28(水) 16:42:32
ttp://nul.jp/2002/pd_py

これでどんなことができるんでしょうか。。
908デフォルトの名無しさん:2007/11/28(水) 16:46:24
endのウザさと
ブロックが壊れるリスクのトレードオフってことっすか
909デフォルトの名無しさん:2007/11/28(水) 16:47:02
普通にやってりゃ壊れないし
910デフォルトの名無しさん:2007/11/28(水) 17:31:06
インデント破壊ウイルス
発症すると画面上の文字が左に落ちる。
環境: MS-DOS
911デフォルトの名無しさん:2007/11/28(水) 18:14:01
>>884
ビット演算を使う時というのはビット毎に意味のある場合だから
最初にマスクしてから使うのでそんな事が問題にはならない

そこらへんは INT のビット数が処理系で変わる C でも同じ
912デフォルトの名無しさん:2007/11/28(水) 18:28:52
>908
壊れるリスクってのは python 使ってない
脳内君の世界での話だと思う…
913デフォルトの名無しさん:2007/11/28(水) 18:39:17
viだったらCTRL+Z効かないから
うっかり壊すことあるじゃん
914デフォルトの名無しさん:2007/11/28(水) 18:49:27
すみません
インデントするときに参考にしたいのですが

a)タブ4
b)タブ8
c)スペース2
d)スペース4
e)それ以外

みなさんどれですか?

あとスペース2とタブ2を同時に使うと
見た目は同じ位置でも
インデント違うとみなされますよね?
915デフォルトの名無しさん:2007/11/28(水) 19:10:20
>>912
逆じゃない?
壊れるリスクがないって言ってるのは使ってても趣味レベル
916デフォルトの名無しさん:2007/11/28(水) 19:17:14
>>914
こんな所で下らんこと聞いてる暇があったら以下を読むべきでは?
ttp://oldriver.org/python/pep-0008j.html
917624:2007/11/28(水) 19:18:55
カッコとインデントが両方あるのは冗長といえば冗長だが、どっちかがおかしくなった
ときにもう片方があるとなにかと心強いんだよな。ソースは基本的に人間がいじるもの
なのでいくら気をつけたつもりでもたまには間違う。

pythonのようにインデントのみだとずれたらそれっきりで、相当気合入れて読まないと
直せないのがつらいね。
918デフォルトの名無しさん:2007/11/28(水) 19:21:45
>910
cascadeか・・・懐かしい。実際に見たことはないけど(そして落ちる方向違うけど)
919デフォルトの名無しさん:2007/11/28(水) 19:22:36
>>914
俺は d だ。
「タブは使わないほうが良い」とかなんとかというのが、どっかPEPかなんかに書いてあったと思う。
920デフォルトの名無しさん:2007/11/28(水) 19:29:19
>>917
いや、読んで理解してからいじれよ
>>885
つかコピペすんな
921デフォルトの名無しさん:2007/11/28(水) 20:31:47
>>837
なんというためになりそうな本。
ぜひみんな購入するべき。
922デフォルトの名無しさん:2007/11/28(水) 20:33:29
>>916
ありがとうございました
923デフォルトの名無しさん:2007/11/28(水) 20:38:42
>>921
ありがとうございました
924デフォルトの名無しさん:2007/11/28(水) 20:56:48
>>923
上の方で俺の気分を害すレスが合ったが、なんか癒された。
ありがとうございました
925デフォルトの名無しさん:2007/11/28(水) 21:54:11
>>911
反応あってよかった。

C だと変数に型があるから、マスクしないケースがあるじゃない。
int のビット数も typedef で依存を吸収しようとするし。

そうでない場合でも、アーキテクチャの自然の大きさに収まることを当てにしていると思う。
Python の int は多倍長拡張されて、どこまでーも大きくなっていくけど。

それに C と Python  を比較すると、
ビット演算の頻度・重要性が逆方向を向いてると思うんだ。
926デフォルトの名無しさん:2007/11/28(水) 21:58:24
Cなら
> UINT8 ch = 0xAA
0xAA
> ch = ch << 4
0xA0
> ch = ch >> 5
0x05
> ch = ch * ret_float_fn(1.1)
0x05

Pythonの組込み数値だと、うれしくない現象が何かとある。
> ch = 0xAA
0xAA
> ch = ch << 4                 # どこまでも大きくなっていく
0xAA0
> ch = ch >> 5                 # 当然↑の値で右シフトされる
0x55
> ch = 0x05
> ch = ch * ret_float_fn(1.1)  # floatになってしまう
5.5
927デフォルトの名無しさん:2007/11/28(水) 22:00:22
アホくせ
928デフォルトの名無しさん:2007/11/28(水) 22:01:03
組込み数値ではなくて、
クラスとメソッドと関数の方がいろいろと便利な気がする。

> ch = Bit(0xAA,width=8)
0xAA
> ch = ch.sft_l_logic(4)        # 論理左シフト
0xA0
> ch = ch.sft_r_arithmetic(4)   # 算術右シフト
0xFA
> ch = ch.rot_l(ch, 1)          # ローテートだって出来る
0xF5
> ch = Bit(0x05,width=8)
> ch = ch * ret_float_fn(1.1)
RuntimeError
> ch = int(ch) * ret_float_fn(1.1)
5.5
> ch = Bit(ch, width=8)
0x05

このケースだと、別に演算子を使ってもいいけど、
使わなくてもいい訳で。

少なくとも組込み数値に対しては、C のような簡便な記法にはないない。
マスクの必要があったり、型が変わったりしないかと心配事が多い。


それで自由になった演算子を、さて、何に使うか……
929デフォルトの名無しさん:2007/11/28(水) 22:02:25
Haskell
[x,y,z | x <- xs, y <- ys, z <- zs, z > 0]

Python
[x,y,z for x in xs for y in ys for z in zs if z > 0]

Haskellに嫉妬中w


[x,y,x | x << xs, y << ys, z << zs, z > 0]

例えば、こんな感じに使えないかなーとか妄想。('|'の右のコンマは無理か?)

長文 糸冬 了..._〆(゚▽゚*)
930デフォルトの名無しさん:2007/11/28(水) 22:05:31
マスクすればいいだけじゃん
C言語との互換性を気にしてる癖にわけわかんないことしてるし
931デフォルトの名無しさん:2007/11/28(水) 22:11:59
ビット演算子は無くてもいい気がするけど、それを別のに使うってのは嫌だ
932デフォルトの名無しさん:2007/11/28(水) 22:19:55
要素が1つしかないとわかっている集合から、
その唯一の要素を取り出す上手い方法はないでしょうか?

今は

for x in singleton_set:
 the_element = x

とやっていますが、もう少しましな方法があれば教えてください。
933デフォルトの名無しさん:2007/11/28(水) 22:33:05
iter(singleton_set).next()
tuple(singleton_set)[0]
singleton_set.__iter__().next()
934デフォルトの名無しさん:2007/11/28(水) 22:35:53
ありがとうございました
935デフォルトの名無しさん:2007/11/28(水) 23:27:00
>>930
C言語との互換性を気にした理由は、

  ・Pythonのビット演算に対して影響がある
  ・アセンブラの次にビット演算を多用している言語
  ・ビット演算子はC言語のように振る舞うべき
   (同じ表現に対して同じ結果が得られるべき)

と考えているから。
でも、Pythonで3番目の結果を得られない。

似てるようで似ていないというのが、
いい状態なのかという疑問がある。

マスクの必要性があるというのは、C言語から乖離があるわけだし、
いちいちマスクするなら、専用のクラスを設けた方が楽になる。
そしてビット演算子を無くしてしまえば、C言語のそれと混同することがない。


>>929は、無くなったら別の使い道もあるだろうという、一石二鳥の考え。

まぁ、今のPythonの(劣化)ビット演算が無くなって、
混乱する人がゼロになるだけでもいいと思うんだけど。
936デフォルトの名無しさん:2007/11/28(水) 23:36:00
>>935
要するにこういうことか。

bit演算で俺は混乱した。俺は悪くない。悪いのは言語仕様だ。
937デフォルトの名無しさん:2007/11/28(水) 23:39:17
四の五の言う暇でPEPと「専用のクラス」を書いてpython-devに投げろ。
938デフォルトの名無しさん:2007/11/28(水) 23:41:04
その通り。

PythonでBitクラスを作ったが遅い。
Cで実装したやつを配布しろ。

[x,y,z for x in xs for y in ys for z in zs if z > 0] 
それとこれは自分で書いても読めないぞ。
Haskell程度にしてくれ。

この2点だ。
939デフォルトの名無しさん:2007/11/28(水) 23:45:48
>>937
いきなり投げられないからここに投げたんよ。

[x,y,x | x << xs, y << ys, z << zs, z > 0] 
こういうのが書けるか俺には分からんし。
940デフォルトの名無しさん:2007/11/28(水) 23:47:35
かわいそうなメーリングリスト・・・
941デフォルトの名無しさん:2007/11/29(木) 00:19:00
forループ書けよ的な
942デフォルトの名無しさん:2007/11/29(木) 00:21:16
>>741
amazonにどんなレビューが載るかwktkが止まらないwww
943デフォルトの名無しさん:2007/11/29(木) 02:55:49
>>935
C言語のように振る舞ってるだろ
ビット数決め打ちのCソースがそもそも間違っているわけだから
本来CでもPythonでやるようにしないと駄目なわけで
944デフォルトの名無しさん:2007/11/29(木) 07:28:21
Python と C の両方で有効な式は両言語において同じ値を持つべきだ、という意見は
理解できるし部分的には賛同するけど理想論だね。

個人的には Python の << 演算子でビット長がどんどん拡張される仕様は合理的だと思う。
C で同じ挙動を得ようと思ったらかなり大変だけど、Python で C と同じ挙動を得るのは
簡単(マスクするだけ)だから。
945デフォルトの名無しさん:2007/11/29(木) 08:46:49
C言語と挙動が違うのは、Pythonが通常の整数→多倍長整数への自動拡張を
するからであって、ビット演算だけでなく足し算のオーバーフローの挙動が違う。
0xffffffff + 1 が 0x100000000 なのに、 0xffffffff << 1 が 0xfffffffe になるべき
とかいうヤツはバカ。

だいたい、C言語なんていう環境依存を許容しまくりの言語の挙動をマネる
なんて理想からかけ離れている。
946デフォルトの名無しさん:2007/11/29(木) 09:22:01
>>945
同意。Cの制限をわざわざPythonに持ち込む必要はないと思う。
Cにマシン依存の制限がでるのはしょうがない。でもPythonはより高水準な言語なんだからそういうのはうれしくない。
CとPythonは違うもんだと思えばよくね?
947デフォルトの名無しさん:2007/11/29(木) 10:17:51
>>943
CがUnix記述のために作られて
今は全てのハードに使われていることを考えると、
Cは間違ってないし、
またCがPythonのように振舞うべきでもないと思う。

>>944
マイナス値なども合理的かつ有用な振る舞いだよね。


# ----
ところでビットが左に成長するなら、
右の成長も小数点を中心にして
あるんじゃないかと思うんだけど。

> ((1 << 100) >> 100)
1
> ((1 >> 100) << 100)
0
> 1.0 >> 1
TypeError
948デフォルトの名無しさん:2007/11/29(木) 10:27:25
>>947
確かに、将来 3/2 が 1.5 になったら、その仕様もアリかもね。

でも、基本的に数値とbit列は違う概念で、bit列を扱うのに整数の
型に入れると便利というだけだから、bit演算を実数の世界に
持ち込む必要は無いと個人的に思う。
949デフォルトの名無しさん:2007/11/29(木) 13:17:24
固定小数点? に類似概念を適用するのは
チョビッとだけ興味深い気がするけど
ビット演算の意味を考えると意味がない気がする
950デフォルトの名無しさん:2007/11/29(木) 13:52:41
> 1.0 >> 1
TypeError

このTypeErrorpは浮動小数点数はshift出来ないっていう意味であたりまえ

問題は
1.0 が binary だということを明示したとき
たとえば
0b1.0 >> 1
とかを許すか
ということ
951デフォルトの名無しさん:2007/11/29(木) 14:30:27
`バッククオート`ってstr()と同じなのかな。

str()自体のタイプ数が少ないせいか
ありがたみを感じないけど、使っている人いる?
(変なディスプレイとフォントだと'シングルクォート'と間違えそう)

↓特殊効果があるかと思ったけど違うみたいだし……
>> a = 1
>> b = 2
>> print "a+b=`a+b`"
a+b=`a+b`  
a+b=3    ×

952デフォルトの名無しさん:2007/11/29(木) 14:54:50
>>951
str()じゃなくてrepr()といっしょ。
ttp://www.python.jp/doc/release/ref/customization.html#l2h-179
953デフォルトの名無しさん:2007/11/29(木) 15:08:32
>>952
thx
特に効能は無いのですな。残念。

でもよく考えると
>>951はセキュリティホール…
954デフォルトの名無しさん:2007/11/29(木) 15:53:31
py3ではバッククオート自体が無くなるので注意
955デフォルトの名無しさん:2007/11/29(木) 17:05:36
使われてないし、存在意義が無いと…
956デフォルトの名無しさん:2007/11/29(木) 18:32:28
strとかreprあればそっちのが分かりやすいしなあ
957デフォルトの名無しさん:2007/11/29(木) 19:25:23
わざとオーバーフローしたいときのために
ビット数を制限できるようにもできたら面白いかも
958デフォルトの名無しさん:2007/11/29(木) 20:15:17
>> a = 1
>> b = 2
>> print "a+b=%d" % a + b
959デフォルトの名無しさん:2007/11/29(木) 20:54:22
ありがとうございました
960デフォルトの名無しさん:2007/11/29(木) 21:38:07
>> a = 1
>> b = 2
>> c = 1000
>> print "(a + b) * c = %d" % (a + b) * c
961デフォルトの名無しさん:2007/11/29(木) 23:03:59
10進数をN進数に変換するもっともいい方法はどんなのでしょうか。
int(str(val), N)
をつかっているのですが、もしよりよい方法があったら教えてください。
962デフォルトの名無しさん:2007/11/29(木) 23:12:13
>>961
すみません、これ間違いですね。これだとN進数を10進数に変換してしまいます。
やべー、今まで大間違いしてた。
963デフォルトの名無しさん:2007/11/29(木) 23:22:33
>>961
もっともよいか知らんが
easy_install gmpy
で、入れて

from gmpy import digits
digits(val,N)

っていうのだったらあるよ。
964デフォルトの名無しさん:2007/11/30(金) 05:43:45
>>962
10進数をN進数というか、10進数だったものを無理やりN進数とみなして、更にそれをまた10進数に戻してるなw

最近もpython-ideaで、そのことが話題になったけど、
結論は、2,8,10,16進数以外は使い道がないから不要、ということらしい。

[Python-ideas] str(<int>, base=<int>) as complement to int(<str>, base=<int>)
http://mail.python.org/pipermail/python-ideas/2007-October/001112.html
http://mail.python.org/pipermail/python-ideas/2007-November/001118.html
965デフォルトの名無しさん:2007/11/30(金) 10:21:12
MLで自分の本の宣伝とな。
今回は取り急ぎじゃないのか。
966デフォルトの名無しさん:2007/11/30(金) 10:36:39
Zope関係者ってまだ生きてのか。
967デフォルトの名無しさん:2007/11/30(金) 10:39:07
>>965
本のタイトルパクったり、萌え絵を表紙に使うよりマシだと思う.
968デフォルトの名無しさん:2007/11/30(金) 13:00:55
>>965
くやしいのうwww
くやしいのうwwwwwww
969デフォルトの名無しさん:2007/11/30(金) 17:51:12
Browse Sourceでシンタックスハイライト。 - Macで開発したいんです。 - 骨格部
http://framework.g.hatena.ne.jp/soundkitchen/20070321/1174486359

このページの通りやってみたんだけど
シンタックスハイライトできないんだ…

[mimeviewer]
enscript_modes = text/x-dylan:dylan:4,text/x-php:php:4
enscript_path = /usr/bin/enscript
max_preview_size = 262144
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb,text/x-php:php, 'rb':'text/x-ruby'
php_path = /usr/bin/php
silvercity_modes =
tab_width = 4

[components]
tracpygments.* = enabled

php も rubyも駄目ぽ… orz
970969:2007/11/30(金) 19:03:43
2007-11-30 19:32:31,525 Trac[loader] DEBUG: Loading egg plugin tracpygments from
/usr/lib/python2.3/site-packages/TracPygments-0.3-py2.3.egg
2007-11-30 19:32:31,528 Trac[loader] ERROR: Failed to load plugin tracpygments from
/usr/lib/python2.3/site-packages/TracPygments-0.3-py2.3.egg

Traceback (most recent call last):
 File "/usr/lib/python2.3/site-packages/trac/loader.py", line 101, in load_components
  entry_point.load()
 File "/usr/lib/python2.3/site-packages/setuptools-0.6c7-py2.3.egg/pkg_resources.py", line 1912, in load
  entry = __import__(self.module_name, globals(),globals(), ['__name__'])
ImportError: No module named tracpygments

trac.log みたら、こんなのが出力されてました
モジュールがロードされてない…
971969:2007/11/30(金) 20:33:01
自己解決スマソ
sudo python setup.py install で site-packagesに入れた
TracPygments-0.3-py2.3.egg に何故か __init__.py が入って
なかったのが原因のようでした

というかTracのpluginって site-packages にzipを展開して
出てきたフォルダ、この場合は

ERROR: Failed to load plugin tracpygments

tracpygmentsフォルダを入れてあげればいいだけなんですね。

pluginが外部モジュールと全く同じ扱いになってるのが意外な
かんじがしますた。シンプルすぎる…
972デフォルトの名無しさん:2007/11/30(金) 20:38:38
Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> u'hogÉfuga'
u'hogEfuga'

これって仕方ないんでしょうか
973デフォルトの名無しさん:2007/11/30(金) 21:24:12
システムのデフォルトエンコーディング次第じゃないか?
974デフォルトの名無しさん:2007/11/30(金) 21:48:29
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# ファイルは utf-8 で保存 (cp932 で保存するとその時点で E に化ける)
#
# Python インタプリタで実行すると u'hogÉfuga' -> u'hogEfuga' になるが
# コマンドプロンプトで runoncp932.py を実行すると
#
# UnicodeEncodeError: 'cp932' codec can't encode character u'\xc9' in position 5: illegal multibyte sequence
#
# 自分で例外ちゃんと処理するしかない?
#

print u'ほげ%sふが' % u'hogÉfuga'

975名無しさん@いたづらはいやづら:2007/11/30(金) 21:56:32
次スレ

Pythonのお勉強 Part22
http://pc11.2ch.net/test/read.cgi/tech/1196426978/
976デフォルトの名無しさん:2007/11/30(金) 22:07:03
文字コード関係は言語仕様疑う前に自分の脳みそほじくり返せボケが
977デフォルトの名無しさん:2007/11/30(金) 22:09:32
おつ
978デフォルトの名無しさん:2007/11/30(金) 22:19:24
sys.argvもUnicode対応してないんだっけ
コマンドラインからUnicodeファイル指定できなくて困るんだよねあれ
979デフォルトの名無しさん:2007/11/30(金) 22:19:38
>>976
別に言語仕様を責めてる訳じゃないんだが
もし責められてると思たのなら
そっちの方がやばくね
980デフォルトの名無しさん:2007/11/30(金) 22:23:10
import sys

try:
  print u'argv = %s' % sys.argv
except UnicodeEncodeError, (e):
  print u'例外', sys.exc_info()[0]
  print e
  print e.args
else:
  print u'イ`'

981デフォルトの名無しさん:2007/12/01(土) 07:30:54
3つ質問です。

1. ある関数が投げるexceptionおよび戻り値の一覧を知りたいときには、
どうしたらいいでしょう。help()みたいなのがある?

2. 以下のコードで、変数の値が変わらないのは何故でしょう。
>>> a = 100
>>> b = 200
>>> for p, i in (a, 1), (b, 2):
>>> p = i
>>>print a, b
100 200

3. 以下のコードのような感じで、変数名をstringで取り出すにはどうすればいいでしょう。
>>> for val in foo bar:
>>> print val # <= ここで、変数の中身じゃなくて変数名を取り出したい。
"foo"
"bar"
982デフォルトの名無しさん:2007/12/01(土) 08:02:55
>>981
> 1. ある関数が投げるexceptionおよび戻り値の一覧を知りたいときには
動的に任意の例外も値も生成できるからわかりようがないしPythonは感知してない。
ホワイトボックスなら仕様どおりに動くと思うしかないね。
もしかしたら高度なIDEやソース解析器があるのかもしれないけど。

> 2. 以下のコードで、変数の値が変わらないのは何故でしょう。
for ... inで、aやb自身をpに結び付けてるわけではなく
aやbの値をpに結び付け(代入)してるから。
# a=100; p=a; p=1 ←これでaが変わったらいやでしょ?

> 3. 以下のコードのような感じで、変数名をstringで取り出すにはどうすればいいでしょう。
2.と同様だけど、値を代入したらvalは変数fooやbarとは無関係になるから
そんな情報は保持しておらず取り出せない。
983981:2007/12/01(土) 08:18:08
>>982
即レスありがとうございます。

1.
例えば、標準moduleのmmapを使いたいとして、
ttp://www.python.jp/doc/2.4/lib/module-mmap.html
を読んでもどんな例外が投げられるか書いていません。
そういうときには、一体どうやって例外処理をするものなのですか?
C/C++だと、manpageして説明読んで終わりだったんですが、
Pythonではどうやって例外をちゃんと扱えばいいのか悩んでいます。

2.
class hoge:
def __init__(self, val):
self.val = val

A = hoge(100)
B = hoge(100)
C = hoge(100)

print A.val, B.val, C.val
for p, i in (A, "1"), (B, "2"), (C, "3"):
p.val = i
print A.val, B.val, C.val

これだと、ちゃんとvalの中身が書き変わるんで、
intとかstringの時だけ違うんですかね。
このpをCのポインタ的に扱いたいんですよね。
クラスの時だけポインタ的にpが振る舞う?
984デフォルトの名無しさん:2007/12/01(土) 09:06:57
>>983
> 1.
ごめんさっきホワイトボックスと書いたのはブラックのまちがい。
その場合マニュアルにないとどうしようもない。
動かしてみて記載のない例外がでる可能性もあるにはある。
でもそれってC/C++のmanpageと事情は一緒でない?
JavaだったらRuntime以外でないことを保証できるけど。

> 2,
数値も値毎に(普遍で不変な)オブジェクトが存在していると考えるといいです。
a=100; p=a は
p → 数値100 ← a
という関係をつくってる。(わかりにくいけどごめん)
そこでp=1とすると
p → 数値1 / 数値100 ← a
と関係が変わることになる。

Pythonだとできないから意味ないけど
数値`100'自体を数値'1'に変更することができたら
pもaも`1'になると思います。
985981:2007/12/01(土) 09:10:15
>>984
なるほど。納得できました。
ありがとうございます。
986デフォルトの名無しさん:2007/12/01(土) 10:03:43
>>975
987デフォルトの名無しさん:2007/12/01(土) 11:05:02
PEPにあるか知らんけど使ってるモジュールにerrorってのがあればそれがそのモジュールで使用される例外または例外の基底クラスであることが多い
988デフォルトの名無しさん:2007/12/01(土) 13:01:30
>>981
2.と3.がどんな言語でできるのか知りたい
989デフォルトの名無しさん:2007/12/01(土) 13:17:17
>>988
ポインタ
990デフォルトの名無しさん:2007/12/01(土) 13:39:09
>>984 さんの説明をみて

>>> a = 100
>>> p = a
>>> p = 1
>>> a, p
(100, 1)
>>> p = a
>>> a = 1
>>> a, p
(1, 100)

2回目の a, p で 1, 1 になると思ってしまった自分がいる orz
991デフォルトの名無しさん:2007/12/01(土) 13:42:37
3をあえてやるとしたらhashじゃないかな
992デフォルトの名無しさん:2007/12/01(土) 14:53:21
>>981が言うみたいな、intとクラスの場合で結果が変わるのって、
一体何を読めば言語仕様としてそういうの書いてあるの?
C/C++から俺も入って勉強中なんだけど、
変数のスコープの概念だとか、ポインタはないの?とか、
そういう情報がPythonの公式のドキュメント読んでもいまいち分からん。
993デフォルトの名無しさん:2007/12/01(土) 14:55:31
>>991
8.5.?locals and globals
http://www.diveintopython.org/html_processing/locals_and_globals.html

3は、これとかで行けそうな予感
994デフォルトの名無しさん:2007/12/01(土) 14:57:54
例外処理か・・・結局モジュールのソース見ないと分からないんだよね
995デフォルトの名無しさん:2007/12/01(土) 15:15:43
996992:2007/12/01(土) 16:33:32
>>994
.soとかで配布されてるものは、元のCのソース読んでる?

>>995
さんくす。
結局、>>981の2.はmutableかどうかなわけだな。
この発想はC++からだと俺はなかったわ。(俺だけ?)
もっと精進せねば。
997デフォルトの名無しさん:2007/12/01(土) 17:06:53
というか入力される可能性のあるinvalidなデータを突っ込んで回復できる例外は回復して、それ以外の例外はそのままユーザに渡すのが普通じゃね?
何でもかんでも復帰できるなら例外じゃないだろ
998デフォルトの名無しさん:2007/12/01(土) 17:09:47
>>997
ユーザがどう対処するかを判断するときに、
どういう例外が投げられうるのかを知っておきたい、
というのが話の流れなのでは?
999デフォルトの名無しさん:2007/12/01(土) 17:21:25
うん
1000デフォルトの名無しさん:2007/12/01(土) 17:22:14
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。