X



Pythonのお勉強 Part59

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2019/03/10(日) 14:11:02.97ID:eNJkLSXg
★当スレにRubyのソースコード類を書くことを禁ず★
☆Ruby等、Pythonではないプログラミング言語での回答類を書くのも禁止
☆「Ruby では」「Rubyでは」をNGワード登録推奨

◆エラーを解決したいときはエラー表示と
 環境(Pythonのバージョン・OS・IDEの種類とバージョン)をシッカリ書く

◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩れるので
  ↓にあげてるような、ソースコード用サイトに貼ってきてくだしあ
    (スクリーンショットをimgurうp等の横着をしない)
ttp://ideone.com/      推定最大手。デフォ設定がCなので、Pythonするには選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう。
ttps://ja.osdn.net/pastebin/ ログイン必須になりやがった(゚Д゚#)

◇Pythonオフィシャルサイト
http://www.python.org/

◇まとめwiki
ttp://python.rdy.jp/

●関連スレ●
くだすれPython(超初心者用) その41【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1549282930/

〇前スレ
Pythonのお勉強 Part58
http://mevius.5ch.net/test/read.cgi/tech/1540468210/

次スレの建立は>>985が挑戦する
0607デフォルトの名無しさん
垢版 |
2019/04/17(水) 17:10:10.62ID:I32j715f
C++がPython抜いて3位 - 4月TIOBE言語ランキング 2019/04/17 10:55 後藤大地
https://news.mynavi.jp/article/20190417-810363/

TIOBE Softwareから、2019年4月のTIOBE Programming Community Index (PCI)が公開された。
TIOBE PCIは、複数の検索エンジンの検索結果から、対象となるプログラミング言語が
どれだけ話題になっているかをインデックス化したもの。

4月TIOBE Programming Community Index / 円グラフ
https://news.mynavi.jp/article/20190417-810363/images/001.jpg

2019年4月はC++がPythonを抜いて3位に返り咲いた。ただし、Pythonのシェアが下落したの
ではなく、Pythonの増加傾向をC++の増加が上回ったことによる結果と思われる。C++は
長期にわたって下落傾向が続いていいたものの、2019年に入ってから増加傾向へ転じている。
Pythonも増加傾向が続いており、どちらも今後さらにインデックス値を増やす可能性がある。

長期にわたって1位を確保しているJavaは依然として1位のポジションにあるが、下落の
傾向が続いている。2位のC言語も長期で見ると下落を続けており、C++やPythonの存在感が
強くなってきている。
0610デフォルトの名無しさん
垢版 |
2019/04/18(木) 11:59:04.13ID:xJhBXiGJ
pythonとC/C++はスムーズにくっついてくれるんで、この2つが人気あるのは嬉しい傾向。
0611デフォルトの名無しさん
垢版 |
2019/04/19(金) 15:20:26.92ID:h9deHzGp
anaconda使ってるんだけど、condaでインストールできないパッケージがある場合ってどうするのが正解?
0612デフォルトの名無しさん
垢版 |
2019/04/19(金) 16:20:26.23ID:ybioetyP
>>611
pipで入れる
オススメの使い方は環境を作ってデフォルトを汚さないこと
手順は以下のような感じ

conda create 環境名
source activate 環境名
conda install パッケージ名
pip install パッケージ名

condaでインストールできるものはcondaを使う
ただpipを使くなら以後全てpipを使った方が問題が少ない
0614デフォルトの名無しさん
垢版 |
2019/04/19(金) 16:38:15.35ID:ybioetyP
間違えた
一番最初の環境作るのは -n オプションが必要で

conda create -n 環境名

あと二番目の source activate 環境名 は最近は

conda activate 環境名

に変わったので出来なかったらこっちを試して
0616デフォルトの名無しさん
垢版 |
2019/04/19(金) 17:09:06.36ID:GSI3q7h6
実はpipenvよく知らない。node.jsのpackage.jsonみたいなものと聞いたことがあるんだが正しい?
0618デフォルトの名無しさん
垢版 |
2019/04/19(金) 18:27:13.71ID:BlAVVr4K
やれpipenvやー、venvやー、virtualenvやー、pyenvやーってもうわけがわからないよ
0621デフォルトの名無しさん
垢版 |
2019/04/19(金) 20:56:15.52ID:LF1VXBki
venvってvirtualenvみたいに同一Pythonバージョン内で仮想環境複数つくれないの?
0623ta
垢版 |
2019/04/19(金) 21:26:35.69ID:wdrY02kY
Python 自体が始めてで基本が分ってないので苦戦してます。
関数の結果を別の関数で使うにはどうしたら良いのでしょうか?
例えば、下のプログラムはどう直したらちゃんと動くでしょうか?
アドバイスをいただけると助かります。よろしくお願いします。
https://ideone.com/BHdnXj
0625デフォルトの名無しさん
垢版 |
2019/04/19(金) 22:08:30.05ID:Rh1W3sDq
pythonでの成果物を提供するときに必要なライブラリを自動でインストールできるようにするベストプラクティスってある?
0626デフォルトの名無しさん
垢版 |
2019/04/19(金) 22:13:26.55ID:6kMU8KDk
成果物をパッケージ化する時に、そのパッケージのsetup.pyに依存するパッケージを書くのが普通ないの
0627デフォルトの名無しさん
垢版 |
2019/04/19(金) 22:22:33.65ID:+TCHgQUv
>>625
相手が開発者なら626
相手が一般ピープルならWebアプリ
Pythonで作ったものを他所へ配ろうという発想は何ら得るもののない修羅の道だからきっぱり諦めるのが身のため
0628デフォルトの名無しさん
垢版 |
2019/04/19(金) 23:01:39.72ID:GSI3q7h6
>>626でいってみます。
先方のソフトとうちのソフトをソケット通信で繋いで一つのサービスを提供することになったんだけど、先方のシステムスタブ(兼ドライバ)をpythonで作ったのよ。GUI付きでさくっと作る必要があったから。
んで、うちのソフトを提供して結合試験してもらうんだけど、せっかくなので参考までにスタブも渡してあげろと上司に言われてしまって。
0629デフォルトの名無しさん
垢版 |
2019/04/20(土) 15:11:26.14ID:ZkH3lY9k
pythonの成果物の配布で何の問題も発生しないようにするなら必要なパッケージ名を指示するだけでなくパッケージの実体そのものを含めておかなければ不十分
pipで拾ってくるにしても元データが削除されているリスクがあるからね
0630デフォルトの名無しさん
垢版 |
2019/04/20(土) 21:47:07.59ID:D0CGTZnk
>>628
setup.pyは慣れないとキツイ
恐らくスタブ作るのと同じくらいの手間がかかる
特にGUI周りは動作環境に依存して動かないこともしばしば
許されるなら仮想マシンで提供かなぁ
0631デフォルトの名無しさん
垢版 |
2019/04/21(日) 00:03:52.45ID:ZEQClH31
現実的にはreadme.txtに
・pythonをインストールしてください(url)
・下記のコマンドを入力してください。
  ・pip install 〜
  ・pip install 〜
  …

だろうな。
スタブってことは、渡す狙いは先方が上手くいかなかった時にソースコードを参考にしてもらうことであって、動かすことはおまけでしょ。
0633デフォルトの名無しさん
垢版 |
2019/04/21(日) 14:26:02.54ID:X+dVpzWx
違う部署で使いまわされて
また事情知らない人に一から説明し治すくらいなら
これみろの一言で済ませる方が大事
0634デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:41:43.68ID:wtDx+RkB
最近はもっぱらAnacondaで動作確認して「AnacondaのバージョンXXインストールしてください」で済ませちゃう
0635デフォルトの名無しさん
垢版 |
2019/04/21(日) 15:47:06.57ID:FfyX0qn/
あれこれ手動でインストールしなくてもいいようにsetup.pyとかrequirements.txtがあるんやないのか(´・ω・`)
0637デフォルトの名無しさん
垢版 |
2019/04/21(日) 18:54:09.87ID:zqw0m3Nt
結合試験の時にあると嬉しい、参考程度のオマケプログラム渡すだけだろ?
そんなのうって欲しいコマンドメールで送るだけで十分でしょ。
0638デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:09:10.64ID:SeDGQYsM
python製プログラムを提供するんだけど楽な方法ない?

setup.pyがあるよ

setup.pyは慣れてない人には書くの大変だと思うよ

今回くらいの話ならsetup.py書くより手書きメモの方が楽でしょ

手動でインストールしなくてもいいようにsetup.pyがあるんじゃないの?

今回くらいの話ならsetup.py書くより手書きメモの方が楽でしょ


無限ループ入ったな。だれかbreak文挿入して差し上げて。
0639デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:17:48.43ID:ZEQClH31
if 先方との仲良さ > 60%:
 way=手書きメモ
 break
elif 先方との仲良さ > 30%:
 way=setup.py
 break
else:
 way=スタブ渡さない
 break
0641デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:42:39.65ID:Ev/jDmfm
return テメエでやれ
0643デフォルトの名無しさん
垢版 |
2019/04/21(日) 19:55:13.78ID:f77bAIm9
catch
スルーしますねw
0645デフォルトの名無しさん
垢版 |
2019/04/21(日) 20:20:43.63ID:ajzhyo5F
アイコンをダブルクリックして起動したときだけ
一部のライブラリをimportできないという謎のエラーが出て
今日の午後いろいろ試したが駄目だったのが

visual studio 2019のほうにもpythonが入ってるのを思い出して
試しに削除したら直った
0651デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:20:09.76ID:aMzGc0Ck
Ruby が作り出した、今世紀最大の起業家、

Vagrant の作者、Mitchell Hashimoto(Hashicorp)
0653デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:40:01.40ID:vxgqyKkv
ちなみにhashicorpといえばvagrantだったのは昔の話で、今ではteraformが代表的なプロダクトだ
もちろんteraformはGo製な
0654デフォルトの名無しさん
垢版 |
2019/04/21(日) 22:56:43.58ID:vxgqyKkv
あと、Chefも新プロダクトであるChef AutomateはGoに乗り換えた
完全にRubyにNOの流れだね
インフラ系のRubyプロダクトで有名なのはあとはfluentdが辛うじて残ってるくらいか
0656デフォルトの名無しさん
垢版 |
2019/04/21(日) 23:41:12.12ID:vxgqyKkv
fluentdも最近はfluent-bit(C言語製)の方がアクティブに開発されてるみたいだけど、
開発元のTreasureDataがARMに買収されたことでIoT重視に転換したのかな
TreasureDataはembulkもJRubyやめてJavaに乗り換えたみたいだし、
マジで可愛そうなくらいに壊滅状態だねインフラ分野のRuby
0657デフォルトの名無しさん
垢版 |
2019/04/22(月) 00:19:38.31ID:8wXSbEXb
0,1を要素に持つリストがあって、連続する1はまとめて一回としたときに
1が何回出てくるかカウントする問題をどう実装していいのかわからずに
困っています・・・

例)
[0, 1, 1] → 1回
[0, 1, 1, 0, 1, 0, 1] → 3回
[1, 1, 0, , 1, 0, 0] → 2回

どなたかよろしくお願いします・・・
0658デフォルトの名無しさん
垢版 |
2019/04/22(月) 00:40:19.20ID:1+rpk+Ve
>>657
何も考えずにやればこんなん

list=[0,1,1,0,1,0,1]
init=0
cnt=0
for i in list:

if init==0 and i==1:

cnt=cnt+1
init=1

if i==0:

init=0

print(cnt)
0659デフォルトの名無しさん
垢版 |
2019/04/22(月) 07:24:49.41ID:wIhLC5xo
>>657
import re
a = [1,1,0,1,0,0]

_a = ‘’.join([str(c) for c in a])
_a = re.sub(r’1+’, ‘1’, _a)
_a = re.sub(‘0’, ‘’, _a)

print(len(_a))
0660デフォルトの名無しさん
垢版 |
2019/04/22(月) 09:13:37.43ID:ksNwJY/1
電車の中だからコードかけないけど
リストの頭に0を一個足して
要素n+1から要素nを引いたものが1になる数を数えればよいのでは
0662デフォルトの名無しさん
垢版 |
2019/04/22(月) 11:54:50.26ID:s7hAPPvz
>>657
>>> import re
>>> q = re.compile(r'01')
>>> a = [0,1,1]
>>> b = [0,1,1,0,1,0,1]
>>> c = [1,1,0,0,1,0,0]
>>> len(q.findall(''.join(map(str,[0]+a))))
1
>>> len(q.findall(''.join(map(str,[0]+b))))
3
>>> len(q.findall(''.join(map(str,[0]+c))))
2
0663デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:39:08.57ID:A5Rqz7hQ
Ruby では、文字列のsqueeze で、連続する同じ文字をまとめる。
ただし、配列にはそういうメソッドがないので、文字列に変換してから処理する

ary = [0, 1, 1, 0, 1, 0, 1]
char = "1"

ary.join.squeeze( char ) #=> "010101"

ary.join.squeeze( char ).count( char ) #=> 3
0664デフォルトの名無しさん
垢版 |
2019/04/22(月) 12:45:32.73ID:rUz7G8KK
python て、case文みたいのが無いんですよね。if文でも出来るとは思いますが、なんか嫌じゃないですか?

あと、スコープが関数だと思いますが、不便ではないですか。スコープがブロックの言語もあるようですが。

識者の意見を聞きたいです。
0665デフォルトの名無しさん
垢版 |
2019/04/22(月) 13:08:03.54ID:vWosgFJU
switch-case無しは最初は抵抗あったけど、一回書いてみたら別に可読性悪くないなとわかり納得した。

スコープについてはどうなんだろうねぇ。すごく人によりけりな気がする。自分はブロックでスコープ管理するようなプログラム書く習慣がないから気になったことないな。
0666デフォルトの名無しさん
垢版 |
2019/04/22(月) 13:13:59.79ID:9+fPUiJd
俺はブロックスコープいらない派
一般論として、ブロックスコープが欲しくなるような長い関数は書くな
0668デフォルトの名無しさん
垢版 |
2019/04/22(月) 13:34:12.61ID:zFDmcPYc
>>664
Switch書かないといけないロジック自体が好ましくないのでいいと思う
必要なら辞書でそれっぽい事も出来なくはない
x = ‘hoge’
{
‘hoge’: 3,
‘piyo’: True
}[x]
0670デフォルトの名無しさん
垢版 |
2019/04/22(月) 15:41:20.63ID:A5Rqz7hQ
Ruby, Nokogiri, Selenium Webdriver を使って、
textarea に文字列を書いて、送信ボタンを押せば?

CSS Selector は、

body > div.container.container_body.mascot > div.formbox > div.formbody > form > p > textarea.formelem.maxwidth

body > div.container.container_body.mascot > div.formbox > div.formbody > form > p > input.submitbtn.btn
0673670
垢版 |
2019/04/22(月) 16:29:56.91ID:A5Rqz7hQ
Python でも、Selenium Webdriver を使って出来るのかな?

漏れは、ブラウザの自動操作・スクレイピングは、Ruby でやってるけど
0674670
垢版 |
2019/04/22(月) 17:03:26.79ID:A5Rqz7hQ
Ruby, Selenium Webdriver では以下。
ただし、URL は、test スレに変えてから実行して!

index_url = "http://mevius.5ch.net/test/read.cgi/tech/1552194662/l1";
driver.navigate.to index_url

css_selector = "div.container.container_body.mascot > div.formbox > div.formbody > form > p > "

textarea_selector = css_selector + "textarea.formelem.maxwidth"
button_selector = css_selector + "input.submitbtn.btn"

# 文字列を入力して、送信ボタンを押す
driver.find_element( :css, textarea_selector ).send_keys( "入力文字" )
driver.find_element( :css, button_selector ).click
0678デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:29:27.96ID:cHAu70m6
2chはcookie食ってないとまずcookie食え画面に飛ばしてくるので
requestsを使うならまずその対策をしないとだ
0681デフォルトの名無しさん
垢版 |
2019/04/22(月) 21:40:41.54ID:rUz7G8KK
識者の皆様、どうもありがとうございました。
case文とスコープの件、とても参考になりました。
RubyからPythonに乗り換えようと思います。
0684デフォルトの名無しさん
垢版 |
2019/04/23(火) 00:55:33.06ID:UPBQPhwq
>>683
すぐ落ちるってことは需要が無いってことで、それを保守するのはどうなんだよ。
みんながいらないと思ってるスレを一生懸命あげるのは、民主主義に反してないか。
0687デフォルトの名無しさん
垢版 |
2019/04/23(火) 08:44:15.96ID:7u7zSmHa
>>657
a=[1,1,0,1]
b="0"+"".join(map(str,a))
b=len(b.split("01"))-1
print(b)
0691デフォルトの名無しさん
垢版 |
2019/04/23(火) 11:14:58.83ID:dx0k+xuh
>>657
from functools import reduce
def f(xs):return(reduce(lambda a,x:(a[0]+(1 if a[1]<x else 0),x),xs,(0,0))[0])

print(f([1,0,0,1,1,1,0,0,1,0]))
0692デフォルトの名無しさん
垢版 |
2019/04/23(火) 12:34:55.55ID:iS8ZPgUn
opencvで新しいwindowを出す度に、画面内で密度が最大になるように並べ替えたいのですが、いいアルゴリズムはあるでしょうか?
今の所if windowの数で分岐して事前計算したパラメータでresizewindowとmovewindowを使い並べるぐらいしかできませんが、スマートなやり方があれば知りたいです
0693デフォルトの名無しさん
垢版 |
2019/04/23(火) 12:42:01.29ID:QasHluDm
単純に先頭の1と01だけカウントすればダメか?
0694デフォルトの名無しさん
垢版 |
2019/04/23(火) 13:27:57.41ID:zl7lSkB0
>>690
権限無しエラー。よくあるのはアクセス制限かけられてるとか、パスワードが必要なのに入力してないとか。
0697デフォルトの名無しさん
垢版 |
2019/04/23(火) 18:00:58.47ID:7ENhr2Wk
spyderユーザーいる?
会社のpcにpycharm入れたかったけど何故か入らんからspyderにした
しかし起動がおもすぎる
メモリ食いまくってた。。何故だ
0698デフォルトの名無しさん
垢版 |
2019/04/23(火) 18:27:52.46ID:iS8ZPgUn
>>695
エクスポゼいいですね!
mac持ってないので使用感は分かりませんが、そのように整列させる仕組みがあれはカッコイイなと考えています
0699デフォルトの名無しさん
垢版 |
2019/04/23(火) 19:31:52.39ID:VGQp5KQ6
matlab使ってたからspyderってmatlabっぽくて使いやすいと思ってしばらく使ってたけど解析の過程を残すなら結局jupyter notebookの方が使い勝手いいのでjupyterに移行した
自分が求めてたのは変数を随時確認することだけだったことに気付き、それはjupyterの拡張機能で実現できた
0701デフォルトの名無しさん
垢版 |
2019/04/23(火) 22:59:11.91ID:qoRgRo7F
VBAとUWSCのプログラミングしかしたことないんやけどpython勉強したい。
おススメの参考書ない?
夢は組み込みプログラマ
0704デフォルトの名無しさん
垢版 |
2019/04/24(水) 00:17:57.53ID:G+4R0vcM
>>702 んなこたないよ。 昔組み込みにBASICが使われてきて今でもPICにすらBASICが入ってた様に、今は組み込みにPythonが入ってるケースが多くなってる。
RasberyPi や Ardiono 、EPS32 、果ては BBC のMicro:bit ですら Python。

最近売り出された、NVIDIA の Jetson 然り。
みんなPythonだぞ。
0705デフォルトの名無しさん
垢版 |
2019/04/24(水) 00:44:40.28ID:o4ZtqQa1
pythonで組み込みってのは趣味の範囲で広がってるけどプロの世界には入り込んでこないだろうな。メリットがない。組み込みの世界においてはpythonで得られる生産性なんてあまり意味がない。
■ このスレッドは過去ログ倉庫に格納されています

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