Pythonのお勉強 Part50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2014/10/17(金) 00:41:32.40ID:Db3yDsQbhttp://www.python.org/
日本Pythonユーザ会 (※英語わかる人は上記のオフィシャルの方を見ることをお薦めします)
http://www.python.jp/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
Pythonのお勉強 Part49
http://peace.2ch.net/test/read.cgi/tech/1387528488/
日本語の扱いで戸惑ったらこちらをどうぞ(バッドノウハウ集で笑える)
ttp://speirs.blog17.fc2.com/blog-entry-4.html
ttp://atomic.jpn.ph/prog/etc/encode.html
ttp://d.hatena.ne.jp/kakurasan/20100330/p1
ttp://pc11.2ch.net/test/read.cgi/tech/1217836194/339
339 :デフォルトの名無しさん:2008/08/23(土) 08:36:00
PythonのUnicodeEncodeErrorを知る
ttp://lab.hde.co.jp/2008/08/pythonunicodeencodeerror.html
よくまとまってた。あとで読む
0798デフォルトの名無しさん
2015/07/14(火) 21:14:55.11ID:HOS5JxSe見たことない
ゼロフラグ立てる判定ロジックと、ゼロ割り例外発生の判定ロジックを別に持つ意味ってないように思うし
オーバーフローとかは当然あるだろうけど
0799デフォルトの名無しさん
2015/07/14(火) 22:00:18.60ID:Dc/O8BTEそんな。。どうすればいいでしょう?
ちなみにこうやってます
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter(fmt="%(asctime)s %(levelname)s %(thread)d %(filename)s %(lineno)d]%(message)s",datefmt="%Y-%m-%d %H:%M:%S")
fh = logging.FileHandler(datetime.now().strftime('%Y%m%d') + '.log')
fh.setLevel(logging.INFO)
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.debug("ファイル出力ログです")
0800799
2015/07/14(火) 22:56:40.18ID:Dc/O8BTE0801799
2015/07/14(火) 23:11:27.41ID:Dc/O8BTEhttp://bugs.python.org/issue17981
0802デフォルトの名無しさん
2015/07/17(金) 12:01:04.92ID:laW2S6US<table><tbody>
<tr><th>aaa</th><td>123</td></tr>
<tr><th>bbb</th><td>456</td></tr>
<tr><th>ccc</th><td>789</td></tr>
</tbody></table>
thとtdがそれぞれ1つずつの場合は
それぞれを抽出後zipで結合しているのですが
td2つや3つに増えた場合どうすればいいでしょうか
0803デフォルトの名無しさん
2015/07/17(金) 12:39:35.14ID:amtl7PFW>>> a = '''
<html>
<head><title>title</title></head>
<body>
<table><tbody>
<tr><th>aaa</th><td>123</td><td>ABC</td></tr>
<tr><th>bbb</th><td>456</td><td>DEF</td></tr>
<tr><th>ccc</th><td>789</td><td>GHI</td></tr>
</tbody></table>
</body>
'''
>>> b = bs.BeautifulSoup(a)
>>> tr = b.findAll(name='tr')
>>> [_.findAll(name='th') for _ in tr]
[[<th>aaa</th>], [<th>bbb</th>], [<th>ccc</th>]]
>>> [_.findAll(name='td') for _ in tr]
[[<td>123</td>, <td>ABC</td>], [<td>456</td>, <td>DEF</td>], [<td>789</td>, <td>GHI</td>]]
>>>
0804デフォルトの名無しさん
2015/07/17(金) 13:10:50.91ID:amtl7PFW[[<th>aaa</th>, <td>123</td>, <td>ABC</td>], [<th>bbb</th>, <td>456</td>, <td>DE
F</td>], [<th>ccc</th>, <td>789</td>, <td>GHI</td>]]
0805デフォルトの名無しさん
2015/07/17(金) 14:01:01.11ID:laW2S6USどうもありがとうございます。
内容が少し理解できないので勉強します。
0806デフォルトの名無しさん
2015/07/17(金) 14:42:06.73ID:laW2S6UShttp://www.pythonweb.jp/tutorial/var/index2.html
0807デフォルトの名無しさん
2015/07/17(金) 16:13:50.48ID:laW2S6USとても勉強になりました。
参考にさせてもらい自分で作りなおしてみました。
THとTDで抽出するしか考えしかなかったので
一旦TRで抽出してそのあとTHとTDにそれぞれ分解すればいいので
data = [[x.get_text() for x in y.find_all(['th', 'td'])] for y in tr]
でできました。ありがとうございました。
0808デフォルトの名無しさん
2015/07/17(金) 17:57:24.28ID:c0lUBpBd>>> d = {"a": 10, "b": 20}
>>> d["a"]
10
>>> d["a"],
(10,)
(´・ω・`)シランガナ
0809デフォルトの名無しさん
2015/07/18(土) 02:06:04.76ID:zZW4xHaL0810デフォルトの名無しさん
2015/07/23(木) 16:08:30.75ID:3pnN26RUどこも中途半端な気がするんだけど
これってソースコード読むしかないの?
0811デフォルトの名無しさん
2015/07/23(木) 18:04:34.23ID:wAlDqffv0812デフォルトの名無しさん
2015/07/23(木) 21:48:42.36ID:G5lkIdYz0813デフォルトの名無しさん
2015/07/23(木) 23:33:31.20ID:0VYYTjl0これでは足りないの?
0814デフォルトの名無しさん
2015/07/24(金) 02:59:11.43ID:JVrL/V2Ystatusオブジェクトのメンバ変数とかがどこ探しても載ってないんだよ
status.textとかstatus.user.nameとか
0815デフォルトの名無しさん
2015/07/24(金) 03:08:44.61ID:XEo07UU5野良ライブラリなんぞ推して知るべしだろ
ライブラリに頼らず自分で一から書くのが一番だよ
0816デフォルトの名無しさん
2015/07/24(金) 05:07:27.26ID:NfS3cn5hstatus.__dict__
0817デフォルトの名無しさん
2015/07/24(金) 07:20:09.53ID:JVrL/V2Y0818デフォルトの名無しさん
2015/07/24(金) 10:20:27.38ID:03t91cSKその辺はTwitterのAPIのドキュメント見た方が早いと思う
https://dev.twitter.com/overview/api/tweets
https://dev.twitter.com/overview/api/users
0819デフォルトの名無しさん
2015/07/24(金) 19:10:31.92ID:esqV2AN3nltkモジュールをIDLEで扱っていると処理がクッソ重い
何度かIDLEが落ちたし作業にならない・・・
IDLEって本家のやつより軽いのある?
0820デフォルトの名無しさん
2015/07/24(金) 20:39:03.90ID:rM0nxH44トンクス!
0821デフォルトの名無しさん
2015/07/25(土) 22:33:04.86ID:vtz+ShjK0822デフォルトの名無しさん
2015/07/25(土) 23:08:27.01ID:47K/058z0823デフォルトの名無しさん
2015/07/25(土) 23:23:25.06ID:GojEbrFJ0824デフォルトの名無しさん
2015/07/26(日) 04:48:33.76ID:qmRl3UZP慣れてるエディタでいいじゃん
0825デフォルトの名無しさん
2015/07/26(日) 07:26:04.34ID:yiD7zf2t0826デフォルトの名無しさん
2015/07/26(日) 11:00:34.21ID:N2oZlVgp0827デフォルトの名無しさん
2015/07/26(日) 14:40:06.52ID:yiD7zf2t0828デフォルトの名無しさん
2015/07/26(日) 14:47:08.69ID:lKG+wP//入力補完の恩恵受けられる環境って概して起動が遅かったりするからじゃ?
Pythonとかの編集をずっとやってるわけじゃないしなあ
0829デフォルトの名無しさん
2015/07/26(日) 14:59:10.40ID:N2oZlVgp原始人に体力で敵うと思ってんのか
現代っ子のアオビョータンが
0830デフォルトの名無しさん
2015/07/26(日) 15:05:42.64ID:lKG+wP//それだと重さもIDEと変わらなくなっちゃうんだよねw
エディタはなるべくシンプルな状態がいい
0831デフォルトの名無しさん
2015/07/26(日) 15:46:46.56ID:FKwBtDBV0832デフォルトの名無しさん
2015/07/26(日) 17:54:20.95ID:sjjuAaNbPYCファイルからPYファイルへのデコード(逆コンパイル)の方法をおしえてください
いくつかsetup.pyをダウンロードしてはcmdでやってみたんですがどうしても逆コンパイルでつまづいでしまいます…
お願いします助けてください
0833デフォルトの名無しさん
2015/07/26(日) 19:39:03.51ID:M2aWmDlP単純にrepl使うだけが一番な気がするが
0834デフォルトの名無しさん
2015/07/26(日) 19:41:37.18ID:lKG+wP//がっつり書きたい時はVSやらNetBeansやら使うが
0835デフォルトの名無しさん
2015/07/26(日) 19:48:55.69ID:M2aWmDlP0836デフォルトの名無しさん
2015/07/26(日) 20:14:51.75ID:nDj/8w5z0837デフォルトの名無しさん
2015/07/27(月) 08:53:50.98ID:rCgM2BeHVim>VisualStudio>IntelliJ=Xcode
くらいの使用頻度。
VSのC++補完能力だけは特筆に値する、と思う。
0838デフォルトの名無しさん
2015/07/27(月) 09:45:28.95ID:aS3mDPZBvimやemacsでjediとかおもちゃレベル
0839デフォルトの名無しさん
2015/07/27(月) 11:05:29.81ID:sOFDnH/w特にデバッグ環境はもう比較にならないでしょ
0840デフォルトの名無しさん
2015/07/27(月) 12:39:51.19ID:VxRPJBWpテスト網羅してない証拠だろ
ずさんな開発体制だと宣言して楽しいのか?
0841デフォルトの名無しさん
2015/07/27(月) 14:51:46.80ID:sOFDnH/w0842デフォルトの名無しさん
2015/07/27(月) 18:30:11.53ID:bH135odH0843デフォルトの名無しさん
2015/07/27(月) 20:57:52.54ID:7QDu3mFv使い捨てのユーティリティーぐらいだから
0844デフォルトの名無しさん
2015/07/28(火) 00:09:13.09ID:2rANwPbi0845デフォルトの名無しさん
2015/07/28(火) 00:50:07.14ID:xcz5uEnx0846デフォルトの名無しさん
2015/07/28(火) 21:20:19.35ID:j22KrflS0847デフォルトの名無しさん
2015/07/28(火) 21:53:01.72ID:sPZOIAat>>846
君はテストで見つかったバグを
放置してるのかい?
0848デフォルトの名無しさん
2015/07/28(火) 21:59:57.87ID:j22KrflS0849デフォルトの名無しさん
2015/07/28(火) 22:01:41.96ID:sPZOIAatそれで見つかったバグをどうするの?
放置? それともデバッグ?
0850デフォルトの名無しさん
2015/07/28(火) 22:03:15.26ID:j22KrflSバグを洗い出すのがテストだろ?
0851デフォルトの名無しさん
2015/07/28(火) 22:09:12.24ID:j22KrflSテストで発見したバグを直すのにデバッガ使ってはいけない理由って何?
0852デフォルトの名無しさん
2015/07/28(火) 23:13:29.62ID:mfA66W0c0853デフォルトの名無しさん
2015/07/29(水) 02:07:26.49ID:Y18JCN/50854デフォルトの名無しさん
2015/07/29(水) 05:46:49.24ID:qvSRsKX3経験から言うとデバッガで治すと
別の場所でバグが増えることがある
0855デフォルトの名無しさん
2015/07/29(水) 08:32:11.48ID:64kOJ8wr0856デフォルトの名無しさん
2015/07/29(水) 09:31:02.51ID:HFbDonYp0857デフォルトの名無しさん
2015/07/29(水) 11:56:03.64ID:tJkDR52pエディタで全置換される方が怖い
0858デフォルトの名無しさん
2015/07/29(水) 17:43:54.93ID:RzPhPosxPythonでデバッガの影響でバグが出たり出なかったりってのは
インタプリタの実装のバグを疑うかな〜
0859デフォルトの名無しさん
2015/07/29(水) 21:32:21.52ID:yCCb5t3r0860デフォルトの名無しさん
2015/07/30(木) 08:15:08.11ID:FlYNnGzzpython の処理系の話だろ
0861デフォルトの名無しさん
2015/07/30(木) 08:51:20.80ID:qgoNGP4Y0862デフォルトの名無しさん
2015/07/30(木) 19:33:11.79ID:iUTBW6s2def func(a,b) : return a+b
arg={"a":1,"b":2}
func(**arg)
argに組み込み型dictではなくカスタムdict?(たとえばdictを継承した
ようなクラスのインスタン)指定する方法有ります?
class Mydict(dict)・・・みたいにやったけどエラーになった
**argみたいにできるのは組み込み型のdictだけ?
最終的にはC言語でモジュール書いて__getitem__?とかを
独自定義したオブジェクトで**argとかしたい
0863デフォルトの名無しさん
2015/07/30(木) 22:08:48.92ID:IdwK7M7e0864デフォルトの名無しさん
2015/07/30(木) 22:23:13.26ID:IdwK7M7e>class Mydict(dict)・・・みたいにやったけどエラーになった
どんなエラー
>>> arg = MyDict({"a": 1, "b": 2})
>>> print(func(**arg))
3
0865デフォルトの名無しさん
2015/07/30(木) 23:02:11.09ID:iUTBW6s2上のエラーです
MyDictに相当するクラスには __iter__/__getitem__/__len__とか
定義してます。(右も左もな感じなんで他人のコードのコピペ
ですが)
arg=MyDict()
arg["a"]=1
arg["b"]=2
func(**arg)
な感じで。(当然MyDict()のところを{}にするとうまくいく)
0866デフォルトの名無しさん
2015/07/30(木) 23:21:09.27ID:IdwK7M7e>当然MyDict()のところを{}にするとうまくいく
どうして?
>>> arg=MyDict()
>>> arg["a"]=1
>>> arg["b"]=2
>>> func(**arg)
3
0867デフォルトの名無しさん
2015/07/30(木) 23:39:53.49ID:AExuluby0868デフォルトの名無しさん
2015/07/31(金) 00:05:34.82ID:u6UInjxJ> 別の場所でバグが増えることがある
具体的な事例をお願いします。
比較実験なので、IDE以外の条件を
全部同じにして、どういう時にバグが出るのでしょうか?
0869デフォルトの名無しさん
2015/08/06(木) 21:50:41.36ID:L+5cLodLhyperestraier
以外にないのでしょうか
0870デフォルトの名無しさん
2015/08/06(木) 23:55:07.51ID:B2QP2Cbgsolrでもelasticsearchでもpythonインターフェースはあるだろ
0871デフォルトの名無しさん
2015/08/07(金) 01:42:39.57ID:If3wNdo1itertools.combinations
巨大な配列に対して実行した時に、生成した組み合わせの配列を
全部メモリーに持たないでiteratorのままにしとくことって出来ないのでしょうか
全部をメモリーに展開されるとメモリーが足りない
ついでに並列計算できるとさらにうれしいのだけど
0872デフォルトの名無しさん
2015/08/07(金) 02:07:37.11ID:jxjR69S30873デフォルトの名無しさん
2015/08/07(金) 02:08:43.96ID:jxjR69S3巨大な配列はメモリに全部載ってるイテレータなのだが。
0874デフォルトの名無しさん
2015/08/07(金) 09:11:59.99ID:3jYJojYPpython3では出来ます。
>>> cmb = itertools.combinations([1, 2, 3], 2)
>>> cmb.__next__()
(1, 2)
>>> cmb.__next__()
(1, 3)
>>> cmb.__next__()
(2, 3)
>>> cmb.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
for x in list(cmb):
print(x)
とかしていませんか?
0875デフォルトの名無しさん
2015/08/07(金) 13:09:07.02ID:eSh4n7lV組み合わせって書いてるでしょ
0876デフォルトの名無しさん
2015/08/07(金) 14:22:06.07ID:wH8t7UWZでもsetだとインデックスが崩れるのでインデックスを保ちたい時はsetに変換するわけにもいきません
こういう場合ってどうやって引き算したらいいですか?
0877デフォルトの名無しさん
2015/08/07(金) 14:39:35.38ID:NNL5NoiN>>> [1, 2, 3] - [3, 2, 1]
>>> [1, 2, 0, 1, 2] - [1, 2]
>>> [1] - [1, 2]
0878デフォルトの名無しさん
2015/08/07(金) 14:57:29.38ID:3jYJojYP>>871の
> 組み合わせの配列を全部メモリーに持たないで
> iteratorのままにしとくことって出来ないのでしょうか
に出来るよ。
>>> cmb = itertools.combinations([1, 2, 3], 2)
>>> cmb.__next__()
(1, 2)
...
と答えましたけど?
0879デフォルトの名無しさん
2015/08/07(金) 14:59:34.48ID:3jYJojYP>>> cmb = itertools.combinations([1, 2, 3], 2)
>>> for x in cmb:
... print("x =", x)
...
x = (1, 2)
x = (1, 3)
x = (2, 3)
0880デフォルトの名無しさん
2015/08/07(金) 15:06:26.19ID:WJjqalcFruby yield vs python yield
0881デフォルトの名無しさん
2015/08/07(金) 22:12:04.67ID:/SQ+qO6xリストAからリストBの値を一個ずつ削除していくコードを組めばいいんじゃないか?
0882デフォルトの名無しさん
2015/08/07(金) 22:29:57.81ID:3jYJojYP>>> L0 = [2, 2, 1, 0]
>>> L1 = [2, 3, 4]
>>> st0 = set(L0)
>>> st1 = set(L1)
>>> st2 = st0 - st1
>>> st2
{0, 1}
>>> L2 = []
>>> for x0 in L0:
... if x0 in st2:
... L2.append(x0)
...
>>> L2
[1, 0]
0883デフォルトの名無しさん
2015/08/07(金) 22:32:01.98ID:3jYJojYP削除だと、要素が重複する時にどうするか?
で頭を抱えます。
>>> L4 = [4, 4]
>>> L4.remove(4)
>>> L4
[4]
なので、私は、>>882を勧めます。
0884デフォルトの名無しさん
2015/08/07(金) 22:38:21.30ID:eSh4n7lVいや>>873に言ったんだ
紛らわしくてゴメン
0885デフォルトの名無しさん
2015/08/09(日) 19:26:03.16ID:XcPHqnDO自分でサーバ立てたりApache設定したりしたくない
Google app engine に間借りするのが一番楽なんでしょうか
どこかに設定済みレンタルサーバみたいのないものか
0886デフォルトの名無しさん
2015/08/09(日) 19:36:57.68ID:Dm6GjXRmウェブサーバー使わなくていいじゃん。
0887デフォルトの名無しさん
2015/08/10(月) 02:39:35.76ID:XH0nUbFRパソコンのメモリの大きさから計算できないでしょうか
0888デフォルトの名無しさん
2015/08/10(月) 10:34:27.46ID:AGT5HrH+>>> f = 1.0
>>> f.__sizeof__()
24
>>> f10000 = 10.0 ** 10000
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OverflowError: (34, 'Numerical result out of range')
>>> from decimal import Decimal as D
>>> df10000 = D("10.0") ** 10000
>>> df10000.__sizeof__()
104
>>> L = [None] * (2 ** 24)
>>> L.__sizeof__()
134217768
0889デフォルトの名無しさん
2015/08/10(月) 11:06:00.54ID:7hnSrnGJ0890デフォルトの名無しさん
2015/08/10(月) 11:30:47.99ID:AGT5HrH+malloc() が失敗する時、浮動小数の小数点以下の最大桁数と、
listの要素の数は反比例の関係にあるでしょう?
また、質問者はlistもmemoryを使う前提に気づいていないようでした。
浮動小数一つの要素のmemory sizeを知る方法、
decimal module 使ったobjectの要素のmemory sizeを知る方法、
list の要素数によってPCの使用するmemory sizeが大きく変動する事を
示すために、>>888を書きました。
0891デフォルトの名無しさん
2015/08/10(月) 14:39:29.91ID:AGT5HrH+$ cat /proc/meminfo | grep Mem
MemTotal: 3867772 kB
MemFree: 2707672 kB
の環境で、
http://pastebin.ca/3096710
を実行すると、bit=26を実行できました。
bit=27は×。
よって、
list_elements =
134217727
list_elements_size_of =
1207959624
が限界付近っぽいので、
max_mem_size=1207959624
として
http://pastebin.ca/3096751
を実行して、
float_objects の最大数は、
37748737
と決定しました。
お試しあれ。
0892デフォルトの名無しさん
2015/08/10(月) 22:19:22.15ID:dVO5O3aiHeroku
0893デフォルトの名無しさん
2015/08/11(火) 06:08:20.62ID:jgY2w2Wwその内、カーネルに1GBを使うから、アプリは3GB使える
一方、64bitなら、無限に近い。
仮に物理メモリが8GBだとしても、ページング機能があるので、
USBメモリやHDDを、メモリのように使える
つまり、設定次第
0894デフォルトの名無しさん
2015/08/11(火) 10:44:33.16ID:VmWDUo2Sパフォーマンスは落ちるよなー
確実に物理メモリだけで使える範囲を知りたいところである
0895デフォルトの名無しさん
2015/08/11(火) 11:21:09.67ID:3YusrhQWgoogle app engineはCで書かれたバイナリに依存するライブラリを使えない
なのでAmazaon AWSが良いらしい
https://gist.github.com/Gab-km/5660808
0896デフォルトの名無しさん
2015/08/11(火) 11:49:48.12ID:z0IP5VKM無駄な考えにこだわってる人って滑稽ですね
壁に体当たり続けてる壊れたチョロQみたいですわ
首の上に頭が載ってないんでしょうね
0897デフォルトの名無しさん
2015/08/12(水) 02:51:19.51ID:09N1uJwiheroku便利そうなんだけど無料の範囲内だと
NumpyもScipyも使えないってことでOK?
■ このスレッドは過去ログ倉庫に格納されています