X



くだすれPython(超初心者用) その47【Ruby禁止】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2020/03/07(土) 00:40:52.77ID:k5ibAr7h
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その46【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1577948214/
0003デフォルトの名無しさん
垢版 |
2020/03/07(土) 15:35:33.23ID:wIEefnRe
粘着w
0004デフォルトの名無しさん
垢版 |
2020/03/07(土) 19:01:00.98ID:RZgTMQsN
test
0005デフォルトの名無しさん
垢版 |
2020/03/07(土) 20:09:44.29ID:b5CwloCp
・          ,,..--―-、
         /, -----、.ヽ,      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         |  i_,,,,_  __゙l |     /  世界、糞スレ発見!
         ,!、i'゙-‐-: '-、|/    |    >>1はボッシュート!
        /'') ..., '‐-‐、.j    /  __________
        / ,‐!::...`'''''''`ノ     ̄ ̄
      _,,,l ;! ::|ヽ、二 イ
   , -‐'゙゛ i::..  | .ヽ/;ヽj!`‐-、_
   l     ノ::. .:|、 .ヽ,:ヽ|  <゛~ヽ、
  ,:''`` ''"゙.|;;:‐''゙|.ヽ、 ヽ;::|  /  .|゙l
  ,:     ヽ::il;;!  ヽ、ヽ| /   | :|
  i    o゚ :`;''゙     ヽ| /   | .|
  i   ..:::::,:::'::::: .      |゚    |,,;:->、
  `.、__;;/:::::::::: :     |    !''"  |
     i  ::.:::: :       |    |   .|  
       ⌒ ⌒ ⌒ シュルルル
     __⌒ ⌒ ⌒__
    /::::::::::Λ_Λ::::::::::::::::::/
    /::::::::::(∩;´Д`)∩:::::::/  チャラッチャラッチャーン
   /::::::::::::(  >>1 /:::::/
0006デフォルトの名無しさん
垢版 |
2020/03/07(土) 20:45:15.55ID:Sj9rVMKL
スマートpythonプログラミングの、著者である モミジアメ先生の新刊キター
TCP IP本

python関係ないけど
Kindle unlimited入ってる奴は読んどけよ
スマートpythonプログラミングは2についてけっこう尺取られてちょっと古くなった感はあるけど良書
0008デフォルトの名無しさん
垢版 |
2020/03/09(月) 21:31:08.07ID:lMlUpD8p
めっちゃ長い文をfor文使って書いた場合と使わずにベタ書きで書いた場合でどれくらい速度比出ますか?
0010デフォルトの名無しさん
垢版 |
2020/03/09(月) 22:14:29.44ID:ajCpPJPb
今どきFor文のベタ書きとか考えなくていい
適切なライブラリを使う方がよほど早くなる
とくにライブラリが速いCで書かれてる場合
0011デフォルトの名無しさん
垢版 |
2020/03/09(月) 22:36:25.86ID:lMlUpD8p
>>9
timeitの使い方がよくわからないんですよね…
%timeitっていうのは、Jupyterを使った場合の処理ですか?
>>10
そうなんですか?
とにかく今はめっちゃ遅いので何とかしたいです
リスト内包表記を試したり、ネットで拾える情報は結構試したんですが速くならないです
0012デフォルトの名無しさん
垢版 |
2020/03/09(月) 22:44:56.34ID:ajCpPJPb
>>11
先に疑うべきことはたくさんある
無駄なループを作ってないかとか

機械学習とか重い処理をする場合
ハードを増設する必要があるとか
0015デフォルトの名無しさん
垢版 |
2020/03/10(火) 00:27:33.98ID:bus7JDt5
ケースバイケースなんで
その質問では解決する前にお前の寿命が来るかプログラムに飽きる
0016デフォルトの名無しさん
垢版 |
2020/03/10(火) 02:05:18.11ID:nFDPxvbU
>>11
Pythonを使ってる時点でループのアンロールとかほとんど意味がないと思う
オブジェクトやライブラリをあれこれしてないようなコードなら、Cythonにするとかで100倍ぐらい速くなる場合はあるけれど、
Pythonオブジェクト、ライブラリを結局は呼んでるのだったらそこが律速で速くならないかも
0017デフォルトの名無しさん
垢版 |
2020/03/10(火) 04:10:20.59ID:/bE8vLVb
線形探索してるとか?
例えば、百万件の中に無いデータを線形探索すると、すべてを見るまで分からないので、百万回。
O(N)

一方、検索インデックス・辞書を使うと、百万件の中に無いデータが、瞬時に分かる。
O(1)

SQL では、B+tree で2分探索。O(logN)
2 ^ 10 = 千
2 ^ 20 = 百万
つまり、20回で分かる
0018デフォルトの名無しさん
垢版 |
2020/03/10(火) 04:16:12.65ID:3BlP5Izm
言語やアルゴリズム等で短縮できる
計算時間の方が圧倒的に大きいから
Forのベタ書きは考えなくていいぞ
0019デフォルトの名無しさん
垢版 |
2020/03/10(火) 09:56:51.57ID:QtRN/SQw
とはいえPythonはC, Java, C#あたりの速い言語グループと比較して2桁遅いので、
アルゴリズムの改善をいくら頑張っても速い言語の何も考えてないバカループにすら勝てないケースが多い
コアでない箇所でアルゴリズムを工夫することを頻繁に迫られるようなら、Pythonを使うこと自体を考え直したほうがいいかも
0021デフォルトの名無しさん
垢版 |
2020/03/10(火) 18:07:19.08ID:OITv6FOp
機械語じゃないから当然
0023デフォルトの名無しさん
垢版 |
2020/03/10(火) 19:59:11.58ID:RoiJALPR
競技プログラミングってプログラミングの速度を競うのかと思ってたけど、プログラムの速度か
0024デフォルトの名無しさん
垢版 |
2020/03/10(火) 20:01:47.21ID:yxLEcfJ6
>>23
両方
問題ごとにプログラムの実行時間に制限がある
その時間に収まるように他の人より速くプログラム作れたらポイント高くなる
0025デフォルトの名無しさん
垢版 |
2020/03/14(土) 10:37:29.33ID:WJJSMSr5
リスト内表記について質問なんですが
こういう代入はリスト内表記はあきらめて普通のforにしないといけないんでしょうか?
それともほかにリスト内表記する方法があったら教えてください

v=[1,2,3]
[c=c+1 for c in v if c==1]
0026デフォルトの名無しさん
垢版 |
2020/03/14(土) 11:11:58.61ID:+zKDV3tO
ないだろ。
副作用欲しいなら、for文か無理やり関数でやるしかない。
def func(x): global y; y = x + 1; return y
[func(c) for c in v if c==1]
0027デフォルトの名無しさん
垢版 |
2020/03/14(土) 11:27:00.67ID:WJJSMSr5
>>26
ありがとうございます
無いんですね
副作用は怖いので普通に書き下しします
0030デフォルトの名無しさん
垢版 |
2020/03/14(土) 12:33:03.26ID:XTUayws2
numpyとかpandas使えばもう少し気持ち良い描き方がある
0032デフォルトの名無しさん
垢版 |
2020/03/14(土) 17:59:18.44ID:ILPzjwAA
>>27
>副作用は怖いので普通に書き下しします
プログラミングにおける副作用の意味をググったほうがいいかも

リスト内包表記に書けるのはexpressionのみ
代入はstatementなのでエラーになる (3.8で導入されたassignment expression(:=)は可)
副作用のための処理は内包表記ではなくfor文を使うのが原則

無理やりやればできなくもないがデメリットしかない
v = [1,2,3]
[globals()['v'].__setitem__(i, x+1) for i, x in enumerate(v) if x == 1]
print(v) #=> [2,2,3]
0033デフォルトの名無しさん
垢版 |
2020/03/14(土) 19:21:24.85ID:jpfF5Ox9
>>25
これってもともとのやりたい事は
特定の値の個数を求めること?
0034デフォルトの名無しさん
垢版 |
2020/03/14(土) 22:22:03.48ID:fCAYl0fu
pip install A で実行できるようになるコマンドA
pip install B で実行できるようになるコマンドB
があって、パッケージAの依存パッケージがprogressbar、パッケージBがprogressbar2のため(どちらもimport progressbarなので)progressbar2をimportしたい方のパッケージBがprogressbarをインポートしてしまってコマンドBがエラーになってしまいます

こういう場合はコマンドA用とコマンドB用で仮想環境を分けて使うものなのでしょうか?
いちいちコマンドを実行するごとに仮想環境を切り替えるのは面倒な気がするのですが、例えば、コマンドA用とB用それぞれにバッチファイル等を作って、仮想環境の切り替えとコマンドの実行を一つのコマンドで実行できるようにしたりするのが一般的ですか?
オススメのやり方があれば教えてください
0035デフォルトの名無しさん
垢版 |
2020/03/14(土) 22:59:23.51ID:c0o9KEoN
>>34
おらはバッチ切替派だが
その前におまえ1嫁や
Windowsだけがせかいのすべてだとおもうなよ
0038デフォルトの名無しさん
垢版 |
2020/03/15(日) 00:52:51.57ID:DV1gyHVd
macでtkinterがimportエラーでて解決できなくて泣きそうやわ
ウェブで解決策が色々あるがどれもうまくいかへん
tkinter以外のGUIパッケージでフォルダダイアログだけ呼び出せるのある?
wxはウィンドウ用のクラス作らんとあかんしQtやsimpleはtkinter依存やし
Eelめっちゃええやん!からのpythonのGUI環境はマジクソ!←いまここ
0039デフォルトの名無しさん
垢版 |
2020/03/15(日) 01:01:35.73ID:S82Gach3
>>37
Atomって何だ?おもちゃか?
0040デフォルトの名無しさん
垢版 |
2020/03/15(日) 01:34:08.16ID:ek1F76QN
MacならMS製なのがネックで未だにVSCodeに移行してない根強いAtom使いも一部いるかもしれないが、
WindowsならもうAtom使ってる奴なんてほぼいないんじゃね
0041デフォルトの名無しさん
垢版 |
2020/03/15(日) 01:42:21.70ID:DV1gyHVd
いや逆やろ
WindowsはVSという最強かつ世界最高のデバッガを搭載したIDEがあるからわざわざVSCode使う必要性がない
逆にMacやLinuxはまともなモダンエディタがSublimeやAtomくらいしかないからVSCodeが圧倒的
今時SublimeやAtom使ってるのなんて意固地で勘違いしたやつくらいやな
0042デフォルトの名無しさん
垢版 |
2020/03/15(日) 02:37:23.76ID:S82Gach3
あん?このAtomってエディタの話だったのか?
OSのシェアがどうたらの文脈だからプロセッサの話だと思った
0043デフォルトの名無しさん
垢版 |
2020/03/15(日) 03:48:08.37ID:7lggs81n
素人はともかくプロ開発者におけるOSシェアは
Mac+Linux > Windows

デスクトップOSシェア(StackOverflow Developer Survey 2019)
プロ開発者: Windows 45%, Mac 30%, Linux 25%
素人開発者: Windows 58%, Mac 15%, Linux 27%

開発環境のOSシェア(Python Developer Survey 2018:複数回答可)
Linux 69%, Windows 47%, MacOS 32%, BSD 1%
0044デフォルトの名無しさん
垢版 |
2020/03/15(日) 04:02:17.63ID:QjO8odR4
LinuxやMacで開発している現場なんて見たことない
開発用PCはWindowsがデフォでしょ
0045デフォルトの名無しさん
垢版 |
2020/03/15(日) 04:34:34.23ID:gNXlAxhx
俺は受託オンリーやけど元請けの素人どもはWindowsやけど実際に開発してるチームメンバーは全員Macやなー
ウェブやアプリの場合やけど.NET環境の業務システムはVS必須やからWindowsやけどそらそうよ
0046デフォルトの名無しさん
垢版 |
2020/03/15(日) 10:14:23.99ID:b9Qsc7j/
Ruby でも、Windows 版Docker ではバグるから、仮想OS でLinux で開発する。
本番環境に一番近いのが、Linux

今までは、Windowsでは、MSYS2/MINGW だが、日本語でバグるから皆、Mac を使っていた

ようやく最近、Windows 10, WSL, Linux で、VSCode の拡張機能、Remote WSLが出たから、
Windows 10, WSL, Linux でも出来るようになった。
WSLでは、日本語でもバグらない

これで次第に、Macから、Windowsへ戻ってくるはず。
でも、完全な互換性は、直接Linuxを使う
0048デフォルトの名無しさん
垢版 |
2020/03/15(日) 10:31:59.34ID:35ngHCek
サーバーに合わせてLinuxにするのは分かるがMacはマジで意味わからん。副業でiOSアプリ作るからか?
004946
垢版 |
2020/03/15(日) 11:21:36.97ID:b9Qsc7j/
Ruby では、Windows の開発者は、WSL が出るまでは、いなかった。
Windows, MSYS2/MINGW だと、日本語でバグるから皆、Mac を使っていた

さらに、Windows版Docker でもバグるから、
Windowsでは、仮想OS でLinux しか出来なかった
0051デフォルトの名無しさん
垢版 |
2020/03/15(日) 12:26:18.38ID:0qHq2F5s
Rubyくんお友達居なそう…
0054デフォルトの名無しさん
垢版 |
2020/03/15(日) 14:45:35.84ID:tvz/ROTF
Docker のコンテナ名がコンフリクトする時はどうすればいいですか?
$docker container ps
しても動いてるコンテナないんですけど
0055デフォルトの名無しさん
垢版 |
2020/03/15(日) 17:19:22.17ID:U43dmARa
やっぱり具体的に作りたいものがないのに0から勉強するのは脳が拒否反応を起こすなぁ
VBAをやってる時は実利に直結するからあれこれやるのも苦ではなかったが……
0056デフォルトの名無しさん
垢版 |
2020/03/15(日) 17:39:01.32ID:WBXETDOG
>>48
>>50な理由とか
2系までだったころは、Macにデフォルトで入ってるからとか
デフォルトフォントがMacのほうがきれいだとか
予算余ってるからとか
カコイイからとか
かこいいからとか
本体価格が高級だからとか
そんな理由
あとおまけで52も言ってる文字コードの都合
0058デフォルトの名無しさん
垢版 |
2020/03/15(日) 17:54:33.53ID:gNXlAxhx
>>55
自宅プログラミングしない奴の言い訳まんまで草www
そもそもプログラミング好きじゃない奴がプログラマーしてることが数ある不幸なプロジェクトの原因なんよね
学習も研鑽もしないから同じ環境でしか開発できないVBAおじを量産してしまう
俺のように楽に結果が得られるならなんでもいいからもっとええのないんか?と楽しみつつ学習してるといつの間にかC++、C#からTypeScript、Pythonまでフロントもバックエンドもなんでもござれのフルスタックの完成なんよ
005934
垢版 |
2020/03/15(日) 18:09:49.98ID:ae7hHOBm
>>35
ありがとう&ごめんなさい
OS関係ない話かと思って...てへぺろ
0060デフォルトの名無しさん
垢版 |
2020/03/15(日) 20:07:39.50ID:1/DFOu+E
>>46
>本番環境に一番近いのが、Linux
そうそう

サーバが圧倒的にLinuxだからね
でもWindows10のことも書いてて
わりと良いレスだと思う
0061デフォルトの名無しさん
垢版 |
2020/03/15(日) 20:09:09.03ID:1/DFOu+E
>>55
>具体的に作りたいもの
実感としてそれは大事だね!

今のPythonブームで言えばAIや機械学習が
したいから学ぶっていう人が一番多いかな?
0062デフォルトの名無しさん
垢版 |
2020/03/15(日) 22:20:35.94ID:6KRsgpGp
スクレイピングとエロ画像の自動収集くらいしかやってね―わ
それが一番プライベートの時間の節約に役立つしな
0063デフォルトの名無しさん
垢版 |
2020/03/16(月) 01:42:32.64ID:+IrHqAFl
楽に結果を得る方法を求めて他人より何倍も苦労する訳ですね
0064デフォルトの名無しさん
垢版 |
2020/03/16(月) 06:17:37.04ID:IojLJcYy
苦労なんて発想しかできない脳みそだから低レベルなままなんだって判断できない時点で終わってるってわかんね
好きなら努力が努力じゃないんだからそりゃ差が生まれるに決まってますわ
0066デフォルトの名無しさん
垢版 |
2020/03/16(月) 12:57:20.59ID:L7QaMGTS
苦労というよりは、単純作業を繰り返したくないから単純作業と自動化で同じくらいの時間がかかるなら自動化していくうちに勝手に覚えるって感じだな
まあ自動化しやすいものを偶々日常的に扱っていることが多いというのが有利に働いていると思うが
0067デフォルトの名無しさん
垢版 |
2020/03/16(月) 14:23:07.31ID:90R/wZVM
質問です

a=[
[1,2,3],
[4,5,6],
[7,8,9],
[10,11,12]]

b=[100,200,300]
があるとして(中身の数字は適当です)
a[0,3]=b[0]
a[1,3]=b[1]
a[2,3]=b[2]
というように縦に一部だけ変数を入力するのに
カッコいい方法を教えてください
0068デフォルトの名無しさん
垢版 |
2020/03/16(月) 14:44:13.21ID:IaZ60aJs
>>67
a[0,3]=b[0]
TypeError: list indices must be integers or slices, not tuple

zip使え
0069デフォルトの名無しさん
垢版 |
2020/03/16(月) 15:11:20.17ID:90R/wZVM
>>68
間違えました、すいませんorz
a[0][3]ですorz
zip使います
ありがとうございます
0070デフォルトの名無しさん
垢版 |
2020/03/16(月) 15:24:43.89ID:05pyWuEB
>>69
>>> a=[
... [1,2,3],
... [4,5,6],
... [7,8,9],
... [10,11,12]]
>>> a[0][3]=100
IndexError: list assignment index out of range
0071デフォルトの名無しさん
垢版 |
2020/03/16(月) 15:30:10.53ID:vjCDcJeV
深いリストをフラットにするのは何?
[1, [2, 3], 4]

[3, 4, 2, 1] # 結果の順番はどうでもいい
0072デフォルトの名無しさん
垢版 |
2020/03/16(月) 15:30:38.40ID:D64H19Ci
numpy使わないなら普通にfor文使うケース
縦(column wise)にデータを取り出したいだけならlist comprehension
zip(*list)はtransposeしたい場合に使う

#numpy
a = np.array(np.arange(1, 13)).reshape([4,3])
b = [100, 200, 300, 400]
a[:,2] = b
0073デフォルトの名無しさん
垢版 |
2020/03/16(月) 15:36:25.65ID:I/DM6IO+
>>71
その例だとまったく深くないんだがw
「リスト フラット Python」あたりでぐぐれ
ちな
「リストをフラットにする作業」を英語で「flatten」っていうっぽいので
日本語使った検索で気に入る結果が出ないなら
「flatten python」みたいにしてぐぐれ
0076デフォルトの名無しさん
垢版 |
2020/03/16(月) 18:22:58.39ID:3OE3knP8
>>71
a=[1, [2, [3]], 4]
b=[int(x.strip('[ ]')) for x in str(a).split(',')]
print(b)
0078デフォルトの名無しさん
垢版 |
2020/03/16(月) 21:03:18.68ID:IaZ60aJs
for n, m in zip(a, b): n[2] = m
0079デフォルトの名無しさん
垢版 |
2020/03/16(月) 21:37:30.23ID:c9Tv/g5u
>>67
import numpy as np
a=np.array(a)
b=np.array(b)
a[:,2]=b
0080デフォルトの名無しさん
垢版 |
2020/03/17(火) 23:41:42.42ID:Cz6mauRR
plt.subplot(1, 2, 1)
plt.title('test1 score')
plt.subplot(1, 2, 2)
plt.title('test2 score')

みたいにサブプロットのグラフ毎にタイトルをつけたあとに
サブプロット1,2共通のタイトルNameを最上段、真ん中に表示させたいんですが、
なにかいい方法無いでしょうか?

       Name
test1 score test2 score
graph1 graph2

みたいな感じです。
0083デフォルトの名無しさん
垢版 |
2020/03/17(火) 23:52:06.60ID:A6c/ap2m
ねぎ式? タンブラー@ohtsuka
パートナーさんとの面談で、同僚が「ぴとんも出来るの?
ぴとん」とか言っていたのでなんだそりゃと思っていたらPythonだった。
恥ずかしのでやめて欲しい。
0086デフォルトの名無しさん
垢版 |
2020/03/18(水) 11:54:23.20ID:ita97idO
plt.gcf().text()
0088デフォルトの名無しさん
垢版 |
2020/03/19(木) 09:44:17.72ID:88W4vwJ+
オブジェクト指向の勉強してるのですが、外部から新規プロパティ作れるのって何に使うんですか?

class Test:
__def __init__(self):
____self.x=1
____self.y=2

__def calc(self):
____print(self.x+self.y)

test = Tset()
test.z = 3
とかできますが、クラス作成時に言及されてない新規プロパティを使うのはどういう時ですか?
0089デフォルトの名無しさん
垢版 |
2020/03/19(木) 09:58:33.44ID:TVS3Wm7/
>>88
使わない、というか基本的に使ってはいけない
Pythonのオブジェクトシステムの実装上たまたま可能なだけで、あえて可能にしてある訳ではない
0091デフォルトの名無しさん
垢版 |
2020/03/19(木) 10:29:34.43ID:iYhmmwGq
え、やったらあかんかったんか。こんなん出来て便利やわ、とずっと使ってたわ……
import socket
socket.socket.is_alive = lambda self: not select.select([self], [], [], 0)[0]
0094デフォルトの名無しさん
垢版 |
2020/03/19(木) 21:32:55.80ID:DGCbzdzB
>>88
Pythonは他と言語と違いゆとり用言語だからゆとりのための機能は活用したほうが良いだろ
派生で新規プロパティ追加するのめんどーくさい、で、その場でサクッと追加できるってゆとりには超便利だろ
0097デフォルトの名無しさん
垢版 |
2020/03/20(金) 11:06:06.72ID:nAHhYb7g
rubyも出来るな
むしろ推奨されてる
010091
垢版 |
2020/03/20(金) 12:36:56.62ID:b0uFXDo7
>>93
分かってる、それが正当なのは分かってる。将来socketやsslが改版される度に衝突してない確認しにゃきゃならんのも分かってる
けど、socket.socketに追加すればそれだけでssl.SSLSocketでも使えるし、ssl.wrap_socketやssl.create_default_contextみたいな便利関数もそのまま使えるし
派生クラスを作るとこのあたりが圧倒的に不便
もちろん引数にsocket.socket / ssl.SSLSocketをとる独立した関数を作ってもいいけど、あるオブジェクトの状態を問い合わせる機能はそのオブジェクトにメソッドとして持たせるほうが自然だし
■ このスレッドは過去ログ倉庫に格納されています

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