Pythonのお勉強 Part ..
[2ch|▼Menu]
438:デフォルトの名無しさん
08/05/22 16:19:55
マってたまに、子供騙しで騙してしまえばいい相手の要求に対して、
妙に本気になって対処してしまうことがあるよね。自戒も含めてw

439:デフォルトの名無しさん
08/05/22 16:46:15
全て eval を使って文として
他のプログラムに仕込むとか

440:デフォルトの名無しさん
08/05/22 18:07:12
子供騙しで手を抜く奴はプログラマだ!
バレないように手を抜く奴は訓練されたプログラマだ!

こうですか? わかりません (>_<)


441:デフォルトの名無しさん
08/05/22 19:29:23
>>434
そういうときはその上司の上司を説得するべき

442:デフォルトの名無しさん
08/05/22 21:44:24
適当にxorして「暗号化しました!」
とか言っとけば大丈夫

443:デフォルトの名無しさん
08/05/22 22:47:10
ソースコード自身とxorしたから大丈夫です!

444:デフォルトの名無しさん
08/05/23 01:11:01
>>443
0x00とXORしないとダメだよ!!

445:デフォルトの名無しさん
08/05/23 02:15:01
ネタならネタで良いんですが
もう少し楽しめるのをおながいします

446:デフォルトの名無しさん
08/05/23 02:44:30
pygameで英語分からなくて暴れてる厨房だろ
放っとけよ

447:デフォルトの名無しさん
08/05/23 08:11:47
pygameの和訳さっさと進めろよハゲども

448:デフォルトの名無しさん
08/05/23 08:45:46
自己解決しました。

449:デフォルトの名無しさん
08/05/23 09:17:04
やめてください

450:デフォルトの名無しさん
08/05/23 10:14:11
イケメンハッカーが自決しました。

451:デフォルトの名無しさん
08/05/23 10:33:08
やめてください。

452:デフォルトの名無しさん
08/05/23 10:33:59
自己解決禁止

453:デフォルトの名無しさん
08/05/23 10:34:36
>>441
お花畑にお住まいの妖精さんですか?
現実は厳しいですよ。

454:デフォルトの名無しさん
08/05/23 10:35:08
neet山が自己休刊やめてください。

455:360
08/05/23 10:59:40
>>360
>>> def call(): info=[]; f(info); return info
...
>>> def f(x): x=[1,2,3] # list渡したい時は.append使え矢
...
>>> call()
[]
>>>
>>> def call(): info={}; f(info); return info
...
>>> def f(x): x[0]=1; x[1]=2; x[2]=3
...
>>> call()
{0: 1, 1: 2, 2: 3}

渡すものが、辞書かリストか、で字面的に違うということですね
事故解決しました。(&なんて使わねー)(*はリスト**は辞書ですが無くても動くのです無害です)

456:デフォルトの名無しさん
08/05/23 11:07:57
>455

ぜんぜん解決してない ...

>>> def f(x): x=[1,2,3]

に文法的に対応する辞書の記述は

>>> def f(x): x = {0:1, 1:2, 2:3}

だよ(これだと結果は callで代入された info → {} のまま)。

リストのappendが字面的に気に喰わないのなら、

x+=[1];x+=[2];x+=[3];

と書いてもいいかもね(ちょっとoverheadありそうな気もするけど)




457:360
08/05/23 11:30:33
>>456
d

1. def call(*各種設定リスト): info={}; f(info); return
2. 初期化関数もどき(空リスト、空辞書を破壊的操作で初期化)
def f(x): x[0]=1; x[1]=1; x[2]=2 #辞書
def f(x): x+=[1]; x+=[2]; x+=[3] #リスト

設定ファイルちっくに扱うなら、辞書使うし余り気にならないのかも > リストの破壊的操作
JSonとか、いい感じなものだと最近わかり始めてきますた

458:デフォルトの名無しさん
08/05/23 12:07:53
自己解決禁止しちゃいかんだろww

459:デフォルトの名無しさん
08/05/23 16:11:33
D:\TracLight\python>python
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.
>>> import os
>>> fn = os.path.join('./', 'test-file.txt')
>>> open(fn).read()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: './test-file.txt'

同じディレクトリ下にあるファイルを読むにはどう書けば良いですか?

460:デフォルトの名無しさん
08/05/23 16:19:24
>>> fn = os.path.join(os.getcwd(), 'test-file.txt')
>>> fn = os.path.join('./', 'test-file.txt')
>>> open(fn).read()

.txt 拡張子が余計に付いてだけでした orz
事故レスすまそ

461:デフォルトの名無しさん
08/05/23 17:41:49
>>459
なんでバグだらけの旧バージョン使ってるんだ?

462:デフォルトの名無しさん
08/05/23 19:29:52
うるさいだまれ

463:デフォルトの名無しさん
08/05/23 19:36:57
自己憤慨しました。

464:デフォルトの名無しさん
08/05/23 21:15:47
自己発電しました。

465:デフォルトの名無しさん
08/05/23 22:41:04
助けて
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at applet$_PyInner.init$1(applet.java:61)
at applet$_PyInner.call_function(applet.java:47)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at applet$MyApplet.init(applet.java:139)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)


466:デフォルトの名無しさん
08/05/23 22:43:40
スレリンク(tech板:385番)

467:デフォルトの名無しさん
08/05/23 23:13:26
マルチしちゃったか
死ね

468:デフォルトの名無しさん
08/05/23 23:38:32
ちょっと教えて欲しいんだけど、pythonの正規表現で先読みって使えないの?
下みたいに書いても全然文字列を分割してくれないんだけど

line = '123,456,79'
regexp = re.compile('(?=5)')
print regexp.split(line)

469:デフォルトの名無しさん
08/05/23 23:56:48
>>468
URLリンク(www.python.jp)
> (?=...) 
> もし ...が次に続くものとマッチすればマッチしますが、文字列をまったく消費しません。
> これは先読みアサーション(lookahead assertion)と呼ばれます。
> 例えば、Isaac (?=Asimov) は、'Isaac 'に 'Asimov'が続く場合だけ、'Isaac 'とマッチします。 

'(?=5)' だと空文字列に 5 が続くなら空文字列にマッチ(ただし 5 は消費しない)という意味になるのかな?
空文字列にマッチしたら分割の目的には使えないような・・・。

>>> a = re.compile(",(?=4)")
>>> a.split("123,456,789")
['123', '456,789']

470:デフォルトの名無しさん
08/05/23 23:57:19
>>468
先読みが使えないっていうより
re.split() に長さ 0 のパターンを渡しても何もしてくれないとかじゃない?
他の言語とかは挙動が違った気がする

471:デフォルトの名無しさん
08/05/23 23:57:58
>>468
ライブラリリファレンスを見れば分かるけど、先読みは使えるよ。

よくわからんが、split()がzero-width assertionでは機能しないのかもな。
split()に与えた正規表現にマッチした文字列をデリミタとみなして分割するから、
「位置」じゃなくて「文字(列)」にマッチする正規表現じゃないとダメ、とかさ。

ただの想像だけど。

472:471
08/05/23 23:58:39
ぐは。レスかぶりまくりじゃん。

473:デフォルトの名無しさん
08/05/24 00:15:30
先読みの使い方を間違えてる

474:デフォルトの名無しさん
08/05/24 00:38:16
お前は次に「自己解決しました」と言う。

475:デフォルトの名無しさん
08/05/24 00:46:50
自己解決しました

476:468
08/05/24 01:09:50
レスサンクス
やっぱり場所指定の正規表現じゃ分割しないみたいだね
perlとrubyでもsplit関数を動かしてみたんだけど、
perlはpythonと同様で場所指定の正規表現じゃ分割してくれなかったよ
一方rubyは意図したとおりに場所指定で分割できた
言語毎に結構挙動が違うもんなんだね




477:デフォルトの名無しさん
08/05/24 01:31:05
>>472
ぐは禁止。きもい。

478:デフォルトの名無しさん
08/05/24 01:32:10
ruby最強!

479:デフォルトの名無しさん
08/05/24 01:33:37
regexp = re.compile('.(?=5)')

480:デフォルトの名無しさん
08/05/24 01:50:44
>479
それだと一文字消えちゃうだろう常識で考えて

481:デフォルトの名無しさん
08/05/24 03:40:04
pyunoでOpenOfficeの制御したかったのだけど
ubuntu7.10で動かないみたい
URLリンク(udk.openoffice.org)
Hellow Worldのサンプル動かすと
line 5, in <module>
localContext = uno.getComponentContext()
AttributeError: 'module' object has no attribute 'getComponentContext'


482:デフォルトの名無しさん
08/05/24 03:49:34
>>468

Perlのバージョンは?
試したらできたよ。

my @f = split /(?=5)/, $str;
print join(':', @f), "\n";



483:デフォルトの名無しさん
08/05/24 05:24:45
>>> import re
>>> line = '123,456,79'
>>> regexp = re.compile('')
>>> regexp.split(line)
['123,456,79']

そもそもこうなるんだもんなぁ


484:デフォルトの名無しさん
08/05/24 08:28:25
>>477
ぐはははははははははははhahahahahahahahaha!!!!!

485:デフォルトの名無しさん
08/05/24 10:14:48
ぐは。自己解決しました。

486:デフォルトの名無しさん
08/05/24 12:39:52
>482
perlでもsplitできるね

pythonで位置指定の分割ってどうやんだろ

487:デフォルトの名無しさん
08/05/24 13:03:35
こんな感じの関数を自分で作って使えばいいんじゃね

def split(pattern, string):
    result = []
    start = 0
    for m in re.finditer(pattern, string):
        result.append(string[start:m.start()])
        start = m.span()[1]
    result.append(string[start:])
    return result


488:デフォルトの名無しさん
08/05/24 13:14:27
リスト返すようにしちゃったけど、ジェネレータにすべきだったか
ま、その辺は好きに汁

489:デフォルトの名無しさん
08/05/24 14:06:35
>487
re.findall()

490:デフォルトの名無しさん
08/05/24 14:18:04
re.findall()がどうしたの?

491:デフォルトの名無しさん
08/05/24 15:33:29
Perl で split('', $str); に相当するのは
Python ではどう書けばよいですか?

492:デフォルトの名無しさん
08/05/24 15:37:47
>>491
list(str)

493:デフォルトの名無しさん
08/05/24 19:16:39
オブジェクトのメソッドを一覧で取得するにはどうすればええの?


494:デフォルトの名無しさん
08/05/24 19:24:33
filter(callable, dir(hoge))

495:デフォルトの名無しさん
08/05/24 19:25:54
[x for x in dir(obj) if callable(getattr(obj, x))]

496:デフォルトの名無しさん
08/05/24 21:30:26
>>494
動きません。
自己確認してください。

497:デフォルトの名無しさん
08/05/24 22:48:52
自己完結しました

498:デフォルトの名無しさん
08/05/24 22:51:21
>>494
オッサン臭いコードだな。その上動かないってどんだけ(www

499:デフォルトの名無しさん
08/05/24 22:58:55
itertools は使えそうで使えない

500:デフォルトの名無しさん
08/05/24 23:03:49
>>498
まさに労害(WWW

501:デフォルトの名無しさん
08/05/24 23:17:21
おれさまがなおしてやった
filter(lambda x : callable(getattr(obj, x)), dir(obj))

502:デフォルトの名無しさん
08/05/24 23:28:11
ここまで来ると、わざわざfilterを使う意味なくね?

503:デフォルトの名無しさん
08/05/25 00:07:56
pythonのlambdaって読みづらいだけじゃね?
pythonの基本的な文法と比べると汚い

504:デフォルトの名無しさん
08/05/25 00:14:14
Guidoもlambdaは嫌いだったと思う。
lambdaを使うのは変態か、自称イケメンハッカーのワンライナー芸人だけだろ。

505:デフォルトの名無しさん
08/05/25 01:19:41
どうせ残すなら
いろいろできるようにすればいいのに

506:デフォルトの名無しさん
08/05/25 01:32:31
cshといっしょでコード互換のために残してるだけなんだから
もう新規につかうようなもんじゃないだろ。

507:デフォルトの名無しさん
08/05/25 02:44:32
Pythonプログラミング入門はクソだとよ。

508:デフォルトの名無しさん
08/05/25 03:45:36
自分の言葉で語りなさい

509:デフォルトの名無しさん
08/05/25 05:36:58
ということにしたいのですね

510:デフォルトの名無しさん
08/05/25 09:50:46
懐かしいフレーズだ

511:デフォルトの名無しさん
08/05/25 10:51:46
皆さん lambda と聞くと昔の傷がうずくのですね

512:デフォルトの名無しさん
08/05/25 10:52:28
Twisted本、クソ本フラグがたった感が。

513:デフォルトの名無しさん
08/05/25 11:37:37
うはは、わかりません。

514:デフォルトの名無しさん
08/05/25 12:29:07
関数をファーストオブジェクトとして扱えないのはしょうがないが
だからってpython の lambda はちょっと無しだろ
C++みたいに演算子()をオーバーロードできればいいのに

515:デフォルトの名無しさん
08/05/25 12:33:36
>>514
関数内で関数が定義できるんだから、lambdaはあれで良い。
演算子オーバーロードも、__call__でできるじゃないか。

516:デフォルトの名無しさん
08/05/25 12:40:01
うはは、わかりません。

517:デフォルトの名無しさん
08/05/25 13:11:22
>>514
Pythonの関数はファーストクラスオブジェクトだが

518:デフォルトの名無しさん
08/05/25 13:23:23
ファーストオブジェクトってどういう意味?

519:デフォルトの名無しさん
08/05/25 13:32:38
Wikipedia項目リンク
>>514は、匿名リテラルで宣言できる関数が制限されていると言いたいんだと思う。
でも、def foo() して、 bar = foo; del foo; したら、foo()できなくなる。Pythonのdefは関数定義と
変数への代入を同時にしているというだけなので、関数がファーストクラスオブジェクトと言っても良い。

520:デフォルトの名無しさん
08/05/25 14:00:35
>>519
ありがとう。ファーストクラスオブジェクトでググればよかったのか。

俺もPythonのlambdaは気持ち悪いと思う。
あと、exceptで例外が複数のときだけ括弧つけるのも気持ち悪い。

521:デフォルトの名無しさん
08/05/25 14:11:16
(UNIX環境の)Pythonってソースプログラム実行中にソースの書き換えってできるの?
インタプリタだから、できそうなイメージなんだけど

522:デフォルトの名無しさん
08/05/25 14:13:28
pythonって関数内で関数作って関数を返す関数作れたっけ?


523:デフォルトの名無しさん
08/05/25 14:26:28
tupleが (a,) ってなるのがきもい





524:デフォルトの名無しさん
08/05/25 14:50:03
python の快活環境どれがおすすめですか?

525:デフォルトの名無しさん
08/05/25 15:54:31
>>522
いろんなデコレータのソース読んでみたら?そういうのばっかりだから。
Pythonのデコレータは、関数を引数にして関数を返す関数。
@foo(a,b)
def bar():
の場合、fooは、"関数を引数にして関数を返す関数"を作成して返す関数になる。

526:デフォルトの名無しさん
08/05/25 15:58:09
間違えた
快活環境じゃなくて開発環境

527:デフォルトの名無しさん
08/05/25 16:27:51
>>522
名前なしでそれができない、ってだけ。

あと定義された時の環境に対して書き換えが効かない。

528:デフォルトの名無しさん
08/05/25 17:03:38
385 名前:デフォルトの名無しさん[] 投稿日:2008/05/23(金) 22:18:26
助けて
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at applet$_PyInner.init$1(applet.java:61)
at applet$_PyInner.call_function(applet.java:47)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at applet$MyApplet.init(applet.java:139)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

529:デフォルトの名無しさん
08/05/25 17:56:17
御臨終です

530:デフォルトの名無しさん
08/05/25 17:59:29
org が orz の相似に見えた

531:デフォルトの名無しさん
08/05/25 19:11:41
そういやIronPythonのスレはあるのにJPythonのスレはないんですね

532:デフォルトの名無しさん
08/05/25 20:08:15
Jythonのスレならあるでしょ。
専用じゃないけど

533:デフォルトの名無しさん
08/05/25 20:17:07
>>523
これならきもくない?
tup = (
a,
)

534:デフォルトの名無しさん
08/05/25 20:48:17
>>525,527

ありがとう
やってみたら出来たよ
これで使いやすいschemeの代わりが出来た


535:デフォルトの名無しさん
08/05/25 21:57:03
そんな見た目だけの問題じゃないよ! >533

誰かが「カンマがtupleを作るんだ、カッコじゃない」と言ってたが、

>>> x=()
>>> type(x)
<type 'tuple'>

キモイヨー


536:デフォルトの名無しさん
08/05/25 22:22:42
>>535
男なら、空のタプルを作りたいときがあるってもんだ。

537:デフォルトの名無しさん
08/05/26 00:00:59
python for S60のスレはないよなぁ

538:デフォルトの名無しさん
08/05/27 00:06:35
パックリ(i)

キモイヨー

539:デフォルトの名無しさん
08/05/27 00:15:23
RDBで言うテーブルに対するビュー
Cで言う配列に対するポインタ
みたいなノリで使える、オリジナルデータを更新可能なスライスみたいなの無いかな

スライスみたいにコピーするんじゃなくて参照を握っていて、
更新も出来るやつ
自分で作るしかない?

540:デフォルトの名無しさん
08/05/27 00:44:42
うはは、キモイヨー。

541:デフォルトの名無しさん
08/05/27 00:49:16
>>537
需要があるのか?

542:デフォルトの名無しさん
08/05/27 01:48:06
>>539
ありますよ

543:デフォルトの名無しさん
08/05/27 09:27:23
>539

10行ぐらいで書けそうだから、必要な人は手元で書いちゃうんでは。


544:デフォルトの名無しさん
08/05/27 09:57:14
ちょちょっっと書いてみていただけませんか?

545:デフォルトの名無しさん
08/05/27 11:27:27
>>544
書きました。
見せないけど。

546:デフォルトの名無しさん
08/05/27 16:41:49
さては11行になったな?

547:デフォルトの名無しさん
08/05/27 17:55:58
>>539
arrayじゃ駄目なの?

548:539
08/05/27 18:28:38
レスくれた人どうもです

>>542 モジュール名を教えていただけませんか

>>543 書いてみましたが、自分は10行では無理でした
__getitem()__に負のインデクスやsliceオブジェクトが渡された時の
処理とかをいちいち書くのがウザいです

>>547 arrayは全く用途が違うのではないでしょうか
シークエンスの部分列を「参照」するだけならただのスライスで良いし
itertools.islice()ならコピーを避けられますが、
元のシークエンスを「更新」もしたいわけです

549:デフォルトの名無しさん
08/05/27 18:51:41
pygameの和訳完成してもいいころなんじゃねーの

550:デフォルトの名無しさん
08/05/27 19:40:47
547は配列を作りたいのかと勘違いした。
ようするに、ポインタに相当するものを作りたいのか。

551:デフォルトの名無しさん
08/05/27 19:53:15
うはは、すみません

552:デフォルトの名無しさん
08/05/27 20:10:20
>>548
要するにスライスをスライスして新しいスライスを作れればいい(そこを自前で実装するのは面倒)ということだな。
スライスをスライスしてスライスを作るというのはありがちな気がするので既にありそうだが。俺は残念ながら知らん。
自前で実装するのは確かに面倒そうだ。

553:デフォルトの名無しさん
08/05/27 22:02:45
>>539
URLリンク(www.rh.to)

こんなのとか? リンク先のViewの説明がそれっぽいとかおもた。
というか牛刀をもって鶏を割くみたいになってる気もする…

>>457
def call(inil=[1,2,3,4,5]): srcl=inil; m(srcl,1,3); return srcl
def m(x,i,j): _m(x[i:j])
def _m(x): x[0]=1; x[1]=1; x[2]=1 とか思いついて、書いてみる

>>> def call(ini): src=ini; dst=m(src,1,4); dst.insert(0,src[0]); dst.append(src[4]); return dst
>>> def m(x,i,j): print x[i:j]; return _m(x[i:j])
>>> def _m(x): x[0]=1; x[1]=1; x[2]=1; return x

>>> call([1,2,3,4,5])
[2, 3, 4]
[1, 1, 1, 1, 5]

むぅ。糞コード。可読性悪すぐる…orz
call()でintかlistで場合分け必要だし

554:デフォルトの名無しさん
08/05/27 22:15:15
numarray

555:デフォルトの名無しさん
08/05/27 22:36:17
URLリンク(coding.derkeiler.com)

これとかヒントになるかも
一部を掬って変化を加えたら、全体が書き換わる…

556:539
08/05/27 22:52:01
ありがとうございます
NumPyですか
数値計算が目的という訳ではなかったので完全に盲点でしたが、使えそうですね

ちょっと試してみます

557:デフォルトの名無しさん
08/05/28 09:09:02
これからはRuby一色の時代。
PerlもPythonも廃れ、Rubyだけが生き残る新時代

558:デフォルトの名無しさん
08/05/28 09:42:45
その「新時代」になってから勉強しても全然遅くない。

559:デフォルトの名無しさん
08/05/28 12:02:30
for e in dir():
  print e

とかで出力されるデータをA-Z, a-z, __??__で
頭文字ごとに改行して出力するにはどうしたら良いですか?

560:559
08/05/28 14:23:42
>>> def print_elem_n(elem):
...  print '\n', elem,
...
>>> def print_elem(elem):
...  print elem,
...
>>> q=''
>>>
>>> a2z="abcdefghijklmnopqrstuvwxyz"
>>> for e in dir(cssutils):
...  if q == '' and q in set(a2z): q = e[0]
...  if e[0] in set(a2z):
...   if q != e[0]:
...    print_elem_n(e)
...    q=e[0]
...   else:
...    print_elem(e)

書けた…添削きぼん
print文の、改行の取り扱いに嵌る orz

561:デフォルトの名無しさん
08/05/28 14:35:40
>>> a2z="abcdefghijklmnopqrstuvwxyz"

>>> a2z=range(ord('a'), ord('z')+1)

562:デフォルトの名無しさん
08/05/28 14:35:53
groupby使ってみるといいんじゃない?

from itertools import groupby
from operator import itemgetter
for k, g in groupby(sorted(dir(str)), itemgetter(0)):
 print ", ".join(g)

563:デフォルトの名無しさん
08/05/28 14:36:51
>>560
printだけ書けば改行できるのに。

lastchar = dir()[0][0]
for e in dir():
if e[0] != lastchar:
print
lastchar = e[0]
print e,

これじゃダメ?

564:デフォルトの名無しさん
08/05/28 14:37:50
インデント消えちゃったけど、まぁ分かるよね?w

565:デフォルトの名無しさん
08/05/28 14:54:57
>>562
便利なもんがあるんだなー
こんな普通な奴しか思いつかなかった

def f(seq):
    d = {}
    for s in seq:
        d.setdefault(s[0], []).append(s)
    for k in sorted(d.iterkeys()):
        print ','.join(d[k])

566:563
08/05/28 15:07:07
Python始めて1週間の俺には", ".join(g) の部分がよく分からなかったが、
gのシーケンスを", "で区切った文字列が得られるのか。

567:デフォルトの名無しさん
08/05/28 15:18:09
むしろ g は glue の g かもしれないぜ

568:デフォルトの名無しさん
08/05/28 17:07:40
>>563
for e in dir():
 1. if 違う要素かどうか判定: 改行\n + フラグを更新する
 2. 要素を出力する

d。ノートにでもまとめて整理しとく乙

569:デフォルトの名無しさん
08/05/28 17:19:04
>>566
個人的には
リスト.join(区切り文字)
の方がわかりやすいと思ってる。

570:デフォルトの名無しさん
08/05/28 17:27:24
1. FAQ嫁
2. Ruby使え
3. 俺もそう思う

571:デフォルトの名無しさん
08/05/28 17:43:04
引数にジェネレータを与えられるのはstr.joinの一つの利点だと思う

572:563
08/05/28 17:51:18
>>569
俺も文脈的に直感的でないと思うけど、文字列クラスにjoinメソッドがあるという
形だからしょうがないね。
静的関数として提供した方がいい気がするが、元々静的関数だったのが廃止されて
メソッドになったのね。

573:デフォルトの名無しさん
08/05/28 19:13:53
djangoを使ってみようと思っています。

それでまずはmodelを定義してデータを入れるところまではできま
した(sqlite3とかで直接DBの中身見て入ったのを確認した)。

だけど、manage.py shellでデータを確認しようとしても見れません。

具体的にはhoge.objects.all()とかってやっても[]が表示されるだ
けです。

これはなぜなんでしょうか?

あと、adminのhogeの画面でも
5 hoges
のように表示されるだけで、DBに格納したデータをいじれたり、見
る事ができない状態です。

何かアドバイスがいただければ助かります。よろしくお願いします。

574:デフォルトの名無しさん
08/05/28 20:13:19
うちではみれてる

575:デフォルトの名無しさん
08/05/28 23:51:30
ディショナリをそのキー名の変数にするってどうすればいいんですか?
つまり
a{hoge:1,foo:2,bar:3}
を↓のようにしたいです。
hoge = 1
foo = 2
bar = 3

576:デフォルトの名無しさん
08/05/28 23:56:27
>>575
入門書嫁。


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

5377日前に更新/131 KB
担当:undef