Pythonについて(アンチ専用)
レス数が950を超えています。1000を超えると書き込みができなくなります。
Pythonが嫌いな人のためのスレッドです。
■関連スレ
Rubyについて(アンチ専用) Part002
http://pc11.2ch.net/test/read.cgi/tech/1200210768/ >>882
そんなもんおまえが気づけた程度の極意なんやから
未来ある有望な子どもたちは当たり前のように気づくやろw
論理的ってこうゆう事やでアホンダラw >>884
言っとくけどおまえの芽はもとから腐っとったからなw インデントが崩れちゃうとそれだけで構造が読みにくくなる。
整形もプログラムを読解しながらやらなきゃならないので非常に効率が悪い。 >>884
子供は教師のマウンティングするための道具でしかないからな。 Pythonって、リストに値を追加する時、配列のような index 番号か、
または、'Hello' などの値を指定して、その値を探して一致した要素
の直前か直後辺りに追加する事は出来ても、C言語のように、
ポインタを指定して、そのポインタの指す要素の直後に追加する
ことは出来ないよね。
もし、そうだとすると、言語自体が高速動作に向いてない。
元々、データ構造的にリストとは配列とは異なる概念で、前者は
ポインタで互いに要素をリンクした構造。
だから、index 値から、要素を特定するには、先頭から順番に
「辿る」作業が必要で、要素数がNの時、O(N)の時間がかかって
しまう。値を探すのも、当然O(N)の時間がかかる。
Cの場合のポインタや参照などで場所を指し示す方法だけが、
O(1)の時間で済む。
ポインタの概念が理解しにくい人もいるらしいが、Pythonの方法だと、
どんなにCythonなどでコンパイルしても、アルゴリズム的に
速度は上がらない。 以下の仕様もダメ。ループでの要素削除がまともに出来ない。この不具合
を回避するためにはリストをまるまるコピーしなくてはならず、とても効率が悪い。
Cythonでコンパイルしても、Cに比べてとても遅くなってしまう。
http://blog.livedoor.jp/kmiwa_project/archives/1030391127.html
http://sakitake.blogspot.com/2012/10/pythonfor.html
Python で リストの中身をforループで削除する時の注意点。
numbers = [1,2,3,4,5]
とあって、for ループで numbers の中身を消したいと思って、下記のようにすると、失敗する。
for e in numbers:
numbers.remove(e)
numbers の中に、 2と4 が残ったままとなる。
numbers = [2,4]
Pythonの仕様。
そこで、このようにする。
for e in numbers[:]:
numbers.remove(e)
[:] とすることで元のリストのコピーとなり要素の順番を全て取得でき、全ての要素を順番に削除が行える。 >>888
「辞書」や「集合(Set)」は、O(1)で探せるらしいが、それは、Hush法を用いている
からだ。しかし、例え O(1)でも、データを探すには、例えばデータが文字列なら
最低1回の文字列比較(C言語でのstrcmp()みたいなもの)は必要になるので、
文字の長さに比例した時間がかかってしまう。
要素(データ)が文字列の場合に限らず、1つ1つの要素のデータが複雑
になった場合は、その複雑さに比例したような検索時間がかかるようになる。
つまり、要素数をN、1つあたりの要素の平均サイズをM とすると、
「辞書」や「集合」であっても、O(M)の時間がかかる。
リストなら、O(M・N)の時間がかかる。
一方、C言語のリストなら、ある要素の直前、直後に追加するのには、
全く探す動作が必要ないので、O(1)で済む。
こういうところが、PythonとCの速度差に繋がる。 >>889
配列からの削除なんて、要素がずれるから、全言語でバグる >>> a = [1, 2, 3, 4, 5]
>>> for e in range(len(a)): a.pop()
>>> a
[] >>888
PythonのリストのランダムアクセスはO(1)で、実態は配列だよ
また、Cのポインタは配列アクセスと同じなので、
配列操作に関して言えばポインタを持つのもインデックスを持つのも同じ
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
b = 2;
// a[b] == *(a + b) == *(b + a) == b[a] == 2 誰が書いても同じように書けるとか言うくせに
同じようなモジュールたくさん作りやがって。
ディレクトリ名取るのに os.listdir と glob.glob と pathlib.glob ... バカかよ。 C:/Users/Owner/Documents/*.txt
Ruby では、Windows のファイルパスを、/ で書けるけど、
Python では、\ だから、うっとおしい! うちのpythonはwindowsでも/使えてるんだが python のことを何も知らないで荒らしてるルーピーなんかホットケーキ map あるのに list内包とか作ってブレブレ。
list 返すのか iterable オブジェクト返すのかも。
オブジェクト指向に関数型の見た目だけ取り入れてごちゃごちゃ。
初心者の取り込みには成功したね。
上級者の生産性は落ちるけど。 確かにpy3になってlist(hoge)することが多くなった
もう少し柔軟に暗黙の変換してくれてもいいのに Pythonはスリザリンの陰謀だからな
つまりそれはあの人を彷彿とさせるのであって邪悪なんだよ >>910
>自分が知っている範囲では、他のメジャーな言語でこれほどコロンを多用する言語はない。
BASIC でマルチステートメント使わないのかな? 私は馬鹿ですって言ってるようなもの
●コロン忘れる←セミコロン行末に書く言語のことを忘れてるだけじゃね
●Scheme/Rubyと比べて値返し←Cも知らんのかこいつ&PythonはPerlの悪弊から逃れられたのにRubyの悪弊持ち込んでどうする? >自分が知っている範囲では、他のメジャーな言語でこれほどコロンを多用する言語はない。
せやな… C++
> Pythonでは、関数が返す値には明示的に「return」を付ける必要があるのだ。
せやな… PowerShell 文法ネタで盛り上がってる訳じゃないな
シッタカでドヤってるアホが
間違いでツッコミどころ満載だから
盛り上がる >>913
return 使わないで戻り値返す言語って何があるの?
関数系は当たり前だけどさ。 Cは実質voidでもアキュムレータの値をお漏らしする実装がある
*ubyはそれを悪用したと表明している >>916
目か頭に障害でもあるのか?
PowerShell って明記してるんだが…
あとこじつけでもいいならVBAとかPascalもReturn使わずに戻り値を戻せる >>918
老眼でな。
PowerShell は return で返すんじゃないのか。
他の言語だと result 使うとか関数名に代入とかもあるけどな。
手続き形で明示的に書かなくてもいいのは Julia くらいしか知らなかったんで。 >>919
PowerShell の Return は制御を戻す役目
シンタックスシュガーとして
Return $a
とか書けるけど
$a
Return
って書いても同じ
> 他の言語だと result 使うとか関数名に代入とかもあるけどな。
それ
>> あとこじつけでもいいならVBAとかPascalもReturn使わずに戻り値を戻せる
のことだよね
result は Delphi だと思うが ネストしたブロックからの制御が足りなかったような?
perl だとこんな感じの深いところからでも redo continue last などがラベル指定で制御できる
last TRIANGLE if ($debug); とか
かなり自由にブロック(ブロックはスコープもその中になる。)を作れて、
必要ならラベルもつけられる。つけたラベルは redo last などの後につけて制御できる。ついでに制御の先が分かりやすい
TRIANGLE:
{
RUN:{
DISPLAY:{
}
GENERATOR:{
}
}
}
} >>919
Perl もそう。
スクリプト系言語は、最後の評価結果が戻り値になるのが多いやろ。
これを知らんようなヤツは、言語を評論してはいかんねえ。 >>922
確かに perl もそうだったな。return 使うけど。
スクリプト系ってあと何だろう?
JavaScript 、PHP、Luaあたりかな。
オレの良く知らないGoとかRustとかNimとかCrystalあたりかと思ったんだよ。
知ってたら教えてね。 Ruby は、return を書かなくてもよい
この場合、最後の評価結果が、戻り値になる returnを書くかどうかで生産性に違いが出ると思ってるやつって
こんなにいるのか? perl は return 不要だ
python は return 書かないと None が還るので戻り値は「常にある」 returnを書くかどうかで生産性ガーって>>925しか言ってなくね?w じゃあなんでreturnについてこれだけレスがついてるのかね?
文脈読めない人にはそう感じないのかもしれんが。 値返すのにreturn使う言語と使わない言語あげてるだけだろ…
どこの文脈曲解したら生産性の話になるんだよw なるほど生産性とまるっきり関係のないことをあーだこーだ言ってるんだ。
そりゃすごいね。 >>931
おまえがコンピュータ言語に興味がないことはわかったから、黙っとけ。 returnについてあれこれ言語別の特徴をドヤ顔しつつ書き込んでましたが
生産性には一切関係ない無駄議論でした。 んなことはわかっとる。
わかってないヤツなんかおらんやろ。w 大多数: あれは return が必要、これはなくてもいいぞ… ワイワイ、ガヤガヤ
ID:yEr4r4hL: 生産性ガー
大多数: いや、生産性なんて話してないし… (当惑
ID:yEr4r4hL: 生産性の話しないのはおかしい
大多数: いや、おかしいと言われても… (困惑
ID:yEr4r4hL: 無駄議論かよ!
大多数: (匿名掲示板で何イキってるんだよ…) >>938
>・リストに対してmapやfilterといった関数を適用した結果が、リストではなくイテレーターのオブジェクトになっている
本これ。
あと三項演算子のifは本当マヌケ。 >・リストに対してmapやfilterといった関数を適用した結果が、リストではなくイテレーターのオブジェクトになっている
C#もそういう感じだが、むしろそれがいい。
イテレータからリストを作るのは簡単だし、なによりも遅延実行にする余地ができる。 イレテータを返すのかリストを返すのかが直感的に分からない。
遅延評価は甘え。 >>942
そのへん、C#はすぐわかるからな。w
原則はイテレータだし、IDEサポートが最強だし。
Pythonは、全部イテレータ返しにすればいいんじゃないの? Ruby でも、Enumerable よりも、
Enumerator を戻してくれる方が、実体化が遅延されるからよい
ドンドン、Enumeratorでつなげていって、最後に配列化(実体化)する pythonのジェネレータ関数の仕様は、よく言えば不親切、ありていに言えば狂ってる。
なんであんな仕様にしたんだか。 キモいのは最初だけだよ。。。
すぐに馴れて、キライじゃなくなるよ。。。
実際、発明だったことは間違いないし。 >>945
Haskellの遅延評価を持ってきたかったのかもな
どちらも無限に続く数列っぽく扱える
そしてpython は速度と柔軟性のバランスの着地点を探しながらこうなったと Ruby でも、Enumerable#lazy で、無限配列を扱える。
Enumerator のように、select, map, reject など、一部のメソッドで遅延評価される
それで最後に、to_a, first, take などが呼び出される所で、配列化(実体化)される
p range = ( 1..Float::INFINITY )
#=> 1..Infinity 範囲オブジェクト
p enum = range.lazy
#=> #<Enumerator::Lazy: 1..Infinity>
p enum_2 = enum.take( 3 )
# ブロック無しなので、Enumerator を戻す。
#=> #<Enumerator::Lazy: #<Enumerator::Lazy: 1..Infinity>:take(3)>
p ary = enum_2.to_a
#=> [1, 2, 3] 配列化(実体化) 3.11.0 余計なことしやがって > setup.py / :ヽ
/ :\
./ ,,,,;;::''''' ヽ
/ ,,,,;;::::::::::::::: __ ヽ
| . __ '<'●, |
|. '"-ゞ,●> .:: |
| ::: :⌒ 、 |
ヽ. ;ゝ( ,-、 ,:‐、) | へーすごいじゃん
l.. | | |
| __,-'ニ| |ヽ_ |
ヽ: ヾニ| |ン" /__
.ヽ: | l, へ ::::ヽ,
l.:`. / / , \ /ヽ ::\
`、::::: |  ̄ ̄\/ ノ :::ヽ
|:::::: | ー‐/ / ::::\ , -─- 、 , -‐- 、
,, -'" `V `‐、
/ \
./ \
/ ヽ
./ / l ヽ
/ / / / ./ / l | .l .lヽ
| l. l / / / ./ .l | | l / / l l.〉 ∧∧∧∧∧∧∧∧∧∧∧∧
l、 | | l / / ./ ./ |. l | ./ ./ ./ | |./ < >
l、| | l // ///| l / / //// / / < 見るがいい… >
l、l | /l///_/ l / //_|/_∠| / | / < これが厨房が立てた >
/⌒ヽ | \ `ー' ゝl // `ー' /|/⌒v' < DQNスレッドだ! >
| l⌒l l|  ̄ ̄"//|〉 ̄ ̄ ̄ .|/^_l.l < ワハハハハ >
ヽゝ(ー| /| ´ \| ll ),l'ノ < >
lヽ_ / | ┌───7 /._/ ∨∨∨∨∨∨∨∨∨∨∨∨
.l/ | l ̄ ̄ ̄/ / / ,ノ!
/ |.. V´ ̄∨ ./ /,.-‐'" .|
./ (;;) |\ `ー‐'´ / / |
| _|_\ /| ./ |
(| ,.-‐'" | \__/ .|/ _,.-─;
|/ .(;;) |─────┤ _,.-‐'":::::::::/
 ̄ |::::::::::::::::::::::::::::::|^l::::::::::::::::::/ レス数が950を超えています。1000を超えると書き込みができなくなります。