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

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん
垢版 |
2017/09/01(金) 16:44:47.30ID:igIE9hK/
Pythonオフィシャルサイト
http://www.python.org/

テンプレ等は2以降で

■前スレ
Pythonのお勉強 Part53
http://mevius.2ch.net/test/read.cgi/tech/1494683284/
827デフォルトの名無しさん
垢版 |
2017/12/08(金) 21:54:24.95ID:IrdOezu+
>>826
やってみる

一応python3.4と3.6の仮想環境作ったら問題なかったからデフォルトのpython3.5が邪魔してる感じなのかな
2017/12/08(金) 23:46:58.75ID:bn9A+3KX
>>814
if文とかでも、andやorを併用するときは、条件をパレンで囲ったほうがわかりやすい場合もある
基本的に非推奨みたいだけど、JSの時のクセで、単一条件でもついやってしまうわ
2017/12/09(土) 00:28:34.35ID:xl1BtWd3
パレンとは何ぞや
2017/12/09(土) 00:53:06.06ID:fUGK4n9g
https://ja.wikipedia.org/wiki/%E6%8B%AC%E5%BC%A7#%E4%B8%B8%E6%8B%AC%E5%BC%A7%EF%BC%88%EF%BC%89
2017/12/09(土) 01:52:29.72ID:4sUvcZIs
parenthesis
bracket
brace
832デフォルトの名無しさん
垢版 |
2017/12/09(土) 12:33:10.45ID:nuTX+Pqx
>>829
パーレン()
ブラ<
ケット>
スケブラ[]
カリブラ{}
2017/12/09(土) 15:39:10.91ID:J8x37gzD
>>830-832
ブラケット、スクエアブラケットは知ってたけど'()'ってパーレンって言うのか
普通に括弧って呼んでた
2017/12/09(土) 15:43:18.54ID:WbQFKXji
オヌヌメの書籍は?
2017/12/09(土) 16:03:50.76ID:k2/GOVIp
アマでざっと見た感じ
PythonユーザのためのJupyter[実践]入門
836遊園
垢版 |
2017/12/09(土) 21:25:28.79ID:J0X0FLOJ
空の配列って連番作成できないの?
L=[]
R=[]
とか、毎回書いてるんだけど、面倒だからA-Zまで上記の方式でまとめて作成できない?
2017/12/09(土) 21:49:15.38ID:QEQWRzSm
>>836
変数をリストに入れてループで回せばいいだけじゃん
2017/12/09(土) 22:26:59.60ID:r6QOq0kp
>>836
毎回プログラムで
プログラムをファイルに書き出す
プログラムをつくれば
いいんじゃないかな?
2017/12/09(土) 23:01:53.78ID:3mnwbBaO
文字列つくってループしてexecすればいいかな
2017/12/09(土) 23:05:32.09ID:OLIJtynp
なんでそんな使いづらそうな配列を作るのかわからん
2017/12/09(土) 23:35:19.17ID:lJt3kOFt
>>836
そんなことしなきゃいけないロジックに問題があるのでは?
2017/12/09(土) 23:37:36.78ID:k2/GOVIp
>>836 できましたぁ!
>>> from collections import defaultdict
>>> d = defaultdict(lambda:[])
>>>
>>> d['A'] = [1,2,3]
>>> d['A']
[1, 2, 3]
>>> d['B']
[]
>>> d['B'].append(3)
>>> d['B']
[3]
>>> d['C']
[]
>>> d['Z']
[]
>>>
2017/12/10(日) 00:29:52.15ID:p6+oAblR
>>836
おそらくロジックを変えたほうが良いが、どうしてもというならできないこともない
https://ideone.com/nj0ZjO
844デフォルトの名無しさん
垢版 |
2017/12/10(日) 05:19:39.14ID:Ivp7Fyt3
グローバル汚すな
845遊園
垢版 |
2017/12/10(日) 09:25:58.63ID:DUp9AezH
A.append(123)とか書いたら name 'A' is not defined
と出るので、仕方なく A=[] と毎回かいてる。

とりあえず、>>843を使わせて頂きます。

 ありがとうございました。
2017/12/10(日) 11:09:44.65ID:tjvj99Q4
みんなこの質問でよくわかるな。質問の内容自体が理解できないわ。
2017/12/10(日) 11:28:26.23ID:d0lTqA7N
>>845
なにいってだこいつ
2017/12/10(日) 11:50:08.90ID:ye/uOlZy
仕方なくと言われてもそういうもんなんです
849おはようござます。
垢版 |
2017/12/10(日) 12:38:55.38ID:9429WHjp
質問なのですが
pythonで書いたコードを実行中に

一分後にコードをすべて再実行するロジックを入れたいのですが
どういったコードをかけばいいでしょうか
2017/12/10(日) 12:47:35.56ID:ye/uOlZy
sleep()とかwait()みたいな関数なかったっけ
851おはようございます
垢版 |
2017/12/10(日) 12:53:54.45ID:9429WHjp
sleep とかの 一時停止後の再実行ではなくて

計算したのをすべてなしにして
初めから再実行をかけたいんですよね
こまってます
2017/12/10(日) 13:17:10.01ID:Y1jO7k2o
djangoアップデートきたー
2017/12/10(日) 13:23:12.64ID:ye/uOlZy
普通に、1度目の処理は最後にsleep(60)が実行されて、2度目で終了するループ処理では駄目なの?
2017/12/10(日) 13:26:15.13ID:rNGiIPu5
>>851
sleepからあけた後に勝手に一からやり直しゃいいと思うよ。

別に一分間隔でプロセス起動しても良いけど。
2017/12/10(日) 13:29:38.04ID:uZvVO5M1
def unchi():
print ("unchi")

t=threading.Timer(60, unchi)
t.start()
2017/12/10(日) 14:51:53.96ID:Z/uH3qH0
クラスの中でそのクラスのメソッドを呼びたいんだけど
class Test(Parent):
Test().func()

def func(self):
....
....
じゃだめなの?
not defined のエラーが出る
2017/12/10(日) 15:00:44.42ID:klwCxkV9
駄目です
2017/12/10(日) 15:59:03.76ID:rNGiIPu5
>>856
Parent.Func()
2017/12/10(日) 16:59:02.05ID:gQ55VXnr
あ、ごめ、クラス定義がコンストラクタに見えてた。
860デフォルトの名無しさん
垢版 |
2017/12/10(日) 17:31:27.35ID:UOQUQi73
@staticmethod
def func(self):
861デフォルトの名無しさん
垢版 |
2017/12/10(日) 17:31:52.03ID:UOQUQi73
IDわろた
862デフォルトの名無しさん
垢版 |
2017/12/10(日) 17:32:30.40ID:UOQUQi73
ああすまそ @staticmethod なら self いらんかった
2017/12/11(月) 02:13:40.72ID:hBs7hPmg
>>858
>>860
やってみたけどだめだったorz
2017/12/11(月) 03:42:41.94ID:hBs7hPmg
自己レス、取りあえずインスタンス生成したとき1回呼ぶだけなんで以下でいいみたいだ。
class Test(Parent):
def __init__(self,**kwargs):
super(Test,self).__init__(**kwargs)
self.func()

def func(self):
.....
.....
865デフォルトの名無しさん
垢版 |
2017/12/11(月) 06:41:20.17ID:4+bid6rw
ふつうはそうするが
別の理由があって聞いてるんだと思った
2017/12/12(火) 17:44:13.16ID:3MG0X84S
>>699
csv_normal.pyがバージョン2.4.0にバージョンアップしたよ(https://ideone.com/u5Ji8H

 Version: 2.4.0
  ・csvデータを罫線で囲む機能を追加したよ(csvデータの可読性アップ)
  ・関数名などをスネークケースに統一したよ(コードの可読性アップ)
  ・関数、メソッドを沢山追加したよ(csvデータの処理機能アップ)
  ・数値リテラル内のアンダースコア表示に対応したよ(数値の可読性アップ )

思いついた機能は全部入れたよ、頑張りすぎてコードが千行超えちゃったよw
目玉は罫線で囲む機能で、罫線パターンは簡単に自作できるようになっているよ
少し早いけどクリスマスプレゼントだよ
867デフォルトの名無しさん
垢版 |
2017/12/12(火) 18:05:44.87ID:98iDbaWn
まだ続けとったんか
メッチャよくなったやん
2017/12/12(火) 18:20:30.37ID:FrwRWhMa
pypiに公開しておいた
2017/12/12(火) 21:45:38.63ID:3MG0X84S
>>> import csv_normal as csv
>>> s='''
今日は何かめっちゃ褒められてますがな
ところでまた機能を1つ思いついてしまった・・
この縦書き機能を・・天才かもしれん'''
>>> c = csv.csv([list(string) for string in s.split('\n') if string])
>>> c.fill(); c.refresh_field(); c.replace_field('', ' ')
>>> c.csv = c.csv[::-1]; c.csv = csv.row2column(c.csv)
>>> c._display_delimiter=''
>>> c.print()
こと今
のこ日
縦ろは
書で何
きまか
機ため
能機っ
を能ち
・をゃ
・ 1褒
天つめ
才思ら
かいれ
もつて
しいま
れてす
んしが
 まな
 っ 
 た 
 ・ 
 ・ 
2017/12/13(水) 16:02:33.73ID:SHWRPW1I
ボタンを押したときに01〜03の関数を動かしたいんだけど、

btn.OnClick.Add(01,02,03)

とかやってもうまくいかなくて、

btn.OnClick.Add(01)
btn.OnClick.Add(02)
btn.OnClick.Add(03)

みたいにやらないといけない
でもこれだと02や03が不安定で、動くときと動かない時がある
どうすればいいでしょうか
2017/12/13(水) 17:49:16.91ID:5NvkV9BJ
>>866
csv_normal.pyがバージョン2.5.0にバージョンアップしたよ(https://ux.getuploader.com/codes/download/6

 Version: 2.5.0
  ・print_idx2メソッドを追加したよ(インデックス表示+罫線で囲むからcsvデータが更に見やすくなるよ)

ideoneサイトだとコード容量オーバーで貼り付けられなかったからコードアップローダーにアップしたよ
※Python3.6から追加された機能を使用しているから古いPythonだと動かないので注意だよ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
872デフォルトの名無しさん
垢版 |
2017/12/13(水) 19:02:23.16ID:b34l3iDJ
BBQおめ
2017/12/13(水) 19:35:28.14ID:X0jO0ehF
>>870
01-03の関数を大きな関数の中で呼び出して、btn.OnClick.Add() にはその大きな関数を渡せばいいんじゃないの
2017/12/14(木) 17:35:34.94ID:snQTRBXR
>>871
えー226cmもあったんか!
2017/12/14(木) 18:31:20.18ID:ehF4QImV
お構いなしに型変換して同じ変数にぶち込むスタイルのコーディングがいつまで経っても慣れんわ
2017/12/14(木) 19:24:56.33ID:SQd1OlWL
型はオブジェクト自身が持っている、変数は指しているだけ
877デフォルトの名無しさん
垢版 |
2017/12/14(木) 19:32:40.08ID:oezENCsV
>>875
おまえ関数型勢に消されんぞ
2017/12/14(木) 19:56:37.07ID:rn0SmpIP
自分も変数なるべく使いまわしてるんだけどこれ速度と可読性の観点でどうなの?
879デフォルトの名無しさん
垢版 |
2017/12/14(木) 20:48:58.99ID:vpKUBjgx
df何度も上書きして使いまわし
2017/12/14(木) 20:50:22.64ID:2ncS4bon
Python使ってて小手先の最適化を気にしてる時点で馬鹿に分類されるよ
881デフォルトの名無しさん
垢版 |
2017/12/15(金) 00:17:15.09ID:yw8gSH0I
for文をなるだけ使わないってのは速度の点で重要だけど
素直にc++なりで書いた方が慣れないうちは楽だなと思ったり
2017/12/15(金) 08:35:30.91ID:qJ6ESGNh
>>880
お前が一番アホっぽいけどな
2017/12/15(金) 09:28:51.61ID:llbK5PGi
12時間頑張ってそれは草

まあ、ママは誉めてくれるんじゃね…
よかったね
2017/12/15(金) 10:26:39.92ID:c/LOcSA5
>>880
馬鹿そう
2017/12/15(金) 11:08:31.56ID:Z44X65Q/
>>871
少し使ってみたけどデータはpandasよりも格段に見やすい
データ抽出はpandasのqueryの方が簡潔で分かりやすい、csv_normalは冗長的だがPythonに慣れてる人はこっちでもいいかも
データを枠で囲む機能はまあまあ気に入った
感想はこんな感じかな、なかなか良い出来だと思うよグラフ化することが無いならこっち使ってもいいかもな
2017/12/15(金) 14:57:01.36ID:jrk+Uh93
いやいや変数の使い回しなんて小手先すぎるだろ…
勿論、コマ落ち防止でgc発生を絶対抑止しないといけないとか、変数使い回しが必要な場面もあるけどさ。

あえて書くまでもないことだけど、pythonに限らず、変数を使いまわして可読性メンテナンス性を下げるより、アルゴリズムを変えることを検討した方がいい
2017/12/16(土) 12:35:46.84ID:2+3GS8kh
使いまわす方が可読性が向上することもある
2017/12/16(土) 12:42:02.59ID:LkzTWqEe
可読性なんて所詮オナニーですよ
2017/12/16(土) 13:18:54.64ID:9Fve7Q6b
変数を使い回すということは、前のデータはいらないってこと、そして前のデータと意味は同じってこと
baka = >>875
baka.ng()
baka = >>886
baka.ng()
2017/12/16(土) 13:54:20.53ID:MCFqyxDm
変数使いまわさないと
事実上変数のスコープがずっと続いて読みづらいことある
2017/12/16(土) 13:56:22.78ID:tthKlmuc
>>889
例えば"aの色"という変数があって、aの色が変わったのなら、当然もとの"aの色"変数に格納する。
これをそもそも使いまわしと言わない。

意味が違うのにデータがいらないという理由で使いまわしてるのなら話にならない。

>>887
何だって例外はあると思うよ。
2017/12/16(土) 14:08:56.31ID:ZGZeB1Qj
どっちでも、バグ無く動けばいいという考え方じゃ駄目なん?
2017/12/16(土) 14:11:35.48ID:MCFqyxDm
規約という鎖で自分を縛って喜んでるのがたくさんいるんだ
2017/12/16(土) 14:15:44.99ID:2+3GS8kh
>>891
設計思想によっては例外という割合ではない
2017/12/16(土) 14:18:48.89ID:2+3GS8kh
>>892
ある程度の一貫性は欲しいかな
同じソースの部分部分で違うと読み間違えたり
2017/12/16(土) 14:28:57.77ID:ttAmpR9c
オヌヌメのPython本は?
2017/12/16(土) 14:49:36.51ID:9Fve7Q6b
>>891
せっかくbakaを例に出してんのに例を例で被せてくんなよバカ
オマエの例でいえばbakaは"色"という変数だマヌケ
"色"にaの色を格納して、いらなくなったから"色"にbの色を入れてんの
そして色という意味は同じわけ、bakaの例みれば分かるだろ
2017/12/16(土) 15:35:32.16ID:9Fve7Q6b
ちっ、せっかくカウンター用意してたのに噛みついてこいやぁ!!
つまり変数の使い回しというのはfor文の変数だ
for baka in (>>876, >>886, >>891):
 baka.ng()

はい、論破ァーww
899デフォルトの名無しさん
垢版 |
2017/12/16(土) 18:30:11.61ID:PKDI5VWV
最近勉強始めたばっかの初心者なんだけど質問すまん
これの下の方の二つの input って誤植だよね? 正しくは print であってる?
http://imgur.com/fy1mnRS.jpg
900デフォルトの名無しさん
垢版 |
2017/12/16(土) 19:53:43.43ID:PDgCh/4m
>>899
このコードをそのまま実行した場合と
該当箇所の input を print に書き換えて実行した場合を比較すればわかるけど
「そういう動作」を狙って著者さんがこう書いただけだと思う
初心者向けのサンプルプログラム以外で、こういう input() の使い方ってしないと思うけどね
出版社に問い合わせても図書カードとかはもらえなさそう
901デフォルトの名無しさん
垢版 |
2017/12/16(土) 19:58:38.21ID:rq6V2ypo
kbhit()だな
2017/12/16(土) 22:39:15.57ID:ArLhqftT
>>896
「みんなのPython 第4版、2017」が定本
2017/12/16(土) 22:44:27.43ID:Q3oWoFk+
>>902
thx
2017/12/17(日) 00:11:06.04ID:OP5LAhHm
同じidなら結合して出力したい。

l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]

求める結果
id0 python
id1 aiueo
2017/12/17(日) 00:12:07.62ID:OP5LAhHm
おねがいします m(_ _;)m
2017/12/17(日) 00:31:52.24ID:noPwurno
ttp://www.oreilly.co.jp/books/images/picture_large978-4-87311-778-2.jpeg
907デフォルトの名無しさん
垢版 |
2017/12/17(日) 00:56:13.28ID:OP5LAhHm
coord = {'latitude': '37.24N', 'longitude': '-115.81W'}
A01='Coordinates: {latitude}, {longitude}'.format(**coord)

print(A01)
2017/12/17(日) 00:57:29.44ID:/cDASRuF
グラフ描画はやっぱりseabornですかね?
他にお勧めのふつくしいパッケージあったら教えてください
2017/12/17(日) 01:01:08.99ID:NZGyS71f
ary = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
hash = {}

ary.each_with_object(hash) do |(key, value), hash|
if hash[key]
hash[key] += value
else
hash[key] = value
end
end

p hash #=> {"id0"=>"python", "id1"=>"aiueo"}

Ruby で書いた
https://paiza.io/projects/bbOPs6qzVV-5PLOrQ545IA
2017/12/17(日) 01:18:33.54ID:mJFfsWjk
>>906
英語良ければ無料で公開されているこちらをどうぞ
https://automatetheboringstuff.com/
2017/12/17(日) 06:37:55.25ID:nW0iFIyL
>904

defaultdict 使うと楽だよ。

import collections


l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]

dic = collections.defaultdict(str)
for k, v in l: dic[k] += v
for k, v in dic.items(): print(k, v)
2017/12/17(日) 08:24:35.52ID:VH1yLn0n
import seaborn as sns
これ何でsnsにするの? sbが適当じゃない?? seaborn調べると皆snsにしている
2017/12/17(日) 11:08:28.09ID:nW0iFIyL
Samuel Norman Seaborn っていう架空の人物が登場するテレビドラマがあって、それに掛けたジョークらしいよ
914904
垢版 |
2017/12/17(日) 12:36:13.88ID:OP5LAhHm
>>911
助かりました。ありがとうございます。
2017/12/17(日) 15:29:30.91ID:mJFfsWjk
>>913
それ、昔NHKでもやってたの見てたわ
2017/12/17(日) 15:46:51.80ID:VH1yLn0n
>>913
サンクス シャレてるからワイもsnsにするでぇー
2017/12/17(日) 16:00:03.29ID:/cDASRuF
あれ?やっぱりみんなseabornなの?
他にあれば知りたい
918デフォルトの名無しさん
垢版 |
2017/12/17(日) 16:25:27.84ID:GUabbIAG
プログラム初心者なんだけど質問第2すまん
pip installについてなんだけど
教本通りにQRコードを生成するパッケージをインストールしたいんで
pip install pillow qrcodeって入力したら
Collecting pillow って出てきてずっと固まってる
時間経てばインストールし終わる?
919デフォルトの名無しさん
垢版 |
2017/12/17(日) 16:32:17.61ID:XxtCNzg/
バージョンは
2017/12/17(日) 16:42:51.96ID:VH1yLn0n
Windowsならコマンドプロンプトを起動するときに右クリック→"管理者として実行"
で起動しないとpip install失敗するよん
2017/12/17(日) 16:45:46.85ID:DptJao3l
requirements.txt と Pipfile のどちらを使うべき?
922デフォルトの名無しさん
垢版 |
2017/12/17(日) 17:01:02.18ID:GUabbIAG
Microsoft Windows[Version 6.0.6002]って書いてある
管理者として実行も試してみたんだけどCollecting pillowから進まない

うーん何か足りないんかな
923デフォルトの名無しさん
垢版 |
2017/12/17(日) 17:21:26.29ID:XxtCNzg/
どっちにしろおま環だから何とも言えんが
pillowがだめでもPIL入れてればいけるんじゃね
2017/12/17(日) 17:35:08.16ID:VH1yLn0n
pip install pillow qrcode
でインストールできたでぇー、QRコードも生成できた

pythonのバージョンは3.6.1
pipのバージョンは9.0.1
Pillow(4.0.0)インストール済み
925デフォルトの名無しさん
垢版 |
2017/12/17(日) 18:12:47.56ID:GUabbIAG
解決した!
恥ずかしくて言えないくらい初歩的なミスだった……
すまん、ありがとうございました
2017/12/17(日) 18:56:07.30ID:VH1yLn0n
csv_normal.pyがバージョン2.7.7にバージョンアップしたよ(https://ux.getuploader.com/codes/download/7
もう追加機能も思いつかないので、たぶんこれがファイナルバージョンとなるよ

 Version: 2.7.7
  ・使用例の説明を改善

  ・冗長性の改善(>>885のご指摘を受けて)
     ・冗長な関数名、メソッド名、引数名などを簡潔に改名
     ・ヘッダー情報を更に便利に簡単にアクセスできるように改善

  ・メソッド追加
     ・shapeメソッド - 行列のサイズを表示(pandasからパクった)
     ・print2メソッド - printメソッドよりさらに見やすい(罫線で囲むから)
     ・inquire_field_valueメソッド(>>904もこれで解決)
などなど


あとがき:
 csv_normalは配列を配列のまま扱うことでPythonの強力な配列操作をそのまま利用でき
 簡潔で直感的、習得も簡単ですぐに使用できる優れたモジュールとなりました
 特にデータを罫線で囲んで表示する機能は秀逸で他に類をみない可読性を提供します
 これはpandas越えたわ・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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