Pythonのお勉強 Part52at TECH
Pythonのお勉強 Part52 - 暇つぶし2ch987:デフォルトの名無しさん
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