Pythonのお勉強 Part53 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/05/13(土) 22:48:04.14ID:O7RODXwf
Pythonオフィシャルサイト
http://www.python.org/

まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&;TYPE=TITLE&STR=python
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/

日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1

PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む

■前スレ
Pythonのお勉強 Part52
http://echo.2ch.net/test/read.cgi/tech/1483756857/
2017/07/21(金) 22:05:23.86ID:dtKpnH3U
最近のdictは順序を保存するようになったのだっけか。
辞書や集合は、順序を保存しないから、2つに分けたあとのは、辞書じゃなくて、リストかタプルにするのが良いと思う。
2017/07/21(金) 22:06:12.60ID:dtKpnH3U
あと、キーを重複して登録するのもできないんじゃなかったかな。
2017/07/21(金) 22:18:41.67ID:fgMeqMsm
横からだけどタプルって変更不可能なリストってだけなのかな?
イマイチ使いみちが分からない
2017/07/21(金) 22:20:07.17ID:uhbq8RLc
>>574
ありがとうございます
順序が変わるのは困るのでリストかダブルにしてみようかと思います
キーの重複は試してみたらエラーなくできました
2017/07/21(金) 22:31:13.53ID:dtKpnH3U
>576
タプルは変更したくないものを入れておくのに使えるよ。

たとえば、リストは辞書のキーにできないけど、タプルな、辞書のキーにできる。
2017/07/21(金) 22:43:09.11ID:dtKpnH3U
辞書でキーが重複してると、エラーはでないけど、最後に登録した時の値しか残らないみたいだよ。

http://ideone.com/SRSe97
2017/07/21(金) 22:46:04.66ID:VRGA9Dz3
多値返却する関数が必要なときとか
2017/07/21(金) 23:00:51.39ID:vk0S3clC
>>573
アナタ ソノジショ オカシイ
ヤリタイコト コウジャナイ?
dic={'商品名A':{'price':554, 'count':3}, '商品名B':{'price':750, 'count':8}}

priceノ ゴウケイ コウジャナイ?
sum([dic[k]['price'] for k in dic])

コンゲツ ツカッタ オカネ ケイサン スル ミタイナ
2017/07/21(金) 23:01:59.53ID:T64/yPMc
C#がタプル今更出来るようになったが超便利だ
今まで参照渡しで頑張ってたから
2017/07/21(金) 23:03:59.74ID:vk0S3clC
アイヤー ゴウケイキンガク マチガエタ アルネ
sum([dic[k]['price']*dic[k]['count'] for k in dic])
2017/07/21(金) 23:17:36.91ID:dtKpnH3U
>583
dic[k]じゃなくて k では。
2017/07/22(土) 00:04:51.69ID:pvKRJKTU
>>579
そうだったんですね。勉強になりました

>>581
すみません省いてました
json.load後の辞書データなんですが、元々はこんな感じです
dic = { '商品名A': [ { 'price': 554, 'count': 3}, {'price': 750,'count': 8}], '商品名B': [{'price': 1200, 'count': 10}, {'price': 1500,'count': 7}] }
実際はpriceとcountのセットが数十個あります

ここから商品ごとに分けてから最初のレスで書いたことをしたかったんですが

A = dic['商品名A']
B = dic['商品名B']

とやってからどうすればいいかわからなくなりました
2017/07/22(土) 00:46:11.59ID:fJRG67nz
書いてみた。
気の利いた書き方ではなくて、ベタな書き方だけど。
http://ideone.com/hLhHhK
2017/07/22(土) 05:58:14.49ID:8Krz/4V2
>>585
結局どう言うことをしたいんだろう...
price と count ってセットで持ってた方が安全だし分かりやすいとおもうけど...
2017/07/22(土) 08:51:31.00ID:uR/Z9t53
そこらへんごちゃごちゃしてきたら、さっさとクラスにした方が分かりやすかったりする
2017/07/22(土) 09:15:54.65ID:pC9M9lJW
>>585
ふむふむ、なるほどなるほど・・json? あれ?配列に辞書沢山ぶっこむのどこかで見たことあるぞォ?
キミ! >>501やないかぁーーい!!

>>> dic = { '商品名A': [ { 'price': 554, 'count': 3}, {'price': 750,'count': 8}], '商品名B': [{'price': 1200, 'count': 10}, {'price': 1500,'count': 7}] }
>>> price_data, count_data = zip(*[(i['price'], i['count']) for i in dic['商品名A']])
>>> price_data
(554, 750)
>>> count_data
(3, 8)
>>>
2017/07/22(土) 10:09:03.42ID:pvKRJKTU
>>587
このデータは1日分で毎日DBに入れていく感じなんですが
入れるテーブルがprice、count別々になってしまってるんです・・・

>>586
これがやりたかったんです!
ありがとうございます!

>>589
ありがとうございます!
zip関数は使うことないだろうと思って完全に忘れてました
こういう場合便利なんですね勉強になります
あと501は別の人です・・・
591デフォルトの名無しさん
垢版 |
2017/07/23(日) 12:29:59.34ID:rZ8AXohl
>>556
>>> def trans(w):
l = len(w)
if w[0] == 'a' and w[l-1] == 'c': return 'a' + w[1:l-1].upper() + 'c'
return w

>>> text = 'hoge abc amnc axyzc fuga abstract auuc aaac'
>>> ' '.join(map(trans, text.split(' ')))
'hoge aBc aMNc aXYZc fuga abstract aUUc aAAc'
2017/07/23(日) 13:16:23.35ID:YFCxcaSM
pyてょんの無理矢理なメソッドチェンと糞みたいなラムダ大嫌い
可読性落ちるやろ
ラムダ使わせたくなくてこんなカスみたいな文法にしてるなら
さっさとデプリケトするか削除してほしいよな
2017/07/23(日) 13:38:25.23ID:QcJiE5IU
メソッドチェインはさせる気ないだろなあ
ラムダは引数の渡し方の微妙なところをサポートする最低限の補助って感じがする
ないと困るからあるけど、あんまり多用はさせたくないという気持ちを感じる
2017/07/23(日) 14:46:15.39ID:V52hpleD
>>592
ラムダ式は馬鹿には理解できないからお前には大変だよな。
2017/07/23(日) 15:04:24.03ID:YFCxcaSM
>>594
は?
Java, JavaScriptでラムダ式バリバリ使ってますが何か?
おまんみたいなガイジとはちゃうで、いっしょにするなやw
2017/07/23(日) 16:19:09.96ID:7bD+iXj9
そうそう。ラムダ式は馬鹿が使うもの。
2017/07/23(日) 16:22:51.13ID:V52hpleD
>>595
日本語でおk
2017/07/23(日) 16:34:15.31ID:7bD+iXj9
そうそう。日本語は馬鹿には理解できないからお前には大変だよな。
2017/07/23(日) 16:41:59.55ID:mUZJPi4Q
馬鹿とかいうのやめようよ。
ラムダ式はパイソニックじゃないというだけのことだ。
2017/07/23(日) 17:18:49.67ID:YFCxcaSM
>>599
ほんこれ


>>594馬鹿には理解できないからお前には大変だよな。
2017/07/23(日) 17:46:11.23ID:0CXVLfpO
Java厨が荒らしにきたぞー、Javaだけに邪魔
2017/07/23(日) 17:57:39.88ID:7bD+iXj9
関東の文化なのかもしれないけど、ダジャレって何が面白いのかさっぱり分らないわ〜
603デフォルトの名無しさん
垢版 |
2017/07/23(日) 18:03:31.28ID:7bD+iXj9
時々、ラムダ式使えるだけでドヤ顔の奴がいるけど、vi厨みたいだよな。
やってるレベルはメモ帳と変わらないのにw
2017/07/23(日) 18:11:15.03ID:fNGuiY3b
すまんvi使えない雑魚おる?
2017/07/23(日) 18:16:15.53ID:0CXVLfpO
>>603
それはしょうがないよ、ラムダ式使うとめっちゃ気持ちええもん
関数化するまでもない関数の名前を考える労力やら行数やらがラムダで一気に解決するんやで
気持ちええやろ?ドヤ顔にもなるわ
2017/07/23(日) 18:23:53.04ID:V52hpleD
>>600
他人の意見にただ乗りするなってw Pythonの綴りもまともにかけないくせにな。静かに帰れよ。
607デフォルトの名無しさん
垢版 |
2017/07/23(日) 18:44:08.18ID:izG3yijY
λ = lambda
map(λ x: str(x), [0,1,2])
2017/07/23(日) 21:42:36.52ID:l/TRgh0y
すまん、俺Emacsしか使えんわ・・・
2017/07/23(日) 22:05:04.77ID:YFCxcaSM
>>606
俺様みたいな高価値なエンジニアが
オマエみたいなチンカス底辺土方PGに
わざわざ事細かに、それも無料で説明してやるわけねえだろ
常識的に考えて

ポインタまで指し示してやったんだから、ありがたいと涙を流すならまだしも
草生やしてこの態度

君、才能ないよ
2017/07/23(日) 22:12:33.58ID:fNGuiY3b
匿名掲示板で高価値なエンジニアを名乗るからにはせめてどこの会社かくらいは明かしてもらわないとな
そういう書きっぷりだとIBM基礎研とかを想定してしまう
2017/07/23(日) 22:38:59.72ID:V52hpleD
>>609
匿名掲示板で高価値エンジニアを自称か。頭も弱いんだなお前。
証拠は?提示無しで自称?自称で自己の発言を裏付けできるとでも思ったの?
ラムダ式の件でちょっと否定されたからって虚言、虚勢まではらんでええよ。
2017/07/23(日) 22:48:56.05ID:QicPazZW
教授「来年の春から人工知能を使いたい」
ワイ「いいっすねぇ」
教授「君、作れるように勉強しといて」
ワイ「え…」

Cの自作関数までしか知らんのだが、作れるようになるだろうか?
ちな、パイソンが人工知能につかわれてるってのは調べた
613デフォルトの名無しさん
垢版 |
2017/07/23(日) 22:53:32.91ID:qzsJDNze
>>612
古い本でC言語でAI作るって感じのタイトルあったなぁ。。。
さすがにワトソンレベルじゃにだろうけど。
2017/07/23(日) 23:00:14.56ID:QicPazZW
作るのはパイソンやで
書き方悪かった、すまん
615デフォルトの名無しさん
垢版 |
2017/07/23(日) 23:03:17.54ID:7bD+iXj9
教授はおまえに丸投げしておまえは2chに丸投げかよ。無能の集まりだな、日本は。
2017/07/23(日) 23:05:46.74ID:QicPazZW
ぼちぼちやってるが、できる気がしない
2017/07/23(日) 23:06:39.31ID:Nf2zKjwQ
>>608
今時.emacs書くのはpicoか
2017/07/23(日) 23:09:30.17ID:BkPeiFbh
手書きで論文書いて
人工知能で電子テキストに直す感じなら書けそうだ
研究活動に役に立つし
2017/07/23(日) 23:10:51.68ID:V52hpleD
>>616
便利ツールは一杯あるから、誰かのブログでも見るとよか
2017/07/23(日) 23:12:40.81ID:7bD+iXj9
そして、ネラーはブログに丸投げかよ。日本は一体どうなってるんだ。
2017/07/23(日) 23:19:37.69ID:Nf2zKjwQ
AIなんてこれがAIですと言っちゃえば出来上がり
2017/07/23(日) 23:20:58.24ID:8fa7AmdR
print ('40代1人暮らしが日本を滅ぼす')
2017/07/23(日) 23:26:38.63ID:7bD+iXj9
if文だらけの処理でも一般人にこれはAIだと言えばたいてい納得するだろう。
人間の思考なんてそもそもそんなレベルが大半なのだから。
2017/07/23(日) 23:28:27.98ID:BkPeiFbh
de:code2017でFF15のAI説明があったけど
ゲーム内の天候を決めるAIとか恥ずかしげもなく言ってたからな
2017/07/23(日) 23:34:55.55ID:V52hpleD
>>623
機械学習スレじゃないからここは。自覚ないだろうけどお前筋違い。
2017/07/23(日) 23:38:17.10ID:fNGuiY3b
Python使いは例外なくKerasのチュートリアルを経験している(べきな)のでセーフ
2017/07/23(日) 23:41:28.90ID:7bD+iXj9
>>625
いきなりなんだね。おれは一言も機械学習について話をしていない。キミは認知症じゃないかな。
認知症は自分が認知症だと自覚しないらしいからね。日本語も不自由してるようだし
2017/07/23(日) 23:46:11.96ID:V52hpleD
>>627
わかる。認知症かもしれん。すまんな。
2017/07/23(日) 23:59:46.66ID:YFCxcaSM
>>628
かわいそうに
2017/07/24(月) 00:14:39.38ID:TYPIIYH3
>>629
ありがとう(´;ω;`)
2017/07/24(月) 08:56:06.10ID:V1tSPsJU
人工無脳でええやん
2017/07/24(月) 09:29:56.11ID:v10ijKzN
AIを作るのは大変だろうけど、AIを使うだけなら簡単じゃん
チュートリアルやれば分かるっしょ

大変なのは機械学習を適用できる課題を見つけること
そして学習データの作成、問題と正解の組データを大量に作るのが大変
泥臭い単純作業の連続、そしてデータ量に従い必要とされる高スペックマシン
2017/07/24(月) 09:37:56.11ID:yBhCO73J
>>622
"自動車を買えば少子化問題は解決\n" >> stdout
2017/07/24(月) 11:50:22.91ID:QKmPFSOT
みんながんばれ
ガンガンいこうぜ
じゅもんせつやく
じゅもんつかうな
いのちをだいじに
いろいろやろうぜ
2017/07/24(月) 19:15:40.14ID:OUv6HBfP
>>634
ワトソンとかにドラクエやらせたらどこまで行くんだろ
2017/07/24(月) 19:44:55.76ID:WgOpWAzr
勉強すのるのにオススメなサイトと本を教えて下さい
2017/07/24(月) 20:48:30.25ID:wNRRvEva
https://docs.python.jp/3/
2017/07/24(月) 21:58:49.42ID:mIkz9O7d
for 0<mp:
call("ザラキ")
2017/07/25(火) 07:20:43.12ID:W0tEdzRz
えらく伸びてると思ったら変なやつがわいてるな。
2017/07/25(火) 08:06:58.89ID:gfZtnHNX
>>636
他の言語の経験は?初学?
2017/07/25(火) 09:00:58.08ID:vNmkdD4S
多少英語に自信があるなら
youtubeの外国人がやってる動画講座が良いんだけどな
動画だと少しずつ一緒にコードを書いていくからしょうもないミスに気づきやすいし


日本語だとあんまりいい動画がない 古かったり単純にイマイチだったり
2017/07/25(火) 14:14:42.91ID:2m7wTARV
>>581
ロングですまないが、その設計見てたらSQL書きたくなる中身だなw
2017/07/25(火) 21:46:29.36ID:fbDsXXAe
>>610
IBM基礎研を知らんが、レスが無くなったから、どうやらそれ程では無かったらしいな。
2017/07/25(火) 22:03:35.71ID:WM2az/6h
>>643
IBM基礎研は知っていてもいいところだよ。まああいつは嘘だったんだろうな。
2017/07/26(水) 02:42:46.25ID:zYo7MlcH
>>636
チュートリアルの日本語訳一通り読んだらだいたいわかるけどな。
2017/07/26(水) 08:05:25.39ID:Q0XaaVuf
>>645
本気か?お前天才かなにかだろ。
2017/07/26(水) 08:06:36.15ID:ZdFVUMtA
俺もチュートリアル日本語訳でやったな
いけたけど最速ではなかったかも
2017/07/26(水) 08:23:05.56ID:byKyVLqN
特に勉強してないけど使える
2017/07/26(水) 12:47:43.24ID:qX+5jH/5
お前らすげえな
2017/07/26(水) 13:24:26.96ID:2cxa226W
>>640
学校で昔、C言語ちろっとやった。自作関数まで。あとVBAすこし
2017/07/26(水) 13:37:28.46ID:qX+5jH/5
>>650
だったら日本語チュートリアル読んでいけばよさそうだ。
2017/07/26(水) 18:23:54.57ID:DhhelEan
そういえば「Python 3 エンジニア認定基礎試験」っていうのがあるんだが
出題範囲が「Pythonチュートリアル 第3版」になってる
https://www.pythonic-exam.com/exam/basic
2017/07/26(水) 23:16:19.46ID:qiVkp3Fv
ゴミ屑みたいな試験だな
逆にこんなん持ってる奴落とすかもしれんレベルで
654デフォルトの名無しさん
垢版 |
2017/07/26(水) 23:41:02.42ID:l6Uil5J+
twitterでやたらPyQ推してくる信者うざい
90日で即戦力になれるなら他の企業の面接落ちたらPyQ運営会社が責任持って雇うべき
2017/07/27(木) 09:02:46.31ID:xjbINDR0
今更認定試験ww
そんなん提示してきたら落とすしかない。地雷だ。
2017/07/27(木) 09:04:03.85ID:AUocNlfk
seleniumでヤフートップページのヤフトピの見出しを取得するコードを書いてます。

『エンタメ』項目を取得したいのですが、
以下のコードだと、レンダリング前の『ニュース』項目しか取得できません。

ページのクリック操作後、レンダリングされたページはどう扱えばいいのでしょうか?

from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.yahoo.co.jp/')
element = driver.find_element_by_link_text("エンタメ")
element.click()
for headline in driver.find_elements_by_css_selector('#topicsfb > div.topicsindex > ul.emphasis > li > a'):
print(headline.text)
2017/07/27(木) 10:18:40.23ID:FeDFxsXm
>>652
EDやめて
2017/07/27(木) 10:20:45.43ID:FeDFxsXm
>>656
あっちで聴け
http://medaka.2ch.net/php/
2017/07/27(木) 11:46:28.49ID:cUfLT5uP
>>656
feedparserでRSSフィードを取得するほうが良かろうもん
2017/07/27(木) 12:15:40.57ID:xjbINDR0
まあクロール禁止だからなw
そのためのAPIなわけだし。
661デフォルトの名無しさん
垢版 |
2017/07/27(木) 12:22:43.59ID:g7TDYGfS
>>656
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 30)

↑これは最初だけ
↓これはgetの度に入れる
wait.until(EC.presence_of_all_elements_located)
2017/07/27(木) 13:36:14.44ID:DeIl3Fzc
>>656
素直に'https://news.yahoo.co.jp/hl?c=c_ent'にアクセスすれば良いと思いますっ!
ヤフトピと同じ内容でっす!
2017/07/27(木) 13:53:35.87ID:DeIl3Fzc
つまりヤフートップからエンタメのリンク先にアクセスして、『エンタメ』の項目を
取得すればいいかと・・
2017/07/27(木) 14:09:35.33ID:DeIl3Fzc
あっ、いや・・seleniumからアクセスするんじゃなくて・・その静的ページをですね・・
その・・ヤフートップからエンタメのリンク先は見えるわけじゃないですか!
レンダリング前の情報でエンタメのリンク先は見えるわけで、、その、リンク先をですね
アクセスしていけば、、その、、selenium使わなくても取得できるって思って、、その、あの・・
2017/07/27(木) 14:24:35.19ID:I9611UC0
スクレイピングでseleniumが必要になったことなんて
10年以上やってても両手の指より少ない
2017/07/27(木) 15:51:31.16ID:6cMM/X8b
10年前にseleniumはありません
667デフォルトの名無しさん
垢版 |
2017/07/27(木) 16:05:18.82ID:g7TDYGfS
scrapy 以外にcookieとか処理してくれるのってあるの?
2017/07/27(木) 16:17:17.36ID:mnn2pwA8
標準でcookieの処理もできないのはurllibくらいでしょ
2017/07/27(木) 17:03:59.58ID:jCS2CCab
15年前からPython一筋だが本職じゃないから不遇
2017/07/27(木) 18:09:19.53ID:jur1Zp0s
jsで動的ページはselenium必要じゃないかしら。
2017/07/27(木) 18:45:25.12ID:AUocNlfk
>>658-670 皆さんありがとうございます。

ご指摘通りヤフーなら静的ページ、APIやRSSなどから拾えるのですが、
本当の質問の狙いは、
タブ(リンク)をクリックするとページ内容が切り替わるような処理をしてる他サイトで
スクレイピングがしたいんです。

得意な方教え頂けたら幸いです。
2017/07/27(木) 19:02:47.72ID:AUocNlfk
なんか自己解決しました。
お世話になりました。
2017/07/27(木) 20:33:22.22ID:UckxgjK1
二度と戻ってくるなよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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