Pythonのお勉強 Part56

■ このスレッドは過去ログ倉庫に格納されています
2018/02/24(土) 09:07:21.39ID:5jzCjhzv
Pythonオフィシャルサイト
http://www.python.org/

■前スレ
Pythonのお勉強 Part55
https://mevius.5ch.net/test/read.cgi/tech/1513919747/
2018/05/28(月) 22:09:22.55ID:Vph8aQeu
>>732
好き
2018/05/28(月) 22:28:28.01ID:ARR44YcH
すごいね。
python大喜利で優勝ですよこれは
2018/05/28(月) 23:19:46.38ID:oVsvGxS4
好評過ぎワロタwwwww
736デフォルトの名無しさん
垢版 |
2018/05/29(火) 11:26:55.90ID:qXND5RN8
   , --―-- 、
   /`ヽ_o .o_/´ヽ.
  l  / `ー´ヽ.  .l   Python!
  |.  l三三三l  .|
  .|  l三三三l  |
   | .l三三三l .|
   .| l三三三l |
   l .l三三三l .|
2018/05/29(火) 12:23:02.84ID:9Db3sBfs
pythonのライブラリ作る奴って暇なの?
儲からないじゃん
738デフォルトの名無しさん
垢版 |
2018/05/29(火) 12:33:10.21ID:QKhV4oKb
金に困ってない→暇

あながち間違いではないな
739デフォルトの名無しさん
垢版 |
2018/05/29(火) 12:43:11.87ID:8c3smonY
画像検査ソフト作りたいんですが参考になるネット情報どこか知りませんか?
2018/05/29(火) 12:58:19.63ID:NyRfqLOC
いまやPythonはVB並に大素人時代だってのがよく分かる
2018/05/29(火) 14:01:50.50ID:jxoKSFXu
いまPythonには非プログラミング経験だが非プログラミング分野のエキスパートがたくさん来ているからな。
例えば、気象、金融、医学分野とかの専門家がPython活用して自分の専門分野に
活かそうと勉強しているし。

>>739
Python使いならクローラーで必要なネット情報を取得
これができないようなPython超初心者なのにpythonで画像検査ソフト作ろうなんてゆとりすぎだろ。
2018/05/29(火) 15:40:54.27ID:raEIkn2m
>>737
海外だとGitHubに公開すれば乞食マネー来るしそこそこ儲かるのでは
日本や中国韓国のオープンソースは無料という前提のもとに成り立ってるからプログラ厶そのものが金にならん
743デフォルトの名無しさん
垢版 |
2018/05/29(火) 15:50:53.88ID:lEVeFhcc
GitHub って donate 機能あったっけと思って調べた
https://blog.github.com/2008-05-05-getting-paid-the-open-source-way/
2018/05/29(火) 21:02:40.51ID:fu2kevXj
>>737
暇つぶしなにライブラリ作るとかお前には想像できないんだろうな
2018/05/29(火) 21:21:35.59ID:91tB9IsP
Djangoの新刊2冊がAmazonに登録されてた、6月と7月に発売予定

Django単体の書籍なんて約10年ぶりだよ、こんな時代が来るとは…
そのうちオライリーの訳本も出るのかな
2018/05/30(水) 09:52:50.82ID:rPEyTRjn
>>745
2018/6/9 PythonDjango超入門 掌田 津耶乃 (著) 480ページ
・著者は色んな分野の超入門本を出している自称テクニカルライター兼3流プログラマ
 なので技術的に不安、でもビジュアル重視の本らしいので分かりやすいかもね

2018/7/27 基礎から学ぶ Django 関根 裕紀 (著), 新井 正貴 (著) 304ページ
・著者はPythonコミュニティで活躍してる人達らしい、超入門より180ページ近く少ないのはなんだろね?
 共作なのも不安要素だね、片手間で書いてたら嫌だなー

総評、どっちも微妙!w
2018/05/30(水) 10:46:37.33ID:WwRQBCk3
どっちもディレクトリミスってデプロイで華麗にこける奴だろわかる
748デフォルトの名無しさん
垢版 |
2018/05/30(水) 12:26:03.95ID:cEiiDD/T
プログラミングのpython言語で質問です。
使用環境は以下です。
os:windows10
バージョン:python3.7、pip10.0.1
パッケージmatplotlibをpipでインストールしようとすると、以下のエラーでできません。

Command "python setup.py egg_info" failed with error code 1

そもそもpython3.7はmatplotlibをインストールできない仕様なのでしょうか?
numpyなどはインストールできました。
2018/05/30(水) 12:29:08.88ID:Yg9rHisc
怪しげな情報商材とあまり変わらん
2018/05/30(水) 12:31:42.12ID:Yg9rHisc
>>748
3.7はサポートしてるって書いてないからそうじゃないの
https://pypi.org/project/matplotlib/
2018/05/30(水) 12:35:14.42ID:Yg9rHisc
そもそも3.7ってまだベータだろ
再来週だっけ
752デフォルトの名無しさん
垢版 |
2018/05/30(水) 12:38:15.00ID:cEiiDD/T
みなさんのpythonバージョンはいくつですか??
やっぱり3.6が良いのでしょうか?
2018/05/30(水) 12:44:10.81ID:7cKgIkbU
3.6.5使っとけ
2018/05/30(水) 13:33:37.32ID:NWMaF7Hc
でも、3.7のが新しくてより良いわけですよね?
2018/05/30(水) 14:18:17.96ID:TaT8HWsG
>>754
うん。だから、楽々pipではなく自分で3.7用のmatplotlibを作成
ゆとりにはハードル高すぎて無理だろうが、これぐらいはできるようになってないとな
756デフォルトの名無しさん
垢版 |
2018/05/30(水) 14:24:15.81ID:240M2quP
4にしろ
2018/05/30(水) 14:29:14.52ID:7cKgIkbU
anacondaでいいだろ
758デフォルトの名無しさん
垢版 |
2018/05/30(水) 17:03:11.50ID:vKxqoxQL
   , --―-- 、
   /`ヽ_o .o_/´ヽ.
  l  / `ー´ヽ.  .l   MIWA!
  |.  l三三三l  .|
  .|  l三三三l  |
   | .l三三三l .|
   .| l三三三l |
   l .l三三三l .|
759デフォルトの名無しさん
垢版 |
2018/05/30(水) 19:43:17.76ID:3GEMIj5b
python3.6でインストールしたところ問題なくライブラリをダウンロードできました。
必要になりそうなライブラリがあれば教えてください。
今のところこんな感じです。

cycler 0.10.0
kiwisolver 1.0.1
matplotlib 2.2.2
numpy 1.14.3
pip 10.0.1
pyparsing 2.2.0
python-dateutil 2.7.3
pytz 2018.4
scipy 1.1.0
setuptools 39.0.1
six 1.11.0
760デフォルトの名無しさん
垢版 |
2018/05/30(水) 19:46:41.73ID:7xrU2j5P
sympy
pandas
2018/05/30(水) 19:52:24.48ID:zSYAOh3E
心配パンダすw
762デフォルトの名無しさん
垢版 |
2018/05/30(水) 20:34:32.00ID:3GEMIj5b
>>760
ありがとうございます。


クローラってやつをやってみたんですが、windows10 64bitだとscrapyインストール
できないですね・・・できてる方いますか?
2018/05/30(水) 21:06:18.89ID:D25DzXgp
>>762
anaconda。ドキュメントでwindowsはanaconda 推奨になってるでしょ
2018/05/30(水) 21:14:07.60ID:I52f8Ayw
ドキュメントなんか読んでるわけないだろ
分かってて言うなし
2018/05/30(水) 21:26:06.54ID:zSYAOh3E
ドキュメント読まないのって何でだろ?
もしかして英語だからとかなのかな?
766デフォルトの名無しさん
垢版 |
2018/05/30(水) 22:07:16.12ID:3GEMIj5b
windows10 python3.6でscrapyインストールできました!
クローリングとスクレイピング覚えます。
2018/05/30(水) 22:08:13.78ID:rl9KN9pY
canopyとかpythonxyとかなんかそんな感じの名前のディストリビューションもあったと思うけど、もうアナコンダに食われてしまったのか?
2018/05/30(水) 23:06:47.08ID:CwK1DsRP
おちんぽっぽ うぽぉおおおおおwwwww

 (^q^)「あうあうあー」


ここ一ヶ月 記憶が無いと思ったら2chへの記録が無かったww
2018/05/31(木) 01:46:50.42ID:Pv/hik2G
>>764
超初心者がドキュメントを読むわけないよな
Pythonの本すら読まないんだから。
そんなもんだから入門本に普通に書いていることを教えてクレクレと質問して
あきれられるのがこのスレのメイン連中(超底辺)。
非底辺連中はあきれてスレを去っていいくよな
2018/05/31(木) 07:51:50.21ID:/rRBzQfy
プログラムは書いてナンボだろ
お勉強()なんてやらんわ
グーグル先生に聞いたらいくらでも出てくるのに
2018/05/31(木) 07:56:25.46ID:0aSGKYH8
グーグル先生に聞いたらへっぽこの根拠もないギータ記事しか出てこないじゃん!
2018/05/31(木) 08:36:18.84ID:mCsd79Zm
ゴミの名前を出すな
2018/05/31(木) 08:43:58.46ID:mCsd79Zm
>>769
ウジ虫が一丁前に人様に話しかけるな
2018/06/01(金) 08:44:58.76ID:gWQJlore
pythonを扱えるエンジニアが市場では少ないですか?
フリーランスとしてどれくらい稼げますか?
2018/06/01(金) 09:28:03.20ID:Lg9QUlsP
Pythonはデータ分析とかサーバーレスとか他のスキルの付属品
言語だけできても仕事はない
2018/06/01(金) 10:23:23.41ID:qAVu0jsM
日本だけ見てるならないよ
2018/06/01(金) 11:27:46.48ID:QTHA7dYZ
AI作ればいいんじゃべね?
てきとー
2018/06/01(金) 11:41:30.78ID:czZmZo8z
>>774
あまり稼げないな
てかプログラマは金にならん
プログラムで稼ぎたかったら海外に行け
近場ならオーストラリアでプログラマでも800万以上稼げるぞ
2018/06/01(金) 12:05:57.77ID:S/l41v92
でも海外でのプログラマとしてやってくのはやっぱかなりのスキルが必要だよな、あっちじゃ即戦力じゃないと採用されなさそう。そこまでの自信はないなあ
2018/06/01(金) 12:31:16.53ID:yAYIxrCg
>>775
日本では、言語は何とかできるが、機械学習とかの他のスキルがない奴は
エンジニアと言う職種ではなく土方と言う底辺職種になるからね
当然、土方は給料安い

>>779
会社で働きながら(給料もらって)先輩から手取り足取りスキルを教えてもらうようなゆとり教育はないだろう
新人でも給料分はしっかり働けだろうな
781デフォルトの名無しさん
垢版 |
2018/06/01(金) 18:23:44.00ID:Wbxpqrec
>>779
英語も含めてな
2018/06/01(金) 18:58:04.73ID:+SmE1ReQ
現時点でAIデータサイエンティストとして院卒レベルの人材じゃないとノーチャンだよな
冷静に考えて足りないのは、機械学習の上辺を理解してる営業だけ
技術職のキャパはすでに上限ギリギリいっぱいな気がするわ
英語がネイティブレベルならまだ話は別かもだが

自分で事業起こすにしても
凄まじい計算資源がないとまともな事業展開は無理だから、超大手の研究や投資に依存せざるを得ない
量子コンピュータの機械学習への組み込みに成功したらなおさらそれが加速する
割と今ってディストピアまっしぐらじゃね?
783デフォルトの名無しさん
垢版 |
2018/06/01(金) 19:07:52.28ID:Wbxpqrec
まるちんこ
2018/06/02(土) 21:40:26.28ID:MGrdFwMf
JSONの取得について質問です。

#encoding:utf-8
import json, urllib.request, urllib.error, urllib.parse, sys

try: citycode = sys.argv[1]
except: citycode = '400040'
resp = urllib.request.urlopen('http://weather.livedoor.com/forecast/webservice/json/v1?city=%s'%citycode).read()

resp = json.loads(resp)
print(resp['title'])
print('')

for forecast in resp['forecasts']:
print(forecast['dateLabel'] + ' ('+forecast['date']+')')
print('天気:', forecast['telop'])
print('最高気温:', forecast['temperature']['max'])
print('最低気温:', forecast['temperature']['min'])
print('')

ライブドアの天気を取得するスクリプトです。
気温は以下のようにやりたいんですが、気温のデータがない場合(noneとなっている)、max(min)の下のcelsiusもないので、エラーになってしまいます。
その場合は、どのように書くといいんでしょうか?

print('最高気温:', forecast['temperature']['max']['celsius'])
print('最低気温:', forecast['temperature']['min']['celsius'])
2018/06/02(土) 23:02:42.59ID:1NoTrVsp
自己解決しました

forの中にif で !=とやれば出来ました
2018/06/03(日) 17:23:39.37ID:StPqrojA
['celsius'] → .get('celsius')
なら、例外を返さないよ。
2018/06/03(日) 19:25:15.92ID:DFly98Lo
forecast.get(‘temperature’,{}).get(‘max’,{}).get(‘celsius’)
2018/06/03(日) 22:37:38.40ID:1q5Ocsij
>>786
>>787
どうもありがとうございます!
試してみているんですが、エラーが出てうまく動かないです
2018/06/03(日) 23:18:38.66ID:sxlJcq13
(forecast['temperature']['max'] or {}).get('celsius')
790デフォルトの名無しさん
垢版 |
2018/06/04(月) 01:22:02.49ID:kbH5Vpqw
try: で例外補足して捨てろ
2018/06/04(月) 01:38:40.31ID:2VRW2157
そんな大げさなぁ
正解出てるんだからそれでいいじゃん
792デフォルトの名無しさん
垢版 |
2018/06/04(月) 11:17:53.61ID:u6vqWCTI
>>784
参照したい項目が必ず存在するように、データの方を整理する
https://ideone.com/1Jasqb
793デフォルトの名無しさん
垢版 |
2018/06/04(月) 12:45:18.03ID:FOPJqJUz
この辺Nullableがない言語はつらいねぇ。
2018/06/04(月) 16:06:35.84ID:aK73DBqi
>>784
そもそも、urllib.request って、その書式のままじゃ動かないんじゃないのかな?

>>792
基本的(講学的)にはそうなんだけど、
>>789 以上に複雑なことをする必要もないと個人的には思うんだよね。
2018/06/05(火) 19:44:01.68ID:YRBptDzO
>>789
>>790
>>792
どうもありがとうございます。
getとtryとdef〜について勉強してみます。

今は以下のスクショのように日付や時刻の勉強しているんですが、fmt1のフォーマットだと、
It's 2018-06-05 19:07:34
-----
と、表示されるんですが、fmt2だと何も表示されません。
日本語の文字を表示させるには特別な手順が必要なんでしょうか?

https://i.imgur.com/dOy4ycM.png
2018/06/05(火) 22:43:13.74ID:2hesoCMd
range関数で特定回情報引っ張りたいんですけど
for i in range(j(10)):
じゃダメなの?
2018/06/05(火) 23:07:43.62ID:4Q7TkxG/
何言ってんのお前
2018/06/05(火) 23:10:43.97ID:BtMMCZLy
>>796
まずそのj(10)が何なのか説明してくれ
rangeの引数には決まったフォーマットの整数が必要だ
2018/06/06(水) 08:18:12.31ID:KWo7wxdh
japanのjですけど?わかんないですか?
2018/06/06(水) 08:33:32.88ID:1A1zAmiY
ちなみに特定回っていうのはイニング、つまり次の打者が誰かってことなんで、後はよろしく
2018/06/06(水) 08:53:23.14ID:2SAozy+o
おっけーしばらく待ってて
結果は郵送する
2018/06/06(水) 19:05:26.60ID:NnT9Azwi
プログラミング言語の勉強の前に人の言語の勉強が必要
803デフォルトの名無しさん
垢版 |
2018/06/06(水) 22:05:03.82ID:bzwOpeNt
誰が一体正しいことを言ってるんだ〜
教えてくれ〜
2018/06/07(木) 15:42:50.86ID:xzImELPT
obj = [1,2,3,4,5,6,7]
dels = [2,4,6]
から
obj = [1,3,5,7]
という感じにしたい

リストも消したいものリストも取りうる値はすべて把握できる。各リスト内で要素の重複なし
いつもforループでremoveしてるんですが、まとめてやる方法はありませんか
2018/06/07(木) 15:53:35.50ID:GDSZPTst
set(dels).symmetric_difference(obj)
806デフォルトの名無しさん
垢版 |
2018/06/07(木) 23:35:55.51ID:fBRjCnD9
>>804
list(set(obj)-set(dels))
2018/06/08(金) 08:58:03.68ID:s80Aj9T2
>>805-806
ありがとうございました
助かりました
2018/06/08(金) 18:08:38.06ID:SF+NOFIK
>>805,806
set経由すると順番変わっちゃうよね。
それに805はdelsにあってobjに出てこない要素があったらまずいと思う

forは使うけど内包表記でこう書くしかないんじゃないかな
[x for x in obj if x not in dels]
2018/06/08(金) 22:09:15.92ID:VohWRUJl
あーなるほど
これはいいですね
2018/06/09(土) 00:10:36.97ID:Ns8l28oa
>808
obj dels の要素数をN Mとして、計算量が、O(NM)になるよ。
N M が小さいうちはいいけど、大きくなると相当に遅いのでは。

obj dels がソート済みなら、尺取り法で、O(N+M)にできるよ。
毎回ソートする場合でも、O(N log N + M log M)に収まるよ。

N M が小さい(64以下とか)なら、要素の有無をビット列のフラグで表して、
obj -= obj & dels
とすれば、速くなるよ。
2018/06/09(土) 00:35:17.29ID:oJ9F8PWs
>>810
算数で挫折した俺には何言ってんだか分かんない
2018/06/09(土) 00:45:21.09ID:csk1Wy/Y
>>810
処理する前にdelsをsetにしとけば、mが大きすぎなければ多分ハッシュ使ってるのでO(n)になるんじゃないかな。
ヒープみたいなのでもO(n log m)でしょ。
2018/06/09(土) 06:33:47.80ID:8NVi+1MP
>>812
自分もこのやり方がいいと思った
2018/06/09(土) 09:35:49.42ID:qDhDJ/HV
>812
そうだね。
こっちの方がいいね!
2018/06/09(土) 09:40:20.05ID:w8AtL8ww
>>812
全然わからないけど説得力があるから一票
このスレ勉強になるわ
2018/06/09(土) 09:44:21.08ID:OQQgQKSz
スクリプトは基本的にゲロ遅いから、アルゴリズムの計算量的には非効率でも
現実には実行されるPythonのインストラクション数が少ない方が速いケースが多いよ
2018/06/09(土) 09:51:35.27ID:eGSjtA/z
尺取り法でどうやるんだろ
俺もforループか内包くらいしかわからん…
配列の順番変わっていいならsetするけど
2018/06/09(土) 10:33:06.91ID:WtghSZSO
>817
尺取り法での実装はこんな感じだと思うよ。
obj を idx1 で走査して、
dels を idx2 で走査する。
更新結果はobjnew(最初は空)に保持する。

obj[idx1] < dels[idx2] なら、objnew にobj[idx1]を追加し、idx1を一つ増やす

obj[idx1] == dels[idx2] なら、idx1とidx2をそれぞれ一つ増やす

obj[idx1] > dels[idx2] なら、idx2を一つ増やす

これが、obj, dels のどちらかの要素が尽きたら終わり

上の説明とはちょっと違うけど、コードにすると以下のような感じ。
質問者の希望としては、ループを回さず手短に書きたいってことだろうから、期待には沿えてないかな。

CENTINEL = float("inf")
dels.append(CENTINEL)
objnew = []
i = 0
for x in obj:
__while x > dels[i]: i += 1
__if x < dels[i]:
____objnew.append(x)
2018/06/09(土) 10:35:52.27ID:hMCeqk2j
範囲がないのに尺取り法と呼ぶのか?
マッチングとか突合せとか呼ばれる、COBOLなんかでよく使われる伝統的な方法だよねそれ
O(N+M)ある程度の要素数がないとPythonインタプリタのゲロ遅さがネックになるから実際にはあまり速くないと思う
2018/06/09(土) 11:20:53.41ID:r/WMfZjs
>819
ご指摘ありがとう。
ポインタ2つ使ってリストをO(N+M)で走査する手法を、尺取り法というのだと思ってた。
尺取り法でググったところ、1つのリストの始点と終点にポインタを置いて、範囲に関する数え上げや最小区間などを求める使い方が多いんだね。
蟻本だと、区間の先頭と末尾を交互に進めながら条件を満たす最小の区間を求める手法、と説明されてた。


Pythonだと、とてつもなく遅くなるのは同意。
2018/06/09(土) 14:42:42.73ID:XNcZfz05
sqlalchemyってDISTINCTできませんか?
2018/06/09(土) 15:32:48.69ID:a58WBe6r
できるんじゃね
https://stackoverflow.com/questions/17223174/returning-distinct-rows-in-sqlalchemy-with-sqlite
2018/06/09(土) 16:35:43.13ID:XNcZfz05
>>822

session.query(Tag).distinct(Tag.name)

はダメで

session.query(Tag.name).distinct()

なのかなるほどね
2018/06/10(日) 08:03:22.50ID:eKIytbed
外部コマンドを実行する場合、commands.getoutputとsubprocess.callとどっちがよいの?
2018/06/10(日) 08:06:40.10ID:eKIytbed
自己レス
osやcommandsは古いから非推奨なのか
環境変数を取得するのにos.getenvを使ってるんだけど、他の方法に置き換えた方がよいの?
2018/06/10(日) 22:21:13.16ID:dbzNV0oX
そうね
2018/06/11(月) 13:01:13.27ID:K1UP5N/E
三項演算子って何だ、まったく知らんぞい!
なんかメリットとか有るのかな
828デフォルトの名無しさん
垢版 |
2018/06/11(月) 13:09:36.63ID:tK3aH3wF
●一行で書ける
●文ではなく式として扱える
2018/06/11(月) 13:24:27.07ID:1B6gzu8+
pythonの三項演算式ってリスト内包に通ずるものがあるよな。
ある種の一貫性があるような無いような。
830デフォルトの名無しさん
垢版 |
2018/06/11(月) 13:26:51.12ID:urgYl6nk
三項演算子のネストをしたときに
いつも優先順位が不安になる
2018/06/11(月) 13:47:22.28ID:CFwM+3k+
1 if A else 2 if B else 3

最初に評価されるのがAかBかってことだな。
Aっぽい気がするし試したら実際そうだったけど不安にはなるな。
832デフォルトの名無しさん
垢版 |
2018/06/11(月) 14:15:29.47ID:/EsUeVn+
switch文はいらんけど、switch式は欲しいな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。