くだすれPython(超初心者用) その38

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2018/05/17(木) 11:09:14.54ID:WeqM6vIc
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。
騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。
次スレは >>985 辺りで

前スレ
くだすれPython(超初心者用) その37
http://mevius.5ch.net/test/read.cgi/tech/1521271945/
2018/07/04(水) 11:14:13.25ID:NOHgpGJH
>>479
そだな。ごめん。お目汚しをしてしまって忝ない。
2018/07/04(水) 12:22:02.07ID:4DkGM1mz
>>476
一つ言える事は俺たちがクソやからそうなるだけで
賢い人達のプログラムにはここまで多様性はない
2018/07/04(水) 13:23:29.16ID:xdX5HHps
python初心者です、環境について教えてください
VSCodeとPyCharmだとどちらがおすすめでしょうか?
また、Windowsで他におすすめありますか?
クレクレですみません
2018/07/04(水) 13:28:50.36ID:FWEPDL49
pythonオンリーならpycharm
2018/07/04(水) 13:46:15.41ID:sK+g9tr5
PyCharmは高価な有償製品なので無償で使える機能には制限がある
無料でプラグイン入れてカスタマイズしたいならVSCode
無料でWeb開発したいならVSCode
2018/07/04(水) 14:04:48.83ID:NOHgpGJH
>>482
Geany使ってたけどWinにもある? 最近VSCodeに乗り換えました。
手軽にカスタマイズするならSciteもいいかも(Geanyの前に使ってた)。

Atomも最近はやってるらしいけど、挫折しました、てへ。
486デフォルトの名無しさん
垢版 |
2018/07/04(水) 21:51:27.72ID:gFgZc5FG
U54
487デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:33:53.48ID:ng+0N/IT
すみません、pythonの並列化処理で教えていただければと
pythonを最近学び始め、joblibやmultiprocessing というモジュールをインポートすれば並列化できるというところまではわかりました。
ですが、1から100までのfor文を分割して、1~25,26~50,51~75,76~100のようなことを4つのコアそれぞれにやらせようとすると、どう対処したら良いのかわからないのですが、
こういう場合に良いやり方はあるのでしょうか?
2018/07/04(水) 22:47:14.54ID:fl3R7P9J
公式に有る標準のpythonで良いやろ。

マルチスレッド&マルチコアはGGったら出てくる。
ただ、実装は、どうなるか分からない。

import multiprocessing
from multiprocessing import Pipe
from multiprocessing import Lock
from multiprocessing import Manager
from multiprocessing import Process
from multiprocessing import Value, Array
from multiprocessing import Pool, TimeoutError

https://docs.python.jp/3/library/multiprocessing.html
2018/07/04(水) 23:07:07.97ID:fl3R7P9J
GPU不明

import os
import platform
import multiprocessing
l=platform.system()
r=multiprocessing.cpu_count()
lr=len(os.sched_getaffinity(0))
print(l,r,lr)
490デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:39:57.98ID:ng+0N/IT
>>488
>>489
ありがとうございます。
まだすぐには理解できませんが、
理解できるまで記述いただいた内容や公式リンクをよく勉強します。
2018/07/05(木) 00:09:26.59ID:T0L/NWDK
>>482
本格的とはいえないけど、
PyScripterはとにかく軽くていい。
エディター部分が少し弱い気もするけど、
一応IDEらしいことができるし、重宝してる。
2018/07/05(木) 00:29:08.60ID:bmLXPWlv
Pyscripterは何となく好きだね俺も
2018/07/05(木) 07:49:19.54ID:mzJZAR0W
>>482
皆さん沢山レスくださりありがとうございました
是非参考にさせていただきます
2018/07/05(木) 07:49:36.51ID:mzJZAR0W
すみません、482です、、
2018/07/05(木) 08:53:00.24ID:2ipvgkm7
>>487
makefile書いてmake -j4でいいよ
496デフォルトの名無しさん
垢版 |
2018/07/05(木) 11:42:30.52ID:IcGtf/nv
ageてみる
2018/07/06(金) 20:40:03.20ID:8M+Xsunh
>>> x = int(input("整数を入れてください;"))
整数を入れてください;44
>>> if x < 0:
x = 0
print("負数はゼロとする")
elif x ==0:

SyntaxError: inconsistent use of tabs and spaces in indentation

"オライリー Python チュートリアル第3版”本の通りにテストしようとすると、
途中でエラーが出てしまう。

実行環境は Windows10 x64, python は以前3.6でうまくいかないので、3.7しました。

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
2018/07/06(金) 22:37:56.41ID:sIOuXx+P
SyntaxError: inconsistent use of tabs and spaces in indentation

このエラーの通りだろ
インデントに タブ と スペース が混在している
2018/07/06(金) 22:45:14.64ID:djSUxyRU
>>497
インデントが矛盾してますってエラーなんだけど注意して見てみたら?
2018/07/07(土) 07:57:30.60ID:5M0gbfiH
elif の前のスペースが余計なんだろう
2018/07/07(土) 09:46:01.38ID:7kPpsH+C
前から思ってたけど、文頭の空白が削除されて2ちゃんはPython向けじゃないなぁと...。
専ブラなら大丈夫なんすか?
2018/07/07(土) 10:00:59.73ID:pa4NPo43
コードが崩れるからideoneとか投稿して貼れと>>1に書いてあったと思ったが
誰か消したのか
2018/07/07(土) 10:32:04.91ID:LxSGsocZ
>>502
コードが崩れるからとは書いてないけど
くだすれPython(超初心者用) その32
http://echo.2ch.net/test/read.cgi/tech/1486173667
までは
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
ttps://try.jupyter.org/
◆まとめwiki
ttp://python.rdy.jp/
って書いてあった
で、
くだすれPython(超初心者用) その33
http://echo.2ch.net/test/read.cgi/tech/1490424742/
で無くなってる(>> 2以降に移したのかも知らんが…)
とりあえず次スレ立てる人は復活してほしいな
2018/07/07(土) 19:52:21.38ID:MYwzU1cJ
まぁ、スペース4つを全角スペースに置換してここに貼ればいいだけなんだけどな。
2018/07/07(土) 19:55:22.68ID:MYwzU1cJ
ところで、

if hoge == 1: #数値

if hoge == '1' #数字
では、どちらが速いんだ?
2018/07/07(土) 21:12:18.72ID:cKmJS2is
後者は2文字分余計にパース時間がかかるし、文字列の最後まで比較が完了したかチェックが必要なので、理論的には前者が早いが、
ボトルネックを調べるまではそんなこと気にしても意味がない。
2018/07/07(土) 21:25:55.58ID:uPjfR+41
早まった最適化はなんちゃら
2018/07/07(土) 21:37:07.13ID:P+j3/coi
>>505
それぞれを1000万回繰り返すコードを書いて
開始時間と終了時間を測ればいいんじゃね
2018/07/08(日) 05:02:05.68ID:HGazO2t1
>>498,499ff,500

ありがとうございます。

pythionのIDELなのですが
設定でタブを2にしても4にしても、なぜか下の段の
インデントは8位になり、うまくいきません。
2018/07/08(日) 09:26:29.76ID:IpE2RaFM
>>509
IDLEはめんどうだから
anaconda入れてjupyter notebook
または
google colab使おう
2018/07/08(日) 10:09:18.79ID:s1BUSJNi
vim
2018/07/08(日) 10:51:27.91ID:HGazO2t1
>>510
環境作るのが大変かも。サンキュー
2018/07/08(日) 14:58:29.46ID:hvpTMDL4
>>505
ipythonの%timeitでそういうのを調べられる
ものすごく僅かな差だが、数値のほうが早い
あと変数名が短いほうが早い

%timeit if a==1: pass
52.9 ns ± 0.122 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if a=="1": pass
56.7 ns ± 0.513 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if hoge==1: pass
53.9 ns ± 0.365 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
%timeit if hoge=="1": pass
57.5 ns ± 0.084 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)
2018/07/08(日) 19:12:48.21ID:FXqCe1Jq
>>513
調べてくれてありがとう。
変数名の長さについては予想通りの結果ではあるんだけど、
数値と数字の差がそれ以上に大きかった(前者が平均でおよそ6.5%速い)ということに驚いた。
2018/07/08(日) 19:47:51.32ID:7IyBQLqQ
VBAをそれなりに使えるようになったからPython始めてみたいんだが、やっぱり全然難しい?
VBAの難易度を10としたらPythonはどのくらい?

あと、この関数はVBAで言ったらコレ!みたいな早見表みたいのないよね?
2018/07/08(日) 19:49:50.48ID:nzHBwQiZ
なにをしたいかによるが
5くらいじゃね?w

ないよ
2018/07/08(日) 22:16:58.63ID:9FsG7rKp
>>515
既にVBAを使えるなら簡単だよ
くどい型宣言、配列のみの貧弱なデータ構造といった
VBAの使いづらい点が、Pythonでは全て解決されている

ただしWebやネットワークの世界には手を出すなよ
Python以外にも必要な知識が爆発的に増えていくら時間があっても足りない
Pythonはローカルのテキストデータをいじくる用途で輝く言語だ
2018/07/08(日) 22:19:33.46ID:R+BMdkT4
>>515
ナカーマ!
俺もVBAは随分とマスターしつつあるのでPythonに手を出し中…。
入門書からコツコツやっててイメージが湧きつつある!!
2018/07/08(日) 23:51:01.54ID:7IyBQLqQ
>>516-517
まじで?すげー難しいイメージあったんだが本格的に学んでみようかな


>>518
(゚∀゚)人(゚∀゚)ナカーマ
VBAはやりたいことがあってそれを調べてる内にできるようになったクチだから、Pythonは何ができるか分からんからとっつきにくいわ
520デフォルトの名無しさん
垢版 |
2018/07/09(月) 02:17:48.93ID:LaDaXFYH
記法について教えてください。

https://qiita.com/pumbaacave/items/942f86269b2c56313c15
上記のサイトのマルチプロセス実行関数を定義している箇所に下記のように記述があるのですが、
なぜカンマ以降空欄なのでしょうか?
process_pool = Pool(processes=n, )
2018/07/09(月) 04:04:31.40ID:lNBlYhG9
そのカンマは有っても無くても変わらんから消し忘れだろう

それで納得行かないならコメント欄で本人に聞いてこい
ここは著者の気持ち推測スレじゃないからな
2018/07/09(月) 06:40:13.77ID:TvZsnLJ0
毎週得意先から10くらいのPDFが送られてくるのですが。

PDFを全て選択→コピー→貼り付け→ボタン押してVBA発動(社内で見たい数字に変換)→次のPDFを開く…手作業で繰り返しています。

これをPDF自動で開かせてコピーペーストしてVBAを動かす、、までPythonでやりたいのですが、可能でしょうか?
2018/07/09(月) 06:55:58.69ID:wOPKveTX
>>522
今流行りのRPA導入したら?
悪いけどPythonには不向きなタスク
2018/07/09(月) 09:02:54.85ID:rKnQV5/G
課題解決において、本当に優れたソリューションは有効性や実現性だけでなく応用性・永続性・再現性を備えている
・PDFのフォーマットが変わったらどうするのか?
・自分が今の仕事から離れたらどうするのか?
・他の業務にも広く展開できないか?
Pythonで他の誰にも分からないもの作るより、522が率先してRPA入れて展開したほうが遥かに522は評価される
そういう思考と行動ができればCIOにだってなれるぞ
2018/07/09(月) 09:03:41.22ID:C9JH0M1I
普通ににPythonのRPAフレームワークあるが…
2018/07/09(月) 09:27:08.40ID:SXUnnQWd
>>522
可能だと思う
2018/07/09(月) 10:49:26.70ID:H6u5Fx+k
うんこ漏らしながら、、答えると

  PDFMiner.six

使え。
2018/07/09(月) 11:17:28.05ID:H6u5Fx+k
すっ、すいません。
先程まで咥えてたボっぼくのおちんぽっぽ知りませんか?
トイレに行ったら、どこに行ったか分かりません。

コンピューターの未来予測で解決して下さいwww
https://eurekalert.org/multimedia/pub/173001.php
529522
垢版 |
2018/07/09(月) 12:44:00.66ID:pU5gW32k
皆さん、回答ありがとうございます。
もう少し自分の方で調べてから、再度質問させて頂きます。
530デフォルトの名無しさん
垢版 |
2018/07/09(月) 16:14:02.89ID:OMEWQnbN
これヤバシング
https://goo.gl/uAcy7u
531デフォルトの名無しさん
垢版 |
2018/07/09(月) 19:05:37.08ID:H6u5Fx+k
>>530
マジでやばいな
ウィルスだらけで、PC壊れた。

弁償してくれ。
2018/07/10(火) 23:21:34.41ID:pmSBRWqU
T or通して踏めばおk?
533デフォルトの名無しさん
垢版 |
2018/07/10(火) 23:25:58.83ID:czFq4uQ7
特定しました
2018/07/13(金) 09:49:36.96ID:beR71Flm
今更だけど>>447に自己レス
os.renameだと移動先がない場合、FileNotFoundErrorになる
os.renamesだと移動先がない場合、自動生成してくれる
Pythonの標準ライブラリはsのある・なしで動作が変わるものがあるから気をつけないといかんね
2018/07/14(土) 08:42:52.91ID:/U+5P3P4
>>534
これは良いレスの見本
536デフォルトの名無しさん
垢版 |
2018/07/14(土) 11:36:12.84ID:v4Gtt50J
mkdir
mkdirs
もありまっせ
2018/07/14(土) 12:46:59.88ID:zjgvls6Z
Pythonのファイル操作関連機能は
複数ライブラリに散らばってたり重複があったりと
カオスなことになってて非常に使いづらい
一度自分用の早見表を作ったんだけど紛失してしまった
3で互換性なくなる時にpathlibあたりに一元化すれば良かったのに
2018/07/14(土) 15:06:03.89ID:xrW9R8Gf
複雑だが頻繁に使うなら自分専用にラップしただけのライブラリでも作ればいい
2018/07/14(土) 17:57:55.26ID:+qTTsOaT
自分専用にラップといえば、
re.searchはマッチしたものを直接返せないと思って関数作ってたけど
↓みたいににすれば直接返せると最近知った

txt="123456"
mat=re.search("12(.*?)56",txt).group(1)

マッチオブジェクトを返すってなんだよ使いにくいなぁと思ってたけど
使い方を知ったらなかなか便利だと感心した
2018/07/14(土) 18:08:46.03ID:bBAel3cq
そういえばGuidoがBDFL辞めるらしいな
PEP572関係でdisられたのが原因らしいが、ML追っかけてないからよく分からん
まあ、辞めたところで何がどうなることもないと思うがね
2018/07/14(土) 19:10:27.49ID:p9pW3bxe
>>539
>使い方を知ったら
正しくない使い方だろ…
使い捨てスクリプトだろうから止めないけど
2018/07/14(土) 19:25:32.29ID:lqSDAnIa
>>539
オブジェクトなんだからメソッドあるだろうよ
ちゃんと説明は読もうな
2018/07/14(土) 19:27:46.25ID:wb5ySS54
>>541
俺もずっとこの使い方してたけどどこがまずいのか教えて
2018/07/14(土) 19:39:05.18ID:pZ9+lrqM
>>534
sortに対するsortedのつもりで、reverseに対するreversedを使おうとするとハマる。
こちらはイテレータを返すので、もう一度リスト化しないと同じにならない。
2018/07/14(土) 22:22:07.13ID:zjgvls6Z
>>543
たぶん以下のように正規表現パターンをコンパイルして使えってことだと思う
同じパターンで繰り返し何度も検索する時に速度的に有利・・・らしいが
これを使わないのは正しくない、というのは言い過ぎ

txt="123456"
r = re.compile("12(.*?)56")
mat = r.search(txt).group(1)
2018/07/14(土) 22:41:15.08ID:9E/kCsBf
>>543
searchでヒットしなかった場合Noneが返ってきて
groupメソッドなんて知らないって怒られる
2018/07/14(土) 22:50:33.19ID:wb5ySS54
>>545
ちょっと説得力が弱いような…

>>546
そういう意味なら納得です
2018/07/14(土) 22:54:34.71ID:iQdsrGNN
>>546
例外処理したらええんちゃうの
2018/07/14(土) 23:25:04.26ID:RwYVNvZ5
>>548
だよなあ
くだすれの質問コードにどんだけ厳格さを要求するんだか
2018/07/14(土) 23:27:08.84ID:/GhuOfpQ
>>548
ミスマッチの結果、二次的に発生した例外を捕まえてエラーハンドリングするのは意図が伝わりにくいしピタゴラスイッチかよって気がする
2018/07/14(土) 23:36:28.34ID:pZ9+lrqM
そのままsearchして(この時点で例外とはならない)、
try-catchでgroup(1)すればいいのでは?
2018/07/15(日) 01:12:03.97ID:WCfEKFtx
製品のプルリクに入ってたら直せって言うけど
個人のコードだったらどうでもいいわ
2018/07/15(日) 02:24:18.06ID:oGr67yTf
>>551
いや普通に戻り値チェックしてください…
match = re.search(pat, text)
if match:
. s = match.group(1)
2018/07/15(日) 08:37:24.40ID:MaWYhEE+
webスクレイピングは、サイトの仕様変更である日突然マッチしなくなる可能性があるけど
それを想定して例外処理を作っとくのは面倒だし、作り忘れが発生する可能性も高いから
あえて>539のやり方を使って、エラーで止まるようにしたほうがわかりやすいかもしれん
2018/07/15(日) 08:50:29.23ID:BpM21w6A
仕様変更なのか
一時的な障害なのか
たまたまエラーになるデータだったのか
他の理由なのか

そういうの分析しないといけないから
リクエスト、レスポンスのダンプと処理のログは残したほうがいいよ
2018/07/15(日) 09:47:46.97ID:507A2oF2
教えてって書いてあるから横から思うところを言っただけだが
>>549みたいなこと言われるんだったら二度と教えねえわ
2018/07/15(日) 10:54:17.93ID:irOcVYp9
>>556
すまん、俺が悪かったよ
ちょっとイライラしててごめんな
558デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:02:20.42ID:lCAlUWZR
もっとちゃんと謝って
2018/07/15(日) 14:14:15.96ID:LnWCwVdC
>>553の方法でNoneじゃないことを確認すれば何の問題もないんだよな
間違った方法ではない

>>556教えたくないなら教えなければいい義務ではないのだから
560デフォルトの名無しさん
垢版 |
2018/07/15(日) 14:49:01.29ID:SyiaUNYr
Optional type hintつかえや
2018/07/15(日) 14:52:56.10ID:ULhjy0aZ
>>559
間違っている箇所(戻り値チェック)を直せば、「間違った方法ではない」のは当たり前ですけどね…
2018/07/15(日) 15:59:51.01ID:mOOR+1Qr
def func():
a,b=・・・
return a,b
の戻り値aだけが欲しい時にa=func()[0]などとせずa=func()だけで可能にする方法ある?
2018/07/15(日) 16:00:25.25ID:wK+4T5k7
(´・ω・`) あやまって?
2018/07/15(日) 16:01:15.26ID:wK+4T5k7
>>562
あるわけないじゃん
ハハハ
2018/07/15(日) 16:10:39.17ID:GnA/ld69
この手の質問たまに見るけどなぜそう言うことをしたいのかいつもわからん
2018/07/15(日) 16:13:07.59ID:LnWCwVdC
>>562
デコればいいんじゃない?
2018/07/15(日) 16:37:39.67ID:+eT7t0LR
>>562
def func():
a,b=・・・
return a
2018/07/15(日) 16:58:39.39ID:JvvU9qo5
>>565
matlabだとそれができるから、matlabから来た人は重要な戻り値を先頭にしてたまにだけ欲しい戻り値を後ろに書きたくなる
pythonでそれ同じようにすると、a,_=func()とかa=func()[0]とか書かなきゃならないのを忘れてどこかでエラー出ることが頻繁に発生する
2018/07/15(日) 17:01:56.80ID:0QdlwMDB
>>567
俺もそれ思ったけど、質問者の意図はreturn a,bとした上でaだけ返すって意味みたい。
なんでそんなことしたいかは分からんけど
2018/07/15(日) 17:02:41.94ID:0QdlwMDB
>>568
へえ!
571デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:21:18.42ID:z9dis41F
>>539
None で Exception 出ないか?
572デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:27:59.50ID:z9dis41F
yeald a, b
573デフォルトの名無しさん
垢版 |
2018/07/15(日) 17:29:17.38ID:z9dis41F
ああ違うか
yeald a
yeald b
ydald c
...
2018/07/15(日) 17:37:09.40ID:GnA/ld69
>>568
そのために
> a=func()だけで可能
なんてされたら迷惑だよ
自分だけで使うと言うならPythonの処理系弄ればいいと思うよ
2018/07/15(日) 17:38:06.11ID:GnA/ld69
>>571
>>546
2018/07/15(日) 17:38:56.90ID:lEsxGLKr
>>545

txt="123456"

r1 = re.compile("12(.*?)56")
mat = r.search(txt).group(1)



r2 = "12(.*?)56"
mat = re.search(r2, txt).group(1)

結果は同じになるけど、
オブジェクトにするかしないかで、細かい違いはどういうところで出てくるの?
577576
垢版 |
2018/07/15(日) 17:43:15.60ID:lEsxGLKr
最初の方(r1)間違った

txt="123456"
r1 = re.compile("12(.*?)56")
mat = r1.search(txt).group(1)
r2 = "12(.*?)56"
mat = re.search(r2, txt).group(1)
2018/07/15(日) 17:53:05.48ID:4uGjQYdk
知ってるけど義務じゃないし教えない
2018/07/15(日) 18:03:01.01ID:raVPXb0K
>>578
じゃあ書き込むなよ。
沸点低すぎだわ。面倒くせ

>>576
読んで字の如くコンパイルされるので高速化が期待できる。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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