Pythonのお勉強 Part52at TECH
Pythonのお勉強 Part52 - 暇つぶし2ch950:デフォルトの名無しさん
17/05/11 12:29:06.88kla/SVW9.net
わからんわruby勧めるとか嫌がらせにも程がある

951:デフォルトの名無しさん
17/05/11 13:02:41.90hGHurpM2.net
ちょっと前から居る頭おかしいやつだろ
黙ってNGが吉

952:デフォルトの名無しさん
17/05/11 13:39:43.22UfRO4Mvo.net
ルビーは日本発だから日本人は学びやすいんじゃないの?
やったことないけど

953:デフォルトの名無しさん
17/05/11 14:16:40.89M68dX9hh.net
>>923
デフォルトでは末尾最適化されない、なら異論ないの?

954:デフォルトの名無しさん
17/05/11 15:46:36.49qctzK1Hm.net
ちょっとだけ、やった事が有る
最後のend文が多すぎて無理だった

955:デフォルトの名無しさん
17/05/11 16:02:21.88QOSX+n3i.net
ワッチョイ希望

956:デフォルトの名無しさん
17/05/11 16:07:46.61DjoX+azc.net
このスレもわざと荒らしてワッチョイ付けさせる流れに飲み込まれるのか

957:デフォルトの名無しさん
17/05/11 16:19:41.66eS2L0WVj.net
>>928
それならおk、このまえのアホは標準でされるような口ぶりだったのでな

958:デフォルトの名無しさん
17/05/11 23:27:12.65UV0D5efL.net
>>929
ネストさせすぎずに関数とかにしろよ

959:デフォルトの名無しさん
17/05/12 02:10:43.10lh1VWFPT.net
Pythonは、末尾再帰で書くと、スタックを使わないで、ループに直してくれる

メモ化も出来る。
関数の戻り値を、キャッシュ出来るから、再計算しない

return f(n-1) + f(n-2)
こういうフィボナッチでも、f(5) → f(4) → f(3)~などと、スタックを使わない。
関数の戻り値をキャッシュしているから、f(5) → f(4)=3 と、すぐに答えが返ってくる

他にも、ダイクストラなどのグラフや、
ディレクトリ階層を再帰的に巡回する、walk もある

Pythonは、このあたりの再帰処理が、Rubyよりも強い。
ただ、日本には「たのしいRuby」があるから、
基礎


960:力を付けるのは、外人よりも圧倒的に強い 塾と同じ。日本には塾があるから、圧倒的に勉強の効率が良い。 外国では必ず、頭の良さは、アジア人・白人・黒人の順番になるのは、そのため



961:デフォルトの名無しさん
17/05/12 02:27:55.77WAk1mqz+.net
勝手にメモ化するわけではなく、@memoize だかのデコレータを指定する必要があるんじゃなかったか?

プログラミング言語のテキストは、日本語のよりも、はるかに優れた英語のが、たくさんあるよ。

962:デフォルトの名無しさん
17/05/12 02:38:32.18kxbffAjR.net
>>934紛らわしい
形だけ末尾再帰にしても最適化かからないしメモ化もされない
最適化(標準ライブラリにはない)、メモ化(functools.lru_cache)を明示的に書けばできるってだけだ

963:デフォルトの名無しさん
17/05/12 02:50:13.68Z8esmvE1.net
>>934
囀るの止めろ
嘴を叩き折るぞ

964:デフォルトの名無しさん
17/05/12 04:02:32.44lh1VWFPT.net
一々、手取り足取り教えなくても、
興味ある人が、検索して調べてやれば、良いだけ

自分で汗をかいて調べないと、身につかない。
自分で苦しんだ事しか、経験値にならない

965:デフォルトの名無しさん
17/05/12 05:06:40.952EWsZnJS.net
その本のステマなんだろうけどさ
なんでPythonのスレでやるわけ?
Rubyのスレでやんなよ

Rubyは悪い言語だと思わないけど
あなたがそういう身勝手な行動をしてるだけで
他の言語利用者にどれだけRubyが悪印象持たれてるか自覚してる?
どんどん評判悪くなって今以上に衰退しちゃうよ

966:デフォルトの名無しさん
17/05/12 05:24:56.58lh1VWFPT.net
Python, Ruby は、GIL など仕組みも、ほとんど同じだから

しかも、日本には「たのしいRuby」があるから、
基礎力を付けるのは、外人よりも圧倒的に速い

高くジャンプするのに、一旦、しゃがむだろ。
遠回りに見える事が、実は速いことがある

「たのしいRuby」「みんなのPython」は表裏一体だから、
2つの言語を短時間で学べるし、理解も深くなる

一方「みんなのPython」だけで勉強すると、先に進めなくなる。
その後、色々なPythonの本を読んでも、理解力が違ってくる

プログラミングの基礎は「たのしいRuby」で学んで、
言語固有の部分だけを「みんなのPython」で学ぶ。
このやり方で進めば、JavaScriptにも進める

つまり各言語で、プログラミングの基礎を学ぶ必要がない。
そこは「たのしいRuby」で学べばよいから

967:デフォルトの名無しさん
17/05/12 06:50:22.8084Td0x+H.net
>>940
本の宣伝をする前に自分の誤った知識をなんとかしろ馬鹿野郎

968:デフォルトの名無しさん
17/05/12 07:57:42.92R4lpzg6G.net
誤った知識はどうでもいいけどruby勧めんなカス

969:デフォルトの名無しさん
17/05/12 08:12:52.77lh1VWFPT.net
JS, Pythonを初心者に教える場合に、良い本・良い教え方が無いから、困る。
直接、攻めるとダメ

なぜかというと初心者には、
各言語の初心者と、プログラミングの初心者の、両方の側面があるから

だから結局、JS, Pythonを勉強したいなら「たのしいRuby」で勉強すべきとなる。
そこでオブジェクト指向が分からないなら「スッキリわかるJava入門」となる。
情報処理全般の知識がないなら、情報処理資格を取れとなる

つまり、何かを勉強しようとすると、さかのぼって基礎から勉強しないといけない。
直接攻めても、ダメな事が多い

できる人は、才能や努力ではない。
自分のレベルに合った、知識を吸収しやすい、勉強の順番が大事。
つまり、子供が大人になるような、成長過程

970:デフォルトの名無しさん
17/05/12 08:16:22.172RbgVjD0.net
>>940誉めて伸ばす為には、一旦完膚泣きまでこてんぱんに落としてけなさなければならない
人格崩壊させて俺様の奴隷になれば幸福を与えるぞ
つまり、あなたほそう言いたいのですよね?分かります

971:デフォルトの名無しさん
17/05/12 08:38:20.64WAk1mqz+.net
>943
Amazonで、楽しいRubyの書評を、表示された順に上から拾ってみた。
プログラミング言語の初心者向けの本としては、あまり評価されていないようだけど。

「内容が新しくて、ある程度応用的な知識まで網羅している本だと思いますが、初心者には厳しいかな。
自分は多言語をある程度習得していたので、なんとか理解できましたが、html,cssしか知らない人が読んだらおそらく挫折するんじゃないかと思います。」

「プログラミングが全くわからん、という人にはあまり向いてない気がします。」

「最新版でもよくわからないところをちゃんと説明されてなくて、たのしいRubyの名前が反映されてないと思いました。
特にだめだと思ったのは、基本的な条件文や繰り返しがお座なりにされていて、この本だけでは習得できないところです。
結局勉強量が足りないのでネットなどで調べてやっていくしかありません。」

972:デフォルトの名無しさん
17/05/12 09:04:55.74lh1VWFPT.net
「たのしいRuby」よりも簡単な本では、プログラミングの入門の入門になってしまう。
3日・数時間で読める本とか

もっと、さかのぼって基礎から勉強しないといけない

だから「たのしいRuby」が試金石。
3回読んでも分からなければ、もっと、さかのぼって基礎から勉強しないといけない

結局、自分のレベルに合う所まで、さかのぼって行かないと、吸収できない。
食べ物と同じ。
吸収しやすい形にまで分解しないと、吸収できない

973:デフォルトの名無しさん
17/05/12 09:40:28.36oMKZ8LlO.net
>>946
嘘教える経験値なら要らないんですか自覚されていますか?
馬鹿だから分からないかな?

974:デフォルトの名無しさん
17/05/12 11:04:18.58qQs3MEiD.net
>>937
ワロタ

975:デフォルトの名無しさん
17/05/12 11:09:19.69yYwfXxc8.net
pythonで覚える「プログラミング超入門」
みたいのは無いんだっけ?
小学生でも読めるような

確かな力が身につくPython「超」入門-確かな力が身につく「超」入門シリーズ-鎌田-正浩
URLリンク(www.amazon.co.jp)

これの5章までは超入門らしいけど

976:デフォルトの名無しさん
17/05/12 12:18:52.89R4lpzg6G.net
プログラミング初心者がいきなりプログラミングを覚えようとすんなよ
まずはプログラミング言語覚えれ

977:デフォルトの名無しさん
17/05/12 12:37:43.02YDtxOZQ2.net
>>946
嘘教えるなって言ってるの見えないの?
後ここでRuby勧めんなカス

978:デフォルトの名無しさん
17/05/12 15:09:12.85yYwfXxc8.net
>>950
プログラミングを覚えるって、プログラミングが出来るようになるって意味?
プログラミング言語を覚えるって、プログラミング言語を使えるようになるって意味?

979:デフォルトの名無しさん
17/05/12 15:17:19.87A98yDNgz.net
「たのしいRuby」NG

980:デフォルトの名無しさん
17/05/12 16:23:43.09/TQAsneg.net
Qt5 を使ってちょっぴり GUI のあるプログラムを Python で作るべく勉強中です。
とりあえずちょっとした項目の入力をして、ボタンを押せば処理を開始する程度のものを作りたいのですが、
少し時間がかかる処理である上に、あまっさえその処理を中断できるようにしようとすると、
やはりスレッドとかを使う必要があるのでしょうか。

981:デフォルトの名無しさん
17/05/12 16:31:28.52lBRx19G1.net
>>954
そのためのスレッド

982:デフォルトの名無しさん
17/05/12 16:36:26.02SNVl6Q5d.net
そのためにこのスレがあるわけだな

983:デフォルトの名無しさん
17/05/12 17:38:10.27/TQAsneg.net
>>955
ですよね。
試しにボタンのクリックイベントでそのまま長い処理をしてみたら、固まりました。
multiprocessing とかいくつかあるみたいですね。
最近のはやりというか、動向のようなものはあるんでしょうか。

984:デフォルトの名無しさん
17/05/12 17:53:30.81lBRx19G1.net
>>957
multiprocessingは文字通りプロセスの複製をするので特別必要でもない限りおすすめしない、色々めんどい
ちょっと調べてみたけど最近のpythonにはfuturesってライブラリが付いてるみたいだね

985:デフォルトの名無しさん
17/05/12 18:01:17.68pgL0NfN7.net
qt使うならqt側で用意されてるQThread使ったほうが面倒ないと思うよ

986:デフォルトの名無しさん
17/05/12 22:53:59.34UrL0+2Dc.net
で、結局どの本なのよ
超初心者向けの本よ

987:デフォルトの名無しさん
17/05/12 23:02:11.6084Td0x+H.net
入門書レベルならググれば済むしリーダブルコードみたいなの持ってたほうがよっぽど役に立つよ

988:デフォルトの名無しさん
17/05/12 23:14:46.64/TQAsneg.net
ありがとうございます。有益なキーワードが得られました。
結構いろいろとあるんですねえ。Python も始めたばかりで、どの方法にどんな特徴とか
なかなかわからないんですが、この辺は試してみるしかないんでしょうね。

989:デフォルトの名無しさん
17/05/12 23:19:50.58rWPyWTss.net
プログラミング経験あるならdive in to Python 3

990:デフォルトの名無しさん
17/05/12 23:21:33.05m61B9PhQ.net
この世界では他の人の意見を聞いているときりがない。100人いれば100通りの意見と方法がある
ある程度で区切って何も考えずに突っ込め
そうすれば101人目になれる

991:デフォルトの名無しさん
17/05/12 23:36:22.31skCfdmlm.net
区切るなら50人と50人だろ

992:デフォルトの名無しさん
17/05/12 23:42:33.392BHeKZjd.net
超初心者ならpaizaみたいな動画学習コンテンツが良いと思うな

993:デフォルトの名無しさん
17/05/13 01:17:24.618952tOHM.net
質問。

ジェネレータの入れ子ってできないのですか?
期待した結果が返ってきません。

data = ['abc','def','ghi']
gen = (moji for moji in (words for words in data))

期待する答え
'a' 'b' 'c' 'd' 'e' …

実際の答え
'abc' 'def' 'ghi'

994:デフォルトの名無しさん
17/05/13 01:36:09.20PLp5Hu9G.net
(words for words in data)のジェネレーターが返すのは
['abc','def','ghi']と同じだから、そうなる

やりたいのは、こっちじゃないのか

gen2=(moji for words in data for moji in words)

995:デフォルトの名無しさん
17/05/13 02:04:05.41nrviLaTM.net
初心者が本を読んで、簡単にプログラミングできるようになることは、あり得ない

初心者には2種類あって、プログラミングの初心者と、
プログラミングは既に知っていて、その言語だけは知らないという人

各言語の入門書は、プログラミングの入門書ではない。
Python, Ruby, JS などのスクリプト言語を、既に知っていることが前提条件で、
その言語だけは知らないという人向け

言語の入門書が分からなければ、プログラミングの入門の入門のような、
プログラミングの入門書に戻る必要がある

996:デフォルトの名無しさん
17/05/13 06:25:49.10fKjxEgdl.net
人によって馴染める学習方法違うからな
私は先ず人のプログラムを読んで理解した
本に頼るなら実践とかタイトルついてるやつになるのかな

ただプログラムという道具は使えるようになるが
どんなプログラムを作ればいいかというのはまた別だ
要求されるのがどの範囲なのか

997:デフォルトの名無しさん
17/05/13 07:06:58.958952tOHM.net
>>968
ありがとう。

gen2=(moji for words in data for moji in words)
で、望む結果が得られるのは分かりますが、

gen = (moji for moji in (words for words in data))
で、望む結果が得られない理由が分からないのです。

処理の順番として、内側のジェネレータが処理され、その部分的な結果に対して外側のジェネレータで処理される"はず"、と思っているのですが。。
そもそもは、そうすることでメモリ効率が良さそう(より一度にメモリを載せる必要がなくなる)と思ったのです。

どこが考え違いをしているのでしょう?

998:デフォルトの名無しさん
17/05/13 07:12:13.04RjzTmCQE.net
>>968
> moji for words in data for moji in words
なんか普通の文章みたい w

999:デフォルトの名無しさん
17/05/13 07:49:58.08o+hva64L.net
だって高級言語だもん

1000:デフォルトの名無しさん
17/05/13 08:45:42.81nrviLaTM.net
内包表記は、Guido ですら、難しいと言ってる。
C/C++ のポインタみたいに、何か、人間の直感に、逆らう事をしているのだろう

だから、Rubyの方が、簡単と言われる

1001:デフォルトの名無しさん
17/05/13 09:06:28.71nrviLaTM.net
Rubyのブロックの形に直してみる

words for words in data

data.each { |words| p words }

moji for moji in words

data.each do |words|
words.each_char { |moji| p moji }
end

1002:デフォルトの名無しさん
17/05/13 09:11:52.24nrviLaTM.net
pythonの内包表記を少し詳しく
URLリンク(qiita.com)

ジェネレータ式とタプル内包表記

構文から勘違いしやすいですが、
()で囲んでも、タプル内包表記にならずにジェネレータ式になります

1003:デフォルトの名無しさん
17/05/13 09:21:25.935H1qnTU0.net
>>971
gen = [[moji for moji in words] for words in data]
では?

1004:デフォルトの名無しさん
17/05/13 09:48:53.86fKjxEgdl.net
>>974
lispっぽくて書きやすい

1005:デフォルトの名無しさん
17/05/13 11:58:22.491iFjjcJx.net
悪い事は言わんlispの事は忘れるんだ
奴はお前らに扱いきれるような代物じゃない

1006:デフォルトの名無しさん
17/05/13 12:26:59.03fKjxEgdl.net
関数 a(b, c) // sum(1,2)
オブジェクト指向 b.a(c) // 1.add(2)
二項演算子 b a c // 1 + 2
lisp (a b c) // (+ 1 2)

そんな違わなくない
一番シンプルでわかりやすいような

1007:デフォルトの名無しさん
17/05/13 12:39:33.28T7A75EKS.net
Lispは特にキチガイを引きつける印象がある
発達障害が電車のような秩序立った動きをするものにひきつけられるのと似ている

1008:デフォルトの名無しさん
17/05/13 14:24:05.11sx55BAwu.net
モジュール名の先頭にアンダースコアがついてるのって意味ありますか?

1009:デフォルトの名無しさん
17/05/13 14:43:44.37m48zL+ZP.net
>>982
PEP8によると
URLリンク(pep8-ja.readthedocs.io)
>C や C++ で書かれた Python の拡張モジュールに、高レベルの (例:オブジェクト指向的な)
>インターフェイスを提供する Python モジュールが付いている場合は C/C++ のモジュールはアンダースコアで始まります

らしいっすよ

1010:デフォルトの名無しさん
17/05/13 16:36:31.86hRHxdCtf.net
>>967
iterableの入れ子を平坦にしたいときはitertools.chain.from_iterableを使っときな
URLリンク(docs.python.jp)

1011:デフォルトの名無しさん
17/05/13 17:36:44.66PLp5Hu9G.net
>>971
外側のジェネレーターが何回ループするか考えるんだ。

内側のジェネレーターは単語を一つずつ生成する式と考えられ、外側のジェネレータはその単語を一つずつ処理する式だから、結局単語を文字として処理するループがいない。

ジェネレーターは入れ子にしなくとも、全体として遅延評価するから、ループ毎にジェネレーターを作らなければならないという考え方が誤ってる。

1012:デフォルトの名無しさん
17/05/13 17:37:52.47PLp5Hu9G.net
>>977
これは、リストのリストを生成してしまうから、違うね

1013:デフォルトの名無しさん
17/05/13 17:47:02.90PLp5Hu9G.net
>>971
あとpythonの内包表記は、一番最初にループの最も内側の要素を書くのに、それ以降は外側から順に書くから、字下げしないと非常に分かりにくい。
字下げすると、普通の多重ループと変わらないから逆に分かりやすくなるけど。

1014:デフォルトの名無しさん
17/05/13 19:58:36.148952tOHM.net
ジェネレータ入れ子の件

回答ありがとうございました。よく分かりました。スッキリです。

1015:デフォルトの名無しさん
17/05/13 20:17:28.09Lbdw/CyI.net
PTVSがやっとVS2017に組み込まれた

1016:865
17/05/13 21:34:01.84PMUdnM5S.net
>>989
お、それはめでたい。
小物はcodeで書くんだけどwxとかcvとか使い出すとインテリセンス欲しくなる。
codeも何となく出してくれるんだけど物足りない。

1017:デフォルトの名無しさん
17/05/13 21:41:11.24WSGfd40J.net
内包表記とか結局わかりにくいから使わんほうが良いよね

1018:デフォルトの名無しさん
17/05/13 21:46:52.91F7kBjgw1.net
二重ループとか初見殺し

1019:デフォルトの名無しさん
17/05/13 22:00:18.12nrviLaTM.net
>>991
内包表記は速いし、

遅延評価だから、2重ループの際、中間のリストを作らないから、
使用メモリが少ないのかな?

1020:デフォルトの名無しさん
17/05/13 22:17:33.69nqy4zZB5.net
内包表記わかりにくいってデバッグしにくいという意味か?
まさか読みにくいってことはないだろうし

1021:デフォルトの名無しさん
17/05/13 22:48:57.09O7RODXwf.net
次スレ立てたよ。

Pythonのお勉強 Part53 [無断転載禁止]©2ch.net
スレリンク(tech板)

1022:デフォルトの名無しさん
17/05/14 00:25:44.07ausMvItD.net
のりこめー

1023:デフォルトの名無しさん
17/05/14 08:55:08.15e/yCKCsM.net


1024:デフォルトの名無しさん
17/05/14 08:55:40.65e/yCKCsM.net
埋め

1025:デフォルトの名無しさん
17/05/14 08:55:56.37e/yCKCsM.net
埋め

1026:デフォルトの名無しさん
17/05/14 08:56:23.54e/yCKCsM.net
埋め

1027:デフォルトの名無しさん
17/05/14 08:56:39.51e/yCKCsM.net
埋め

1028:デフォルトの名無しさん
17/05/14 08:57:14.99e/yCKCsM.net
埋め

1029:1001
Over 1000Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 126日 21時間 16分 18秒

1030:1002
Over 1000Thread.net
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


──────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
──────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
URLリンク(premium.2ch.net)

▼ 浪人ログインはこちら ▼
URLリンク(login.2ch.net)

1031:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


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