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


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

Pythonのお勉強 Part 27



1 名前:デフォルトの名無しさん [2008/06/13(金) 04:22:02 ]
Python オフィシャルサイト
ttp://www.python.org/
ttp://www.python.org/doc/
日本Pythonユーザ会
ttp://www.python.jp/Zope/
ttp://www.python.jp/doc/
FrontPage - Pythonのお勉強
ttp://python.rdy.jp/
前スレ
pc11.2ch.net/test/read.cgi/tech/1209480428/
◆関連スレッド
Microsoft IronPython 1.0
pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/
Python Challengeをやろう!
pc11.2ch.net/test/read.cgi/tech/1175919288/
Pythonについて(アンチ専用)
pc11.2ch.net/test/read.cgi/tech/1203557046/
Pythonに見られるインデントによる制御構造の是非
pc11.2ch.net/test/read.cgi/tech/1169473442/
pythonがこの先生きのこるには
pc11.2ch.net/test/read.cgi/tech/1167996371/
Eclipse統合M25【Java/C/PHP/Ruby/Python/Perl】(PyDev)
pc11.2ch.net/test/read.cgi/tech/1211505494/
【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】
pc11.2ch.net/test/read.cgi/tech/1209289408/
デザパタ + Python/Ruby/Smalltalk part2
pc11.2ch.net/test/read.cgi/tech/1175959706/
2ch検索: [python]
find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

231 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:03:16 ]
fooが辞書ならsetと同じですか

232 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 12:33:50 ]
>>231
そうだけど、setでいいところにdict使うのは無駄だろ
setならlist, tupleのようなシークエンスやiteratorから直接構築できるしな

233 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:46:23 ]
「任意の文字列」を2文字区切りのデータとして
set に切り出すのは無理ぽ?

>>> C=[u"中華人民共和国"]
>>> def indexing(str):
... S.add(e)
... S.add(e[:2])
... S.add(e[1:3])
... S.add(e[2:4])
... S.add(e[3:5])
... S.add(e[4:6])
... S.add(e[5:7])
...
>>> S.clear()
>>>
>>> for e in C:
... indexing(e)
...
>>> for e in S:
... print e,
...
民共 中華人民共和国 共和 華人 和国 人民 中華

234 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 14:58:41 ]
こんなのか

def pairs(iterable):
    it = iter(iterable)
    last = it.next()
    for item in it:
        yield last, item
        last = item

print list(''.join(p) for p in pairs("foobar"))

235 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:26:37 ]
ある文字列 'saieunak' を並べ替えて出来る組み合わせを全て挙げるには?

236 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:42:39 ]
def permutation_string(s):
    if len(s) == 1:
        yield s
    for i in range(len(s)):
        for j in permutation_string(s[:i] + s[i+1:]):
            yield s[i] + j

def iset(iterable):
    S = set()
    for i in iterable:
        if i not in S:
            S.add(i)
            yield i

for i in iset(permutation_string("saieunak")):
    print i

237 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 15:50:49 ]
このほうがいいな。str, list, tuple対応
def permutation(seq):
    if len(seq) == 1:
        yield seq
    for i in range(len(seq)):
        for j in permutation(seq[:i] + seq[i+1:]):
            yield seq[i:i+1] + j

238 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:35:37 ]
喜 = ['glad','happy','enjoy']
^
SyntaxError: invalid syntax

python って2バイト文字を識別子に使えない?

239 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:51:13 ]
>>238
Python3.0ならできるらしい



240 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 18:55:00 ]
>>238
そんなにスイーツ()関数が作りたいのか

241 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 20:53:01 ]
>>238
www.python.jp/doc/nightly/ref/identifiers.html

242 名前:デフォルトの名無しさん mailto:sage [2008/06/22(日) 21:37:16 ]
ついでとして3.0
docs.python.org/dev/3.0/reference/lexical_analysis.html#identifiers-and-keywords

243 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 08:28:49 ]
pythonからシステムのクリップボードにアクセスしたり、文字列を代入したりすることは出来ますか?
OSはubuntu8.04です。よろしくお願いします。

244 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 10:10:09 ]
はい

245 名前:デフォルトの名無しさん [2008/06/23(月) 11:26:46 ]
>>> a = [ "apple" ]
>>> print a
['apple']

これ,["apple"] みたいに文字列の引用符を
二重引用符にすることってできませんか?
できれば __builtins__.str() にそういう機能があればいいんだけど.

246 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 12:20:31 ]
>>245
できない気がするけどなぜそんなことがしたいの?

247 名前:デフォルトの名無しさん [2008/06/23(月) 13:01:28 ]
>>246
simplejson とかインスコするのが面倒な場面で
JSON を楽に吐きたかった.

Windows で simplejson インスコするの面倒だから.
でも MinGW つかってバイナリパッケージ作った.
だれか必要?

248 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:14:21 ]
>>247
docs.python.org/dev/3.0/library/json.html

あ、jsって文字列リテラルが""なのね・・・

>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'

いつの間にか標準ライブラリの Internet Data Handling の所に
追加されてるのな。PEPとかないのか。なんじゃこりゃ

docs.python.org/dev/3.0/whatsnew/3.0.html

249 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:15:03 ]
>>244
携帯から失礼
時刻(2008/06/23 12:00のようなフォーマット)をクリップボードにコピーするスクリプトを書こうと思ったのですが、クリップボードにアクセスする方法がわからずになやんでいました。
出来るとのことですが、どのような方法でしょうか?



250 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 13:47:02 ]
>>249こんなんでいいだろ。てかxselでおk

#!/usr/bin/python
import gtk, gobject, sys
if len(sys.argv) == 1 or sys.argv[1] not in ('-i', '-o'):
    print "Usage: clip.py [-i|-o]"
    sys.exit(1)
def f():
    clip = gtk.Clipboard()
    if sys.argv[1] == '-i':
        clip.set_text(sys.stdin.read())
    if sys.argv[1] == '-o':
        sys.stdout.write(clip.wait_for_text())
    gtk.main_quit()
gobject.idle_add(f)
gtk.main()

251 名前:デフォルトの名無しさん [2008/06/23(月) 13:56:05 ]
>>248
標準ライブラリで JSON を扱えるようにするにあたって
現在いろいろ乱立しているJSONライブラリのどれを
ベースにするかでひともめ有った気がする。
最終的にどうなったかは知らないけど、
simplejson のインターフェイスに似せるってのが
多くの支持を得てたような。

自分は 2.5.2 しか使ってないから 2.6/3.0 の動きシラネ

252 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 14:31:32 ]
Issue 2750: Add simplejson to Python 2.6/3.0 standard library
bugs.python.org/issue2750

253 名前:デフォルトの名無しさん [2008/06/23(月) 14:50:55 ]
2.5.x にもバックポートされないかなぁ。

254 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:24:04 ]
>>251
2.5系と3.0b1の文字列メソッドを dir('') して比べてみた。

3.0b1で新規追加される
__format__, __sizeof__, __subclasshook__
_formatter_field_name_spilt, _formatter_parser

'format' <= printの変更に伴って導入された感のあるformat系のメソッド

2.5.2
'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper'

3.0b1
'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower',
'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper'

>>> 喜 = ['glad','happy','enjoy']
>>> '喜'.isidentifier()
True

decimal, numeric, printable がいまいちよくわからなかた…

255 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 15:45:23 ]
docs.python.org/dev/3.0/library/stdtypes.html#id4

256 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:00:17 ]
既約分数クイズ
www.hyuki.com/dig/fracans.html

Pythonで解く場合、どんなかんじになりますか?
リンク先が切れてて答えがわか欄です

257 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 01:17:38 ]
>>256
internet archive

258 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 02:12:04 ]
RE_なんとかは正規表現オブジェクトとして
if RE_FOO.match(s): ...
elif RE_BAR.match(s): ...
else: ...
みたいに書きたいとき、この書き方だとMatchObjectとれないから困るんだけど
どうするのがPython的に正しいの

259 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 08:17:13 ]
>>256
書いてみたが、リンクリストかQueueの方がスマートかも。
def kiyaku_bunsu(n):
if n == 1:
return [0, n], [1, n]
else:
a, b = kiyaku_bunsu(n - 1)
while a[0] != b[0]:
a, b = rotates(a, b)
if b[0] + b[-1] == n:
apps(a,b)
return rotates(a, b)

def rotates(*x):
return map(lambda a:a[1:]+[a[0]], x)

def apps(*x):
return map(lambda a:a.append(a[0] + a[-1]), x)

n = input("denominator:")
for i in zip(*kiyaku_bunsu(n)):
print "%d/%d %f\n" % (i[0], i[1], 1.0*i[0]/i[1]),



260 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 08:30:57 ]
>>250
xselで出来ることのようで、シェルスクリプト総合スレで解決させていただきました。
Pythonのコードも勉強になりました。ありがとうございます。(報告遅れてすいません。)

261 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 11:48:10 ]
>>256 載ってるアルゴリズムをpythonで書き下しただけだぜ

def liter(l):
    while len(l):
        yield l[0]
        l = l[1]

def make_farray(n):
    farray = [(0,1), [(1,1), []]]
    done = False
    while not done:
        car, cdr = farray[0], farray[1]
        done = True
        while cdr:
            cadr = cdr[0]
            mid = (car[0] + cadr[0], car[1] + cadr[1])
            if mid[1] <= n:
                cdr[:] = [mid, [cdr[0], cdr[1]]]
                done = False
            car, cdr = cdr[0], cdr[1]
    return farray

if __name__ == '__main__':
    for n in range(2,10):
        fa = make_farray(n)
        print " ".join("%d/%d" % x for x in liter(fa))

262 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 14:02:59 ]
6.2. match() vs search()
match() 関数は、正規表現が先頭でマッチするかを調べるだけで、
search() は文字列の先へ進みながら、マッチする部分を探します。
この違いを覚えておくことは重要です。
match() は位置 0 でマッチした場合のみ報告してくれます。
もしマッチが位置 0 以外ならmatch() は報告 しません。

>>> print re.match('super', 'superstition').span()
(0, 5)
>>> print re.match('super', 'insuperable')
None

反対に、search() は文字列を先へと探していき、最初に見付けたマッチを返します。

>>> print re.search('super', 'superstition').span()
(0, 5)
>>> print re.search('super', 'insuperable').span()
(2, 7)

ときどき、あなたは re.match() のみを使って、正規表現の前に .* を付けておくという誘惑にかられるかも知れません。
この誘惑に打ち勝って、re.search() を使いましょう。
正規表現のコンパイラは、マッチ部分の探索を高速に行うために、正規表現をそれなりに解析します。
そのような解析のひとつが、最初のマッチ文字が何であるか見付けることです。
たとえば Crow で始まるパターンは "C" で始まる文字列とマッチしなければいけません。
この解析により、マッチングエンジンは、文字列の中から最初の文字を素早く探索し、
見付かった場合だけ全体のマッチを試みるのです。

.* を付け加えると、この最適化ができないため、文字列の最後まで探索してから、
残りの正規表現のマッチ部分を探しに逆戻りすることが必要になるのです。


263 名前:261 mailto:sage [2008/06/24(火) 14:21:39 ]
これでいいな。二重ループいらんわ。

def liter(l):
    while len(l):
        yield l[0]
        l = l[1]

def make_farray(n):
    farray = [(0,1), [(1,1), []]]
    car, cdr = farray[0], farray[1]
    while cdr:
        cadr = cdr[0]
        mid = (car[0] + cadr[0], car[1] + cadr[1])
        if mid[1] <= n:
            cdr[:] = [mid, [cdr[0], cdr[1]]]
        else:
            car, cdr = cdr[0], cdr[1]
    return liter(farray)

if __name__ == '__main__':
    for n in range(2,100):
        print " ".join("%d/%d" % x for x in make_farray(n))

264 名前:261 mailto:sage [2008/06/24(火) 18:53:02 ]
アレ過ぎるのでPythonらしくした
つか、この手のリスト処理って、Pythonでどう書くのが定石なのか
さっぱりわからん

from itertools import chain

def make_farray(n):
    head = (0,1)
    tail = iter([(1,1)])
    yield head
    while True:
        try:
            next = tail.next()
            mid = (head[0] + next[0], head[1] + next[1])
            if mid[1] <= n:
                tail = chain((mid, next), tail)
            else:
                head = next
                yield head
        except StopIteration:
            break

265 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:56:40 ]
無限数列を返すジェネレータ2つを zip でまとめて for で回すと止まっちゃうんだけど、
そういうもんですか?
固定長のイテレータじゃないと zip できないのかな。

266 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 19:02:26 ]
izip使え

267 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 19:06:36 ]
>>266
WAO! ありがとうございました!

268 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 22:29:30 ]
>>258
「Python的に正しい」かどうかは知らんけど、こういうのはどう?
分かりにくくなるだけのような気がするが

class Delegator:
    def __init__(self):
        self.__dict__ = { 'object': None }
    def set(self, obj):
        self.__init__()
        self.object = obj
        for attr in dir(obj):
            if attr != '__class__':
                setattr(self, attr, getattr(obj, attr))

def re_search_x(regexp, s, delegator):
    m = regexp.search(s)
    if not m: return False
    delegator.set(m)
    return True

if __name__ == '__main__':
    import sys, re
    re_a = re.compile('a')
    re_b = re.compile('b')
    m = Delegator()
    for s in iter(sys.stdin.readline, ""):
        if re_search_x(re_a, s, m):
            print "a: matched at %d" % m.start()
        elif re_search_x(re_b, s, m):
            print "b: matched at %d" % m.start()

269 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:29:00 ]
>>258>>268
こういうのはどうだろう。

class Pattern:
    def __init__(self, pattern, flag=0):
        self.pattern = re.compile(pattern, flag)
    def match(self, string, flag=0):
        self.last_match = self.pattern.match(string, flag)
        return self.last_match

RE_FOO = Pattern("...")
RE_BAR = Pattern("...")
...

if RE_FOO.match(s):
    do something using RE_FOO.last_match
elif RE_BAR.match(s):
    do something using RE_BAR.last_match
elif ...



270 名前:268 mailto:sage [2008/06/24(火) 23:38:09 ]
>>269
そっちのが分かりやすいね
参照渡しが無いから替わりにdelegator使うとか流石にアホみたいだし

271 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:45:58 ]
def foobar(s):
  m = RE_FOO.match(s)
  if m:
    do something with m
    return nanika
  m = RE_BAR.match(s)
  if m:
    do something with m
    return nanika

272 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 23:57:07 ]
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66061 とか
aspn.activestate.com/ASPN/Cookbook/Python/Recipe/456151 の一番下のValue
自分は単純にwhile 1:とbreakで書くか>>271みたいに関数書くけど

273 名前:272 mailto:sage [2008/06/24(火) 23:59:02 ]
2行目終わりに「みたいに方法もある」が抜けた

274 名前:デフォルトの名無しさん [2008/06/25(水) 07:40:03 ]
GUI が使えるときは Tkinter 使った GUI で,
使えないときはコマンドラインインターフェイスで,
っていう切り替えをしたいんだけど,何を見て判断すればいいんだろうか.

UNIX でも Windows でもそういうことをしたいんだけど,
UNIX だと制御端末に関連付けられているかどうか,
Windows だと cmd.exe から起動されたか explorer.exe から
起動されたかで判断するのがいいのかな?
とはいえそれを Python でどうやって判定するのかが分からない.

Emacs なんかは X があってもなくても自動的に判定して
うまくやってくれてるみたいなんだけど,そういうことを
Python でできますか?

275 名前:デフォルトの名無しさん [2008/06/25(水) 07:45:46 ]
termios モジュールとか関係あるのかなぁ.
実は恥ずかしながらプロセスグループ,セッション,制御端末
そのあたりについてちゃんと勉強したことがなかった.
screen コマンドとか,「すげぇなぁ,どうやってんだ?」って
感心するばかり.

276 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:51:08 ]
WindowsでGUIが使えない環境ってあるのかな

277 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 07:52:03 ]
リモートでcmdコンソールだけ使ってるときとか


278 名前:デフォルトの名無しさん [2008/06/25(水) 08:22:54 ]
この言語って日本のIT企業ではどのくらい使われてるの?

279 名前:デフォルトの名無しさん [2008/06/25(水) 08:35:52 ]
がーん,Windows では import termios できなかった.



280 名前:デフォルトの名無しさん [2008/06/25(水) 08:36:22 ]
>>277
そう,そんな感じ.
あんまり一般的じゃないね.

281 名前:デフォルトの名無しさん [2008/06/25(水) 09:13:42 ]
もう単純に Tkinter でウィジェットを配置しようとして
失敗すれば CUI にフォールバックすることにした.
んが,なんか CUI しかない環境でも例外でねぇ・・・・

282 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 09:54:59 ]
emacsみたいに引数でユーザに指定させるのが現実的じゃないの?
-nwで端末モード、みたいな

283 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 10:43:00 ]
Emacs は X Window System 環境下では環境変数 DISPLAY の有無で GUI か CUI かを決めてた気がする。
Windows については知らない。

284 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:39:54 ]
webbrowser.py より

if os.environ.get("DISPLAY"):
...

# Also try console browsers
if os.environ.get("TERM"):
...

ということで、少なくとも 2.5 の webbrowser.py では
環境変数の有無で決めてるね。DISPLAY優先。

cygwin で webbrowser 使うと w3m になるよ。

285 名前:デフォルトの名無しさん [2008/06/25(水) 12:49:53 ]
>>281 なんかかんちGuy

例外でないって言ったけど,import Tkinter では例外でないが
a = Tkinter.Frame(None, "しね")
で例外が出た.

_tkinter.TclError: no display name and no $DISPLAY environment variable

まぁ結局 DISPLAY をチェックしているだけみたいなんだけどさ.
というわけで,Tkinter.TclError が投げられるかで判定することにします.

286 名前:デフォルトの名無しさん [2008/06/25(水) 12:50:37 ]
ちなみに Windows で cygwin の sshd 動かして
リモートからつないだような場合にどうなるかは
天気がよくなったら試してみる.

287 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:18:42 ]
Windowsの場合リモートでcmdでGUIの実行すると
相手側の端末にWindow出ててワロス


288 名前:デフォルトの名無しさん [2008/06/25(水) 14:24:05 ]
予想通りだ罠
X サーバー/クライアントで
どっちがどっちか判ってないような人たちが使う OS だし

289 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 14:31:01 ]
あはははは。



290 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 16:57:16 ]
>>287
そりゃ、プロセスが走ってる場所を考えれば当たり前だが、
この動作は間抜けすぎる。

291 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 17:04:03 ]
そういう環境でうっかりリモートに保存しておいた画像を見ようと
win> display erogazou.jpg
とかやっちゃったり…

292 名前:デフォルトの名無しさん [2008/06/25(水) 17:12:02 ]
>>>291 ねーよwww

ところで,>>287 のような動作って今の Windows でもそうなの?
Windows 95/98/98SE/Me のころまではそうだった気がするけど,
2000 以降ってセッションの概念がちゃんと導入されていて,
そういう変なことは起こらないようになっているんじゃなかったっけ?
POSIXでいうセッションとは違ってWindowsにおける
ターミナルセッションのことだけど.

293 名前:デフォルトの名無しさん [2008/06/25(水) 19:10:03 ]
Ruby使ってましたがPythonの勉強を始めました
Pythonは
['hoge','fuga'].each{|w|...}
的な、シーケンスにイテレータメソッドを適用するような書き方ってできますか?
チュートリアルにはforを使う書き方しか書いてなかったので、
どうかと思ったのですが

294 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 19:21:02 ]
>>292
ウィンドウマネージャに相当する機能が分離できない以上 Windows にそういうことを期待しない方がいいだろ
しかしつくづくクライアント向けOSなのな

295 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 20:00:54 ]
>>293
Pythonではリスト内包表記かmap関数かforで書く

296 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 22:07:33 ]
>>294
X サーバー/クライアントで
どっちがどっちか判ってないような人たちが設計した OS だし

297 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 07:07:49 ]
それでライフハックのつもりなんですね。分かります

298 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:14:02 ]
イミフ

299 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:43:04 ]
ライフハックの意味を知ってるのかね.



300 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:50:48 ]
ライフハック = 貧乏人の悪あがき

301 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 10:13:45 ]
ライフハックってスケジュール管理のノウハウのことだろ
正にイミフ

302 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 10:13:48 ]
アナルファックのほうがPython的だよね。

303 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:04:47 ]
3.0b1 では file(...) なくなってるのな。
file って2.0 系で来たんだよね?確か。
せっかく open やめて file 使うようにしたのに、、、

まぁもちろん2つあるより1つのほうがいいけどさ。

304 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:28:18 ]
メインループの中で作業実行スレッドを監視するスレッドを呼び、
その中で作業実行スレッドを呼んでいます。

作業実行スレッドの中でCOMの操作を行っているのですが、
そのCOM操作を行うとき、稀に動作が止まってしまい、
作業実行スレッドもそれに伴い、止まってしまうことがあります。

このとき、監視するスレッドで、作業実行スレッドの強制終了を行いたいのですが、
Pythonでスレッドの強制終了を行う方法はありますでしょうか?

CのTerminateThreadのような動作が出来るものを探しています。

説明が分かり辛いなどありましたら申し訳ありません。
どなたかご教授願えますでしょうか?

305 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:31:34 ]
よくわからんがプロセスわければ

306 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 11:42:50 ]
>>303
>せっかく open やめて file 使うようにしたのに、、、

入門書嫁。

307 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:22:04 ]
>>302
今週末のことを考えるとアナルがうずうずします.

308 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 12:58:45 ]
>>303
2.4ぐらいからopenの方が推奨されるようになった

309 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:18:31 ]
>>307
アナルは形容詞なので、その場合はアヌスと書くべきでしょう。
Pythonの達人たちの前でこれを間違うと、単一電池1ダース挿入の刑なので注意してください。



310 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:44:29 ]
>>309
ごめんなさい!
こんどキャバクラに連れて行くので許してください!

311 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:45:01 ]
電池って直接挿入するの?やばくね?

312 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:46:49 ]
>>309
>Pythonの達人たちの前でこれを間違うと、単一電池1ダース挿入の刑

ゴミが集まる場所で言ってもオッケーということですね、分かります。

313 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 14:33:19 ]
>>308
残念。2.4ではfileの方が推奨されていた。
立場が逆転したのは2.5からだ。

314 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 15:12:56 ]
>>313
www.python.org/doc/2.4.1/lib/built-in-funcs.html#l2h-25
>The intent is for open() to continue to be preferred
>for use as a factory function which returns a new file object.
>The spelling, file is more suited to type testing
>(for example, writing "isinstance(f, file)").

315 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 15:29:37 ]
file はクラス名として使うから,
open() をファクトリ関数として使うよ,ってこと?

316 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:43:56 ]
listの要素をsetに追加する際は次のようにしか書けないの?

>>> alist = [1,2,3,4]
>>> aset = set()
>>> for i in alist: aset.add(i)

もし他になんかかっこいいイディオムがあれば教えてませんか。

317 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:51:29 ]
aset(alist)

318 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 21:56:41 ]
自己解決しました。
>>317では動かなかったけど次のようにしたら動きました。

aset = set(alist)

いちおうありがとう。

319 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:03:41 ]
alistとか書くと連想リストみたいでいやん



320 名前:316==318 mailto:sage [2008/06/26(木) 22:07:39 ]
www.python.jp/doc/release/lib/types-set.html

ちなみにこれぐらい↑に書いといてくれればいいのにな、と思った。

321 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:16:04 ]
>>> help(set)
class set(object)
 |  set(iterable) --> set object

322 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 22:28:31 ]
>>320
www.python.jp/doc/release/lib/built-in-funcs.html
こっちには書いてあるんだけどな。

323 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 02:59:05 ]
ちょっと気になったんだけど

s = open("hoge")

てやると、s は暗黙的に str になるわけ?
これが py3.0 にあると unicode を返すようになるの?
すると、テキストファイルとバイナリファイルの違いはどうなるの?

open("hoge", "rb")



open("hoge", "r")

では違うオブジェクトが返るの?


324 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:40:23 ]
>>323
なんでstr?

325 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 03:52:58 ]
失礼、なんか勘違いしてた。疑問なのは
open じゃなくて
read したときの戻り値だ

326 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:05:36 ]
>>323
docs.python.org/dev/3.0/library/functions.html#open

327 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:23:45 ]
要素がなければNoneを返すようにする方法ってあります?
次のようなコードをすっきりさせたいんですが。

try:
avar = ainstance.hoge
except:
avar = None

ainstanceの属性hogeをavarに入れたい。
属性hogeが存在しなければavarにNoneを入れたい。

328 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:36:51 ]
avar = getattr(ainstance, 'hoge', None)

329 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:37:00 ]
getattr(ainstance, 'hoge', None)



330 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 10:40:35 ]
>>328,329
すごい。ありがとうございます。

331 名前:デフォルトの名無しさん mailto:sage [2008/06/27(金) 11:12:59 ]
入門書嫁>330






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

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

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