X



pythonがこの先生きのこるには

■ このスレッドは過去ログ倉庫に格納されています
0001七色波紋 ◆.VgGY5NKtU
垢版 |
2007/01/05(金) 20:26:11
$python kinoko.py this_teacher
0085デフォルトの名無しさん
垢版 |
2007/07/01(日) 07:33:52
>>82
↓これと同じことだと思う。

>>> False==False
True
>>> (1==2)==False
True
>>> 1==2==False
False
>>> 

Pythonの比較演算子は複数つなげられる。その場合、
最初の比較演算子が False なら結果は False、そうでなければ
次の比較演算子が False なら結果は False、そうでければ
その次の比較演算子が・・・・・と続けていって
すべての比較演算子が True なら結果は True となる。
ある比較演算子で False になると、そのあとに比較演算子があっても評価されない。

1 in [] in [False] の場合、最初の in 演算子が False になるので
次の in は評価されないまま結果は False となる。
008685
垢版 |
2007/07/01(日) 07:35:53
うへ、かぶった orz
0088デフォルトの名無しさん
垢版 |
2007/07/13(金) 19:19:45
>>> o='oOo'
>>> O='ooOOoo'
>>> def ooOOooOoOOoo(oO): print oO; return ooOOooOoOOoo
...
>>> ooOOooOoOOoo(o)(o)(O)(O)(o)(o)(O)(o)(O)(O)(o)(o)
oOo
oOo
ooOOoo
ooOOoo
oOo
oOo
ooOOoo
oOo
ooOOoo
ooOOoo
oOo
oOo
0089デフォルトの名無しさん
垢版 |
2007/07/15(日) 18:27:29
いまのOctalは危険な気がするので0o123で良いんだが
(つーかどうせ使わん)、そんなことより2進表記を
用意して欲しいものよ・・
0091デフォルトの名無しさん
垢版 |
2007/07/16(月) 01:57:48
こういうことじゃないの?

>>> 064 # base 8
52
>>> int('064') # base 10
64

2進表記って↓とは違う話?
http://www.python.org/dev/peps/pep-3127/
0092デフォルトの名無しさん
垢版 |
2007/07/16(月) 23:20:16
あ〜まさにこのPEPで言い尽くされてます。
ちなみにハードウェア寄りの仕事してると
ビット列扱うことが結構あるんですわ。
0096名無しさん@そうだ選挙に行こう
垢版 |
2007/07/29(日) 11:00:32
きのこ
0097デフォルトの名無しさん
垢版 |
2007/07/31(火) 06:56:03
そんなことは無い

グッスミン、ララ〜、ララッラ、ラッラッラ〜
0099デフォルトの名無しさん
垢版 |
2007/08/01(水) 23:08:15
このスレは本スレにはとても書けない様なかっこいいネタを見つけてしまった人専用の隔離スレです。
0102デフォルトの名無しさん
垢版 |
2007/08/02(木) 23:47:30
ちょっとしたうれしい発見

>>> def g():yield 1;yield 2;yield 3
...
>>> g()
<generator object at 0x00BE5490>
>>> a,b,c=g()
>>> a
1
>>> b
2
>>> c
3
0103デフォルトの名無しさん
垢版 |
2007/08/03(金) 08:03:15
あ、ジェネレータでもできるんだ。

でもイテレータやジェネレータって個数わかんないことが多いから使う機会少なそう……。
0111デフォルトの名無しさん
垢版 |
2007/08/14(火) 06:01:19
Neal Norwitz:
>Alpha 1 is a few *weeks* away. The release will hopefully come
>shortly after the sprint at Google which is Aug 22-25.

windows用installerとかもすぐ出るんだろうか・・・?
0115デフォルトの名無しさん
垢版 |
2007/08/24(金) 09:14:30
a_expr とか and_expr とか xor_expr とか augop とかで、
texから変換したときのミスで出てきたっぽい意味ない記号がポロポロ混じってる。
ひどいのがprint_stmtでこれは相当カンを働かせないと元が何だったか分からない。
(まあ、本文見れば正解が分かるけど、・・・
0122デフォルトの名無しさん
垢版 |
2007/09/14(金) 22:47:52
会社のおっさんSE(昔の自慢話ばかりしてる)にPythonの説明してたら、
偉そうに「みんな同じようなソースになってつまらない」とか言ってた。
俺は教養主義者じゃないけど、こういうアホを見ると計算機科学の基礎くらいはやった方がいいと思った。
なんか自分が発明したアルゴリズムがいくつかもパクられてるとか言ってるし…。
つーか仕事の邪魔だよおっさんひっこんでろ!
0124デフォルトの名無しさん
垢版 |
2007/09/15(土) 16:51:42
同じことやるソースなら、同じになっていいんだよ。
だから、同じようなソースを書くのがいやなら、同じことをやらなければいい。
みんなで同じのを作って競うんでもない限り、やったことないことをやった方が楽しいじゃん。
同じ問題に対して、今までと違うやり方でやるのも含めてね。
0126デフォルトの名無しさん
垢版 |
2007/09/15(土) 22:35:17
同じ処理でもクラス作りたがる奴、ローカル関数作りたがる奴、
ワンライナーにしたがる奴…と色々特徴はあるぜ
0127デフォルトの名無しさん
垢版 |
2007/09/16(日) 00:39:28
すまん、板違いだった…。
>126
λを知らないし、そもそも関数の意味とか分かってない。
だから、ジェネレータや高階関数の意義も理解できないし、思い浮かびもしないはず。
(それでアルゴリズムを作ったとか言っているあたりが…。)
ただ、最近の若手はこのあたりを抑えてて、頼もしく感じる。

あと、お詫びにこのスレに沿った話題も。リスト内包はジェネレータ表現に統合されていくらしいね。
これはときどきリスト内包しか使えない場所にジェネレータ表現を使ってしまうことがあるので、個人的には助かる。
(書く内容はほとんど一緒なわけだし)
0129デフォルトの名無しさん
垢版 |
2007/10/16(火) 10:21:37
C++のプロジェクトからPythonのモジュールを利用する方法教えて下さいでつ。
0131デフォルトの名無しさん
垢版 |
2007/11/01(木) 00:53:04
(1.0 + 2.0j).realのリアルは何で、methodじゃなくて属性なんだろう、・・・
conjugateはメソッドなのに、・・・なんかシンメトリーが崩れてる気がする。
0133デフォルトの名無しさん
垢版 |
2007/11/01(木) 08:45:03
???
R を実数全体、C を複素数全体とすると
real: C→R
conjugate: C→C
で両方とも関数だけど、そういうことじゃなくて?
0134デフォルトの名無しさん
垢版 |
2007/11/01(木) 09:23:35
確かに実数部を取り出す操作は関数で表せるが、この場合は実数部が
複素数の属性(項)だということを強調したんじゃないか、ということ。
0136デフォルトの名無しさん
垢版 |
2007/11/12(月) 07:54:31
どうせ属性値として持ってんだから、わざわざ関数作るまでもないだろ、みたいな不精
0140デフォルトの名無しさん
垢版 |
2007/11/15(木) 04:33:41
IOをハックしてた人(でも、contributeするほどには知識がなかった人)にGuidoがやさしい言葉をかけてるのが和んだ
0144デフォルトの名無しさん
垢版 |
2007/11/19(月) 22:00:33
ジェネレータ使う側との通信用だよ
まあもっと良い書き方はないのかという気はするが
0145デフォルトの名無しさん
垢版 |
2007/11/20(火) 01:37:11
値を出力する言語要素は少ないからな。
importに倣って yield_stmt ::= "yield" expr ["receive" name] とか?
しかしまぁ今のでもlambdaと同程度には穏当かと。
0146デフォルトの名無しさん
垢版 |
2007/11/21(水) 14:48:37
>>143
assignment_stmt ::=
(target_list "=")+
(expression_list | yield_expression)

yield_stmt ::=
yield_expression

なんだが?
むしろyield文は、式文のように値を捨てている。

yield式は、常に値をスタックに積んで、
yield「文」なら(制御から戻った時に)要らないから捨てる。
単純な実装だとこうなる。
構文に合致していてスタックマシンで実装しやすい。
0147デフォルトの名無しさん
垢版 |
2007/11/21(水) 21:17:52
(expression_list | yield_expression)

expression_listなんていうかなり一般的なものと、yield_expressionつう割と特殊な
ものが並列で並んじゃうこと自体がおかしいと思う。
0148デフォルトの名無しさん
垢版 |
2007/11/21(水) 21:48:11
>>147
Python構文のBNFの構造(grammar.txt)は、
単純な実装コードへ自然に変換できるような書き方になってる。
優先順位を埋め込んだり。

特別な処理が必要なものは、
コンパイラ・コンパイラのアクション部に実装を書けるところまで、
特別なノンターミナルとして扱うとコード生成が簡単。

かなり構文/意味解析に手慣れた人たちが書いているなあと思う。

ただ、後から拡張した部分が、継接的に残っているところもあるみたい。
0150デフォルトの名無しさん
垢版 |
2007/12/01(土) 18:51:41
Pythonオワタ・・・orz
俺もう乗り換えるわ

Running the snippets above, I got the following results:

Python 2.5.1:   31.507s
Ruby 1.9.0:    11.934s

The Ruby code:

def fib(n)
 if n == 0 || n == 1
  n
 else
  fib(n-1) + fib(n-2)
 end
end

36.times do |i|
 puts "n=#{i} => #{fib(i)}"
end

And the Python equivalent:

def fib(n):
  if n == 0 or n == 1:
   return n
  else:
   return fib(n-1) + fib(n-2)

for i in range(36):
  print "n=%d => %d" % (i, fib(i))
0151デフォルトの名無しさん
垢版 |
2007/12/01(土) 22:00:55
うちの環境だとpython2.5は37秒ぐらいで、ruby1.8は100秒前後だった、(まるっきり↑のコードまんまで
ruby1.9ってほんとにそんなに早いの?(入れるのめんどくさくて試せない
つうか、py3000は速度的な改善はないんだっけ?
0152デフォルトの名無しさん
垢版 |
2007/12/02(日) 03:48:48
どうやってパフォーマンス計るの?
0154デフォルトの名無しさん
垢版 |
2007/12/02(日) 10:48:03
>>153
ありがとうございます。
自分でもやってみました。

python2.5.1:    49.147s
python2.5.1+psyco: 2.958s
ruby 1.8.6:    1m59.859s
ruby 1.9:     36.132s
0157デフォルトの名無しさん
垢版 |
2007/12/02(日) 12:59:33
python 2.5.1
102.657s

IronPython 2.0A6
54.043s
0159デフォルトの名無しさん
垢版 |
2007/12/03(月) 00:14:35
IronPythonは起動に時間がかかるのがふにふに。
ruby1.9は何が変わったんでしょう?

あと、ついでなのでF#もおいときますね。
let rec fib n = if n = 0 || n = 1 then n else fib(n-1) + fib(n-2)
let _ =
  for i = 0 to 35 do
    printfn "n=%d=> %d" i (fib i)
  done;;
0163デフォルトの名無しさん
垢版 |
2007/12/04(火) 17:41:05
>>155
> python 2.5.1
> 0m49.463s
>
> jython 2.1 on java1.6.0 (JIT: null)
> 0m28.918s

つづき (全く同じ環境です)

ruby 1.8.5
1m50.823s

ruby 1.9.0
2m28.901s

jruby 1.1.b1 on java1.6.0
0m30.278s

やっぱJVM w/HotSpotはこういう単純なテストだと速いね。
俺の環境(Intel L2300 @ 1.50GHz)だとruby 1.9.0はかなり遅い。
0165デフォルトの名無しさん
垢版 |
2007/12/05(水) 12:41:04
うちの環境 @PentiumM 1.7GHz

Python 2.5.1
40.00s user 0.32s system 98% cpu 41.066 total

Python 2.5.1 + Cython
18.73s user 0.11s system 98% cpu 19.174 total

Python 2.5.1 + psyco
2.13s user 0.04s system 91% cpu 2.371 total
0166デフォルトの名無しさん
垢版 |
2007/12/05(水) 21:50:15
>>165
Cythonはもっと速度が出ると思うけど
0168デフォルトの名無しさん
垢版 |
2007/12/06(木) 09:00:10
>>166
糞コードそのままだからね
書き換えたら100まででこんな感じ

…略…
n=98 => 135301852344706746049
n=99 => 218922995834555169026
python fibtest.py 0.03s user 0.01s system 13% cpu 0.295 total
0169デフォルトの名無しさん
垢版 |
2007/12/06(木) 09:06:21
書き換えたらどれでも速いだろ。
0175デフォルトの名無しさん
垢版 |
2007/12/09(日) 03:31:38
3.0で
単に[0, 1, 2, 3, 4, 5, 6, 7, 8]が欲しいごときで

list(range(9))

って書かなきゃいけないのって長くね?
対話実行時にストレス感じそう
0176デフォルトの名無しさん
垢版 |
2007/12/09(日) 03:46:49
>>175
r=range
list(r(9))
インタラクティブならこういうことしない?

r=lambda x: list(range(x))
r(9)
めちゃつかうならこうしちゃえばいいし。
0177デフォルトの名無しさん
垢版 |
2007/12/21(金) 13:19:04
def N():
   i = 0
   while 1:
      yield i
      i += 1

def enumerate(g):
   return zip(N(), g)
0178デフォルトの名無しさん
垢版 |
2007/12/24(月) 06:34:09
本家MLでmetaclassの話題振ってきたやつに対する海老ーの対応が
いやな奴過ぎてドン引きした。
0180デフォルトの名無しさん
垢版 |
2007/12/28(金) 21:48:48
それは全然普通に議論してるように見えるけど・・・

それじゃなくて、ごく最近ので、初ポストですって言ってメタクラスの話題振ってた奴に対して
の扱いがなんか異常だった。
で、その人の最後の捨て台詞が、「なんでpythonに貢献することが、楽しみというよりもむしろつまんねー作業なのかが
良く分かりました。本当にありがとうございました。」
0182デフォルトの名無しさん
垢版 |
2008/01/02(水) 21:17:44
>Python 3.0 compatibility
>------------------------
>As it will be used for Python 3.0 too, the toolset should be kept in a state
>where it is fully usable Python 3 code after one run of the ``2to3`` utility.

> 3.0でも使えなきゃやだ。道具箱の手入れは怠るべからず。3.0でも使えるように。
>一連の2to3ユーティリティが登場したら。

2to3コンバータツールをかまして互換性を取るというのは本当?
もしそうだとしたらコードを書く時どういう点に注意したら良いでしょうか。
0183デフォルトの名無しさん
垢版 |
2008/01/05(土) 19:11:14
きのこる揚げ
0184デフォルトの名無しさん
垢版 |
2008/01/05(土) 19:52:04
Python 3000 FAQ
http://www.artima.com/weblogs/viewpost.jsp?thread=211200
http://www.kt.rim.or.jp/~kbk/zakkicho/07/zakkicho0707.html#D20070730-4
>You can't use .iterkeys(), but .keys() works differently in 2.6 and 3.0.
>You can't use xrange(), but range() works differently.
>You can't use metaclasses, as the syntax for specifying a metaclass
>is completely changed in 3.0. And so on.

>あなたは2.6と同じ記法で.iterkeys(),xrange(),metaclassを扱うことはできません。
>.iterkeys(),xrange()は廃止 => keys(),range()に移行
>metaclassは定義の仕方が変更されます

よく読んでみたら、あんま変わらないってことなのかな?英語ややこしい
むぅ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況