トップページ⇒tech
1002コメント345KB

くだすれPython(超初心者用) その27©5ch.io

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net2015/09/04(金) 07:05:12.28ID:6Gds/3zT
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その26
http://peace.2ch.net/test/read.cgi/tech/1431763770/

関連スレ
Pythonのお勉強 Part50
http://peace.2ch.net/test/read.cgi/tech/1413474092/

◆関連リンク Python の Home Page
ttp://www.python.org/

◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/

◆まとめwiki
ttp://python.rdy.jp/
0002デフォルトの名無しさん2015/09/04(金) 07:09:43.39ID:x7fRT8f0
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
|  i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
      |( ´∀`) < きのこ のこーのこ げんきのこ ♪
      |(ノ   |つ
      |     |
     ⊂ _ ノ
       ""U
      _,,,......,,__
  /_~ ,,...:::_::;; ~"'ヽ
 (,, '"ヾヽ  i|i //^''ヽ,,)
   ^ :'⌒i    i⌒"
     (´∀` )| < エリンギ まいたけ ブナシメジ ♪
    ⊂|  (ノ |
      |     |
      ヽ _ ⊃
      .U""
|
| ミ
| ミ  サッ!
| ミ
|
0003デフォルトの名無しさん2015/09/04(金) 07:10:37.53ID:x7fRT8f0
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0004デフォルトの名無しさん2015/09/04(金) 10:18:55.12ID:efXmgHpK
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0005デフォルトの名無しさん2015/09/04(金) 20:27:20.54ID:x7fRT8f0
君ら初心者いじめるの好きだねw
0006デフォルトの名無しさん2015/09/05(土) 05:28:45.51ID:ZKXW4+L0
辛辣な人・意地悪な人多いよね
日本じゃマイナーな言語なのに
その中で知識を誇っても虚しいだけだ
0007デフォルトの名無しさん2015/09/05(土) 05:45:34.94ID:xb8mS1yp
で
>>973 は
どうすればよかった?
0008デフォルトの名無しさん2015/09/05(土) 07:07:24.04ID:SHK8Doz8
前スレ984に書かれてる対処方法でFA
0009デフォルトの名無しさん2015/09/05(土) 09:14:00.49ID:DTTTMVx9
numpy.splitの逆をやるルーチンってないですか?
ndarrayのリストを渡して任意のaxisで結合してほしい。
0010デフォルトの名無しさん2015/09/05(土) 11:25:39.64ID:yNAOhLZf
numpy.stack系関数かな
0011デフォルトの名無しさん2015/09/06(日) 08:28:38.97ID:0LRHIEGw
バイナリデータを読み込み、指定したバイト区間ごとに区切って
リストやタプルに格納する方法を知りたい
Cの構造体定義みたいな感じで指定できると嬉しい
0012デフォルトの名無しさん2015/09/06(日) 08:45:32.50ID:rNg8wlTp
>>11
struct.unpack()
struct.pack()
でできるのでは。
0013デフォルトの名無しさん2015/09/06(日) 09:22:56.63ID:2A7JkPdq
>>> import struct
>>> a='\x01\x02\x03\x04\x05\x06\x07\x08'
>>> a
'\x01\x02\x03\x04\x05\x06\x07\x08'
>>> struct.unpack('8c', a)
('\x01', '\x02', '\x03', '\x04', '\x05', '\x06', '\x07', '\x08')
>>> struct.unpack('2i', a)
(67305985, 134678021)
>>> struct.unpack('i4c', a)
(67305985, '\x05', '\x06', '\x07', '\x08')
>>> map(hex, struct.unpack('2i', a))
['0x4030201', '0x8070605']
0014デフォルトの名無しさん2015/09/06(日) 09:32:31.32ID:2A7JkPdq
>>> map(hex, struct.unpack('4h', '\x01\x02\x03\x04\x05\x06\x07\x08'))
['0x201', '0x403', '0x605', '0x807']
>>> map(hex, struct.unpack('i2h', '\x01\x02\x03\x04\x05\x06\x07\x08'))
['0x4030201', '0x605', '0x807']
>>> map(hex, struct.unpack('hhhh', '\x01\x02\x03\x04\x05\x06\x07\x08'))
['0x201', '0x403', '0x605', '0x807']
>>> map(hex, struct.unpack('hih', '\x01\x02\x03\x04\x05\x06\x07\x08'))
struct.error: unpack requires a string argument of length 10
>>> map(hex, struct.unpack('hih', '\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a'))
['0x201', '0x8070605', '0xa09']
0015デフォルトの名無しさん2015/09/07(月) 21:32:31.39ID:4CGTGSEX
失礼いたします。
Webスクレイピングをしたいと思ってPython2.7をインストールし、次のサイト通りに試したんですが、
text_content属性がないとのエラーが起こるので、対処方法を教えていただけると嬉しいです。
http://qiita.com/beatinaniwa/items/72b777e23ef2390e13f8
(ちょうど最下のコメントと同じ状況です)

もう一つ、cssselectorの代わりにXPathを使う方法も試したのですが、
出力結果が"[]"だったのでこっちも失敗してしまったようです。
ソース:print root.xpath('//*[@id=news_body]')

一応、ターゲットのHTMLソースも確認してみましたが、
記述したCSSセレクタが間違っているということもなさそうです。

以下はpip freezeで調べたパッケージのバージョン情報のコピーです。
cssselect==0.9.1
lxml==3.4.4
requests==2.7.0
0016デフォルトの名無しさん2015/09/07(月) 22:04:59.68ID:9ljv166A
なんでそこで聞かないの?コメント欄あるでしょ?
0017デフォルトの名無しさん2015/09/07(月) 22:27:39.09ID:M58p8v+F
その記事の頃とサイトの構造が変わったんだろう。
サイトの構造の変化を調べて動くように直すだけ。
その手間が嫌なら(あるいは自力で解決できないなら)
スクレイピングなんてやるべきじゃない。
0018デフォルトの名無しさん2015/09/07(月) 22:28:21.93ID:LXZrJgTO
>>15
エラーは例外
XPathはchromeで抽出できるんだから勝手にやればいい
0019152015/09/08(火) 00:22:09.29ID:LVYNmHjh
>>16
レスにも含んでますが、同じ内容のコメントが数カ月前にあります。

>>17
これも最初に書いた通りですが、一応再確認してきました。
セレクタは#news_body > pで間違いありません。

>>18
あ、chromeで抽出して気づいたんですが、
XPathの方はidを二重引用符で囲んでなかったのが原因みたいです。失礼しました。

っていうかcssselect('body')でもxpath('//*')でも結果は同じなんですが、
このチュートリアルは正しいんですか?
0020デフォルトの名無しさん2015/09/08(火) 01:36:04.31ID:WpGjOpsu
CSSセレクタでは、#はidを、> は子要素を表すので、
#news_body > p で、
<div class="maintext" id="news_body">タグの子要素の<p>タグを表す

text_content()メソッドは、
そのタグ以下にある、すべてのテキストを取得するから、

root.cssselect('#news_body > p').text_content()
<id="news_body">タグの子要素の<p>タグの、テキストを取得する

このソースコードは、そのサイトを書いた時点では、
正しく動作していたが、その後、
URL(テレ朝)のHTMLの内容が変わったのだろう

IEの開発者ツール(F12を押す)などで、
使われているタグを確かめながら、デバッグするべし。
それとHTML, CSSの基礎も勉強した方がよい
0021152015/09/08(火) 02:06:30.22ID:LVYNmHjh
>>20
CSSセレクタも開発者ツールから該当する要素のを引っ張ってきたんですが、
これって「#news_body > p」で示されているテキストですよね?

<div class="maintext" id="news_body">
<p> 安倍総理大臣は国会で、(略)
</p>
</div>

(09/08現在のテレ朝の記事から抜粋)
0022デフォルトの名無しさん2015/09/08(火) 02:26:01.65ID:WpGjOpsu
root.cssselect('#news_body > p').text_content()

これで取得できないの?
print文で、内容を見てみたら?

どの命令文でおかしくなるのか、
すべての文を、printしていくなど、
地道に順番に、デバッグしていくしかない
0023デフォルトの名無しさん2015/09/08(火) 02:54:38.44ID:G+naPLuH
>>21
"'list' object has no attribute 'text_content'"
っていうことは「リストオブジェクトにはtext_contentなんてメソッドはないよ」ってことだよね
print(type(root.cssselect('#news_body > p')))
してみると確かに
<type 'list'>
ってなってる
print(root.cssselect('#news_body > p'))
してみると
[<Element p at 0x101baeaf8>]
ってなってて、リストの中にlxmlのオブジェクトがひとつ入ってる

一方ネットで見かけたtext_contextの使用例をそのまま使わせてもらうけど
>>> p = lxml.html.fromstring(u'<p>はじめ<strong>注意</strong>おわり</p>')
>>> print p.text_content()
はじめ注意おわり
>>> print(type(p))
<class 'lxml.html.HtmlElement'>
>>> print(p)
<Element p at 0x10156b4c8>

この違いの原因をどこに見つけるかだよね
0024152015/09/08(火) 03:03:56.29ID:LVYNmHjh
obj = root
for attr in dir(obj):
if callable(getattr(obj, str(attr))):
print attr

ダンプ代わりにこれで最初に調べたときは、rootそのものはtext_contentを持ってますが、
root.cssselect(...)やroot.xpath(...)にはcountとかinsertとか一見配列のプロトタイプっぽいメソッドしかありませんでした。
rootも含めて、どれもprintすると<Element at なんたら>と表示されるのでエラーではなさそう……と悩んでいたんですが、
今さっき、それに[]が付いてたり付いてなかったりするのに気が付きました。
最初は飾りだと思って意識していなかったんですが、きっとリスト?を表す記号ですね。
root.cssselect('#news_body > p')[0].text_content() だと成功しました。
となるとやはりサンプルソースの書き間違いだったようです。
0025デフォルトの名無しさん2015/09/08(火) 03:23:05.25ID:WpGjOpsu
ああ、そういうことか、
list は、複数のオブジェクト(コンテナ)だから、
[0]で最初の要素を取れる

for で、全要素にもアクセスできる
0026デフォルトの名無しさん2015/09/08(火) 03:55:50.81ID:haPw6oSa
sshでリモートマシンにログインして
pyhton main.py
で実行しているのですが、sshでの接続が切れるとpythonスクリプト自体も止まってしまいます
これを回避する方法は無いのでしょうか
0027デフォルトの名無しさん2015/09/08(火) 05:10:52.55ID:WpGjOpsu
端末から起動したシェルスクリプトでも、
その端末を終了したら、そのシェルスクリプトも終了する

それは、端末が親プロセスになっていて、
端末から起動したシェルスクリプトが子プロセスだから、
親プロセスが終了すると、子プロセスも終了してしまう

つまり、親亀こけたら、子亀もこける

たぶん、それと同じで、sshが親プロセスで、
そこから起動したパイソンスクリプトが、
子プロセスになっているのだろう

sshにプロセス間の親子関係を切る、
オプションは無いかね?
0028デフォルトの名無しさん2015/09/08(火) 06:27:30.26ID:uyQlx19r
>>26
$ nohup python main.py &
って実行するのが一番手っ取り早い方法かな。
処理に時間がかかるから実行しといてログアウトしたいだけで、
サーバみたいに常時起動しときたいわけじゃないよね?
0029デフォルトの名無しさん2015/09/08(火) 08:36:07.19ID:LW57ufqa
tmuxとかscreenとかの仮想端末使うって手もある
0030デフォルトの名無しさん2015/09/08(火) 22:10:29.11ID:QvAVInF0
urllib.request.urlopenにtimeoutを指定しても効かないんですが何故ですか?
0031デフォルトの名無しさん2015/09/08(火) 22:40:41.81ID:XiTHgORh
手元ではtimeout利いてるけど
・環境の問題
・コードの問題
・君の問題
さあどれだ
0032デフォルトの名無しさん2015/09/08(火) 23:32:13.22ID:UfRS9P/L
requestsを使う
0033デフォルトの名無しさん2015/09/09(水) 07:24:03.26ID:WpKwoiR8
おれいっつもatコマンド使ってたわ
0034デフォルトの名無しさん2015/09/09(水) 08:04:42.08ID:kfehcr7u
>>32
正解
pythonで最も覚える価値がないのがurlopenと一連のハンドラ
唯一認められる価値は
下手くそな抽象化がどれだけユーザビリティを損ねるかという教材になる、その一点だけ
0035デフォルトの名無しさん2015/09/09(水) 13:31:50.70ID:n+TAyw9X
sqlite3にjsonの値をそのまま入れて使いたいのですが

クォートとかもそのまま入れるのに、どのような処理を入れたら良いでしょうか

keyとjson文字列のテーブルを作って使いたいと思っています。
0036デフォルトの名無しさん2015/09/09(水) 13:48:05.45ID:cLSarNth
そのままjson形式で保存すればいいけど何が問題あるの?
0037デフォルトの名無しさん2015/09/09(水) 14:05:57.50ID:9XF7xRTw
>>28
ありがとうございます!nohupかなりいいです
pythonだけじゃなくてlinux/unix系の勉強もしていこうと思います
0038デフォルトの名無しさん2015/09/09(水) 14:28:09.61ID:kfehcr7u
>>35
まさかクエリの組み立てでどうエスケープするか聞いているのか?
それなら手作業でやるな
プレースホルダ使え

というかkey-valueならshelve使えば?
dictと互換だから下手な考え起こさなくて済むし
0039デフォルトの名無しさん2015/09/09(水) 17:10:08.25ID:n+TAyw9X
>>38
はいエスケープさせたいのですが、華麗にやる方法はないかと思いききました。

sqlite3よりshelveのほうが便利ですか?2.7で標準なら使ってみようかと思います。
テーブル作成とかも必要なさそうですし
0040デフォルトの名無しさん2015/09/09(水) 17:12:53.82ID:n+TAyw9X
ん?もしかしてshelveならエスケープする必要もない?
0041デフォルトの名無しさん2015/09/09(水) 18:31:31.79ID:z0dYPSvJ
shelveすばらしい
0042デフォルトの名無しさん2015/09/09(水) 18:51:47.12ID:kfehcr7u
エスケープの必要どころか
pickleできる型なら何を突っ込んでもいい
0043デフォルトの名無しさん2015/09/09(水) 22:23:26.23ID:pI2H1r76
テキストファイルを一行ずつ読み
改行のみの行を判定するコードを書いています
ifの条件部分の line[0] っていうのがやや泥臭く感じるんですけど
望ましい書き方があるなら教えてください

with open('fileread.txt','r') as f:
for line in f:
if line[0] == '\n':
print('改行のみ')
else:
print(line)
0044デフォルトの名無しさん2015/09/09(水) 22:34:07.87ID:gU9sAx8f
こっちの方が良いんでない?

with open('fileread.txt') as f:
 for line in f:
  line = line.strip()
  if not line:
   print('空行です。')
  else:
   print(line)
0045デフォルトの名無しさん2015/09/10(木) 02:47:46.05ID:OdK7pfyp
あくまで'¥n'を使うとしても
line == '¥n'でいいように見える
0046デフォルトの名無しさん2015/09/10(木) 05:48:45.58ID:nqOdWtep
ありがとうございます
聞いて良かった
自己流は恐い
0047デフォルトの名無しさん2015/09/10(木) 20:22:09.14ID:KmumwdfO
失礼します.
YosemiteでJupyterというのを入れたのですが、
線とか円とかテキスト程度の簡単な2Dをやるモジュール
(独立ウィンドウがた立ち上がるのではなくブラウザ内に出るような)
があれば使いたいのですがデフォルトで何が入ってるのかわからず
ivisualやmatplotlibもオーバースペックなので何かよいのがあれば
教えていただけないでしょうか。
0048デフォルトの名無しさん2015/09/10(木) 21:37:03.46ID:VH/iB+Cq
processing使えば?
0049デフォルトの名無しさん2015/09/10(木) 22:25:58.69ID:t/qMnqiP
tkinterでいいんじゃない?
標準で付いてくるし
0050デフォルトの名無しさん2015/09/11(金) 00:07:02.78ID:VUYanu//
ありがとうございます.
Tkintetはブラウザ内にブラウザのセルとおなじようにたてつづけに出力できるのでしょうか。
0051デフォルトの名無しさん2015/09/11(金) 00:32:52.66ID:7w0dDVba
tkinterなら、turtle モジュールで、亀で遊べる
0052デフォルトの名無しさん2015/09/11(金) 01:10:41.50ID:lS37PnBX
>>50
tkinterをJupyterでブラウザ内に埋め込むとか聞いたことないなあ。
turtleの描画を埋め込むのはやってる人いるみたいだけど機能を拡張したIPython使ってるみたいだからあなたには敷居が高いんじゃないかな。

俺も前同じこと調べかけて放置してたんで改めて調べたけど、Pythonで気軽に使える2Dグラフィックスライブラリって意外にないね。JupyterのセルでJavaScriptも使えたらprocessing.jsとか使えるんだけど。

目的は何かな?グラフとかを描画するんだったらオーバースペックとか言わずmatplotlib使うのが一番いいんだけど。
jupyterにとってmatplotlibは不可分の一部と言っていいような存在だし、もちろんブラウザ内で表示できるしね。
いちおう図形の描画もできるみたいよ。テキストの描画は厳しそうだけど。
http://matplotlib.org/examples/shapes_and_collections/artist_reference.html
0053デフォルトの名無しさん2015/09/11(金) 01:18:21.77ID:WbJ+VPpl
標準入出力を用いた独自のコンソールを持つソフトを、pythonのスクリプトから制御するにはどうすればいいのでしょうか?

例(標準入出力で制御する必要がありませんが)
mysqlを起動し、mysqlのコンソールでshow databases;コマンドを実行したい

自分の考えたコード
>import commands
>return = commands.getoutput("mysql -u aaa -p bbb")・・・・ちゃんと起動する
>return = commands.getoutput("show databases;")・・・・上手くいかない!
0054デフォルトの名無しさん2015/09/11(金) 02:31:50.28ID:KoJW2sNo
標準入力をパイプしてコマンドをbytesで流し込む
>>> import subprocess
>>> args = ['mysql', '-u', 'aaa', '-p', 'bbb']
>>> proc = subprocess.Popen(args, stdin=subprocess.PIPE)
>>> proc.communicate(b'show database;')
>>> proc.returncode
0055デフォルトの名無しさん2015/09/11(金) 03:48:03.80ID:WbJ+VPpl
>>54
ありがとうございます
何時間も分からなくて困っていたので本当に助かりました
0056デフォルトの名無しさん2015/09/11(金) 12:59:26.56ID:+0sGE2Zy
list1 = [
{"b":1},
{"c":3},
{"a":2},
]
これを数字で昇順にソートする方法を教えてください
0057デフォルトの名無しさん2015/09/11(金) 13:07:18.29ID:Eesd1ubK
python2
list1.sort(key=lambda d:d.values()[0])

python3
list1.sort(key=lambda d:list(d.values())[0])
0058デフォルトの名無しさん2015/09/11(金) 20:27:40.65ID:KFEb2g7z
hoge.shape=(3, x, y, z)
という4次元numpy.arrayから
要素数3の1次元numpy.arrayのlistを内包表記で得るには、
どうしたらいいのでしょうか?
0059デフォルトの名無しさん2015/09/11(金) 22:55:06.94ID:VUYanu//
>jupyterにとってmatplotlibは不可分の一部と言っていいような存在だし、もちろんブラウザ内で表示できるしね。

有難うございます。ちょっとやってみます。
0060デフォルトの名無しさん2015/09/12(土) 00:38:03.31ID:Y0QkDcDu
2次元のリスト内包表記なら、

vec = [[1,2,3],[4,5,6]]
res = [num for elem in vec for num in elem]

print(res)
#=> [1, 2, 3, 4, 5, 6]

[num (for elem in vec) (for num in elem)]

まず最初の( )が実行されて、
次に次の( )が実行されて、それが先頭のnumに入る
0061デフォルトの名無しさん2015/09/12(土) 09:33:30.79ID:ZU+GZSdr
Python3ってsortメソッド無くならなかったっけ?
>>57
0062デフォルトの名無しさん2015/09/12(土) 09:35:13.10ID:ypYaVLmK
は?(威圧)
0063デフォルトの名無しさん2015/09/12(土) 09:53:07.89ID:Y0QkDcDu
vec = [[1,'a','b','c'],[2,'x','y','z']]
not_num = [elem[1:] for elem in vec]

print(not_num)
#=> [['a', 'b', 'c'], ['x', 'y', 'z']]

elem[1:]は、インデックス1〜最後の要素までを、取り出す


ちなみに質問とは関係ないが、
Pythonには、インデックス0以外の要素を取り出す、
elem[not 0]のような表記はあるのか?
0064デフォルトの名無しさん2015/09/12(土) 09:55:20.42ID:J6pfiWXJ
>>60
>>> import numpy as np
>>> a = np.mgrid[0:4,0:5,0:6]
>>> a.shape
(3,4,5,6)
>>> b = [x for z in a for y in z for x in y]
>>> len(b)
60
>>> b[0].shape
(6,)

となりまして、望む結果は得られませんでした。
0065デフォルトの名無しさん2015/09/12(土) 10:06:26.07ID:J6pfiWXJ
>>> b.shape
(3,4,5,6)
>>> b = [a[:,i,j,k] for i in range(a.shape[1]) for j in range(a.shape[2]) for k in range(a.shape[3]) ]

これでとりあえず望んだ結果が得られました。
これと等価な結果が得られるコードをもっとシンプルで高速に書けませんか?
0066デフォルトの名無しさん2015/09/12(土) 16:04:27.55ID:EVegchqE
>>65
list(a.transpose(1,2,3,0).reshape(a.strides[1],a.shape[0]))
これで良いと思うけど内包表記じゃないといかんの?
0067デフォルトの名無しさん2015/09/12(土) 22:44:40.18ID:J6pfiWXJ
>>66
実際は
b = [ myfunc(a[:,i,j,k]) for i in range(a.shape[1]) for j in range(a.shape[2]) for k in range(a.shape[3])]
という処理をやりたいんです。
次にようなループはpythonでは遅いと評判ですので、
内包表記だと速いと聞いて試したいと考えています。
for k in range(a.shape[3]):
for j in range(a.shape[2]):
for i in range(a.shape[1]):
b.append(myfunc(a[:,i,j,k]))
0068デフォルトの名無しさん2015/09/12(土) 22:54:47.78ID:ypYaVLmK
普通は内包表記なんかよりvectorizeを使うと思う
0069デフォルトの名無しさん2015/09/12(土) 23:46:18.84ID:EVegchqE
>>67
内包表記のが速いといっても多少効率的なくらいです
素直にnumpyに用意されている物を使いましょう
…ところでそれだと順序が違うんですが…たぶんこの辺のどちらか?
b = np.apply_along_axis(myfunc, 1, a.T.reshape(-1, a.shape[0]))
b = np.apply_along_axis(myfunc, 1, np.rollaxis(a, 0, a.ndim).reshape(-1, a.shape[0]))
0070デフォルトの名無しさん2015/09/13(日) 00:11:21.34ID:3BsRFwaL
内包表記では、List.append()の、

呼び出しコストを、軽減できる
0071デフォルトの名無しさん2015/09/13(日) 00:21:30.45ID:gbWUhzZU
forも内包も所詮スクリプト言語の速度範疇だし俺はあんまり気にしないな
行数増えるのが嫌なときはとことん内包で書くぐらいで、
そもそも内包で事足りるぐらいの処理ならforでもあんま変わらないし

それに比べてnumpyはそれこそ処理の桁が2~4個違う
ユニバーサル関数とかでちゃんと書ければの話だけど、難しいよね…まだ慣れなくてささっと書けない
0072デフォルトの名無しさん2015/09/13(日) 00:53:31.30ID:tUSkN1m6
ここってpycharmの質問もあり?
0073デフォルトの名無しさん2015/09/13(日) 00:53:55.70ID:0P9tp9Bt
>>69
ありがとうございます。
b = np.apply_along_axis(myfunc, 1, a.T.reshape(-1, a.shape[0]))
これを使うのが妥当そうですね。
np.apply_along_axisの存在は知りませんでした。
.Tと.reshapeの組み合わせもまったく考えてませんでした。

あとはargsの扱いがわかればいろいろできそうです。
ありがとうございました。
0074デフォルトの名無しさん2015/09/13(日) 01:27:57.78ID:gbWUhzZU
自分使ってますよ
バージョン2と古いけど
0075デフォルトの名無しさん2015/09/13(日) 11:25:09.70ID:8QNbCh1F
pycharmって使いやすいの?
0076デフォルトの名無しさん2015/09/13(日) 12:31:02.93ID:wQ68FTxr
Python3.5のWindows版はコンパイラがVC++2015なのね
2010からずいぶん飛んだな
0077デフォルトの名無しさん2015/09/13(日) 14:37:01.47ID:PRQtmn5E
numpyのitemsizeがイマイチわかりません
なんで値が1つしか含まれないで8バイトを返すんですか?

from numpy import arange

a = arange(1).reshape(1, 1)
print(a.itemsize)
0078デフォルトの名無しさん2015/09/13(日) 14:53:19.49ID:+IlipKsH
エラーが起きた箇所のソースコードのパスを確認する方法ありませんか?
0079デフォルトの名無しさん2015/09/13(日) 15:43:23.53ID:wQ68FTxr
>>77
そのnumpyarrayの要素の型が8バイトなのでは(int64とか)
書いてて思ったけど、きみ、itemsizeの意味を勘違いしてないか?

>>78
お前のプログラムに書いてあるtry~exceptを全部外せ
0080デフォルトの名無しさん2015/09/13(日) 16:30:01.00ID:tUSkN1m6
>>75
・メソッド書く時にselfを自動で書いてくれる
・docstringにsphinx形式のコメント入れとくと、型を推論して、「.」後に候補出してくれたり、型のミスマッチで警告出しくれたり
・virtualenv対応

でも重い
0081デフォルトの名無しさん2015/09/13(日) 16:51:27.34ID:7OO4CwOO
>・docstringにsphinx形式のコメント入れとくと、型を推論して、「.」後に候補出してくれたり、型のミスマッチで警告出しくれたり
これは確かに便利。他のIDEでもあるのかもしれないけど
おかげでdocstringやannotationちゃんと書く癖がついた
0082デフォルトの名無しさん2015/09/13(日) 21:24:08.38ID:gbWUhzZU
numpyって型指定しないとint64かfloat64になるよ
0083デフォルトの名無しさん2015/09/14(月) 07:26:20.71ID:FgrvG3+J
3.5はXP不可か。。。
0084デフォルトの名無しさん2015/09/14(月) 07:31:56.77ID:tOm8GBtx
oh goodnews!

ドザーと言うだけでアレなのに
XPなんて救済しようがないもんね
0085デフォルトの名無しさん2015/09/14(月) 07:45:37.19ID:pXK5pJDJ
XP不可は困る
まだまだ使うんだ
0086デフォルトの名無しさん2015/09/14(月) 08:09:20.42ID:tOm8GBtx
2015にもプラットフォームツールセットv140_xpがあるのにxp対応しないってことは
0087デフォルトの名無しさん2015/09/14(月) 08:28:56.52ID:tOm8GBtx
* いい加減に死ね貧乏人という意思表示
* v140_xpで使えない機能を使っているためやむを得ず

1番なら自分でビルドすればまだ使える
2番だと自分で該当部分のコードを(副作用が出ないように)取り除かなければならない

ActiveStateはxp対応すると思うから待ってれば?
ただ商用利用するならライセンス買わないとだけど
xp更新するよりは安いだろうたぶん
0088デフォルトの名無しさん2015/09/14(月) 10:35:57.05ID:mCvgVIil
xp使ってるようなカスは開発陣の邪魔でしか無い
さっさと別の言語にいってくれ
0089デフォルトの名無しさん2015/09/14(月) 12:54:41.78ID:9k/gGGx4
多分、pythonのバージョン3以上向けに書かれててエンコードエラーみたいなのでるんだけど、どうしたらいいんですかね


Traceback (most recent call last):
File "2kyoku.py", line 72, in <module>
text_pn.pn(s)
File "/home/fujiiiiiiiiiiiiiiiiiiiiiiiiiiiin/2kyoku.py", line 64, in pn
print('{0}\npoint = {1}'.format(s, avg_point))
File "/usr/lib/python2.7/codecs.py", line 351, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
0090デフォルトの名無しさん2015/09/14(月) 13:00:21.02ID:9k/gGGx4
多分、pythonのバージョン3以上向けに書かれててエンコードエラーみたいなのでるんだけど、どうしたらいいんですかね


Traceback (most recent call last):
File "2kyoku.py", line 72, in <module>
text_pn.pn(s)
File "/home/fujiiiiiiiiiiiiiiiiiiiiiiiiiiiin/2kyoku.py", line 64, in pn
print('{0}\npoint = {1}'.format(s, avg_point))
File "/usr/lib/python2.7/codecs.py", line 351, in write
data, consumed = self.encode(object, self.errors)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)
0091デフォルトの名無しさん2015/09/14(月) 14:31:52.59ID:tOm8GBtx
python3で使えよ
0092デフォルトの名無しさん2015/09/14(月) 14:35:45.43ID:tOm8GBtx
エラー自体は

print('{0}\npoint = {1}'.format(s, avg_point))

の行でsにunicodeが入ってるせいで、
asciiへの自動エンコードが働いてエラーになってる
ここにstrが入るように使用側のコードを修正すればいい

できない場合はやはりpython3を使え
それも出来ないならお前は力不足だ
すべてを諦めろ
0093デフォルトの名無しさん2015/09/14(月) 14:39:00.35ID:tOm8GBtx
ライブラリ側を修正していいのなら

print(u'{0}\npoint = {1}'.format(s, avg_point))

とする手もあるが、おそらくこれは
sys.stdout内でエラーを発生させるので、更にもう一工夫要る
0094デフォルトの名無しさん2015/09/14(月) 15:21:15.73ID:6vR7q2Zm
2to3使っても駄目だったのですか?
0095デフォルトの名無しさん2015/09/14(月) 16:59:49.83ID:c4/y2sTK
webにあるpythonファイルをそのままimportはさすがに無理ですかね
githubでテスト実装されてるのをちょこっと試したい時に
import http:~~.py
のようにできたら便利だなあと
0096デフォルトの名無しさん2015/09/14(月) 17:13:10.00ID:NxoyOIVd
それは危険過ぎて、二の句が継げない
0097デフォルトの名無しさん2015/09/14(月) 17:19:37.00ID:tOm8GBtx
昔このスレで書いたような気がするが
module loaderを実装すればgithubのモジュールをimpoptすること自体は不可能じゃない
君の希望しているシンタックスでは無理だがな
0098デフォルトの名無しさん2015/09/14(月) 20:18:49.71ID:cXb4kIiN
Cのfwriteに相当するpythonのルーチンってありませんか?
0099デフォルトの名無しさん2015/09/14(月) 20:30:56.48ID:6vR7q2Zm
>>> import os
>>> f = open("a.bin", "wb")
>>> f.fileno()
3
>>> os.write(f.fileno(), "hello world!".encode())
12
>>> f.close()

$ cat ./a.bin
hello world!%
0100デフォルトの名無しさん2015/09/14(月) 21:04:32.25ID:cXb4kIiN
>>99
fwriteはポインタとサイズ、数を指定できますが
型とサイズ、要素数はどう処理しますか?
0101デフォルトの名無しさん2015/09/14(月) 21:22:17.80ID:6vR7q2Zm
違うんだ。
bytes書き込みたいって話かと思ったのに。
f.write()
も意味ないっぽいな。

型とサイズ、要素数は、
type(obj), obj.__sizeof__(), len(obj)
で頑張るんですね。

一体全体何をしたくて、fwrite相当の関数を知りたいんです?
ないと思う。が答えだけど。

どうしても、fwrite相当が欲しいなら、C 拡張書いた方が賢いよ。
絶対。
0102デフォルトの名無しさん2015/09/15(火) 01:48:36.14ID:OASNotDF
ご指導ありがとうございます。
sの中身のテキストをutf-8にしていたので元に戻したのですが以下の様なエラーが出て
戸惑っているんですがわかりますか?


Traceback (most recent call last):
File "/home/fujiiiiiiiiiiiiiiiiiiiiiiiiiiiin/2kyoku.py", line 72, in <module>
text_pn.pn(s)
File "/home/fujiiiiiiiiiiiiiiiiiiiiiiiiiiiin/2kyoku.py", line 45, in pn
for line in self.mecab_list(s):
File "/home/fujiiiiiiiiiiiiiiiiiiiiiiiiiiiin/2kyoku.py", line 40, in mecab_list
s = self.m.parse(s)
File "/usr/local/lib/python2.7/dist-packages/mecab_python-0.996-py2.7-linux-x86_64.egg/MeCab.py", line 281, in parse
def parse(self, *args): return _MeCab.Tagger_parse(self, *args)
NotImplementedError: Wrong number or type of arguments for overloaded function 'Tagger_parse'.
Possible C/C++ prototypes are:
MeCab::Tagger::parse(MeCab::Model const &,MeCab::Lattice *)
MeCab::Tagger::parse(MeCab::Lattice *) const
MeCab::Tagger::parse(char const *)
0103デフォルトの名無しさん2015/09/15(火) 02:37:49.32ID:8nVq9fpM
argsにunicodeを食わせてるせいで
C++の関数呼び出し時にwchar_t*になってる
で、オーバーロードの解決に失敗してる

何が起きているか自体は一目で分かるが
これはこのまま続けでも時間の無駄だろ
0104デフォルトの名無しさん2015/09/15(火) 02:45:20.70ID:8nVq9fpM
だいたい初心者がいきなりこんなことに手を出すなよ
登山初体験で雪山チャレンジしてるような感じだ
そんなに死にたいのか?
0105デフォルトの名無しさん2015/09/15(火) 03:59:55.46ID:Yag5SRe5
>>104
君は病院行ったほうがいいよ
昨日から酷すぎ
0106デフォルトの名無しさん2015/09/15(火) 04:09:06.42ID:XNHa+TUY
u"日本".encode('utf-8')

Unicode文字列型から、
ByteStr(8bit文字列)へ、encodeすれば?
0107デフォルトの名無しさん2015/09/15(火) 08:37:54.75ID:tzZBlg8k
>>105
ゴミ虫が人間様に一丁前の口を聞くんじゃねえ
中央線に突き落とすぞ
0108デフォルトの名無しさん2015/09/15(火) 09:57:27.75ID:8nVq9fpM
俺は他人をこき下ろすのは大好きだが
そんな通報されそうな発言しねえよ
不用意な奴
0109デフォルトの名無しさん2015/09/15(火) 10:17:50.34ID:mcggslDF
>>107
関係ない人が巻き込まれる恐れがあるためJR東日本に念の為連絡しました
0110デフォルトの名無しさん2015/09/15(火) 20:55:08.78ID:J59fOGwQ
初めてのpython(ver2.71、3版P475)を読んでいるのですが、再帰インポートの動きがわかりません。

#rrecur1.py
x = 1            #�@
import recur2       #�A
y = 2            #�B

#recur2.py
from recur1 import x  #�C
from recur2 import y  #�D

A:対話型シェルで import recur1 を実行すると �@�A�C�Dとなり、�Dでエラー ←なんとなくわかる
  (�Cの後に�@�Aと�Bが実行されないのは、recur1のオブジェクトが不完全でも既にあるから?)
B:対話型シェルで import recur2 を実行すると �C�@�A�B�Dとなる ←怪しい
  (A同様、�Aはオブジェクトがあるので、�C�@�A�C�Dにはならない?)
C:python recur1.pyを実行すると �@�A�C�@�A�B�Dとなる ←ものすごく怪しい
  (�@�Aは2回実行され、�Aの2回めは�Cでオブジェクトができるからそのまま?)
D:python recur2.pyを実行すると �C�@�A(�C)�Dとなり、�DでAと同じエラー ←だいぶ怪しい

理解が間違ってる、足りなさそうな所を指摘してもらえると助かります。
0111デフォルトの名無しさん2015/09/15(火) 20:58:49.38ID:XjGjWAl2
機種依存文字か何か知らないが読めない文字を貼るな
0112デフォルトの名無しさん2015/09/15(火) 21:15:56.27ID:Jw4sxLAi
これで試して、出力をご自分でご確認下さい。

#rrecur1.py
print("0 in recur1.py")
x = 1            #�@
print("1 in recur1.py")
import recur2       #�A
print("2 in recur1.py")
y = 2            #�B

#recur2.py
print("0 in recur2.py")
from recur1 import x  #�C
print("1 in recur2.py")
from recur2 import y  #�D
print("2 in recur2.py")
0113デフォルトの名無しさん2015/09/15(火) 21:40:23.07ID:J59fOGwQ
>>112
確認しました。
最初からprint文挟めばよかったですね、ありがとうございます。
0114デフォルトの名無しさん2015/09/15(火) 22:33:38.30ID:RlUnFo2M
>>69
>np.apply_along_axis
これじゃ全然速くなんなかったよ
バーカバーカ
0115デフォルトの名無しさん2015/09/15(火) 22:39:17.01ID:8nVq9fpM
apply_along_axisが速いなんて一言も言ってないレスに安価つけて何言ってんだヌケサク
0116デフォルトの名無しさん2015/09/16(水) 02:29:05.06ID:aiEEwWsO
プログラミング未経験者です。
学校にjavaの授業しかありません。
javaを学ぶとpythonを理解しやすくなったりしますか?
逆に混乱するでしょうか?
0117デフォルトの名無しさん2015/09/16(水) 03:23:01.55ID:2Yj1o+46
違いはあるから混乱や困惑、勘違いは当前のこと
そこで挫けるか、違いを理解して乗り越えるかが分かれ道

でJava→Pythonのハードルは低くはないと思う
初見のインパクトとして、インデント構文が人を選ぶ曲者
0118デフォルトの名無しさん2015/09/16(水) 06:33:05.21ID:Aossrj8U
>>116
基本的にプログラミング言語はひとつ覚えたら次はめっちゃ楽になるよ
条件分岐とかループなどの基礎的な概念はほぼ変わらないからね

ただ理想はPythonからのJavaかなあ
自分は色々やってきたけど初学者に最適なメジャー言語としてPythonはかなり優秀だと思う
JavaはPythonと違って重厚なんで、ちょっとした事をやるにしてもコードを書く量が半端なく多い
普通はIDEっていう支援ソフトを使う言語だけど授業では全部手打ちだろうし「むきー!」ってなりそう
0119デフォルトの名無しさん2015/09/16(水) 15:13:00.75ID:BdvYksDF
俺はJavaを初めにやるべきだと思うな
このスレの住人はJavaでもC#でも何でもできるから最初はPythonでいいと思ってるかもしれないけど・・・・
普通の人は飽きて一つしか習得しない可能性もあるわけで、それを考慮したらJAVAをやるべきだろう
0120デフォルトの名無しさん2015/09/16(水) 15:46:15.28ID:X4VHrapa
その辺の最終的な問題もあるよな、Pythonは学習用にも汎用としても悪くない思うけど
やはりC/C++、C#、Javaなんかの方が向いてる事もある、しかし覚える必須事項も多い
とりあえず言語を通じて原理を学ぶなら、まずは取っ付き易いPythonだけってなるけど

自分は簡便なPHPからPythonに乗り換えC#を経て速度に取り付かれC++/x86まで逝ったが
Pythonは文法が少なく抑えられている一方、トリック的にプロパティを実装していたり
self引数など内部的にどう作用しているのかも教えてくれる、学習用には最適だと思う
0121スッキリ厨2015/09/16(水) 15:54:45.41ID:9fL6Ueyi
漏れは、短時間で読める、簡単な本をすすめる。
以下が漏れの定番

まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読む
たのしいRuby 第4版、2013
みんなのPython 第3版

オブジェクト指向を学ぶと、
C#, JavaScriptも理解しやすいし、
Ruby,Pythonは、お互いに影響を受けているから、
同時に学ぶと、共通点が多い
0122デフォルトの名無しさん2015/09/16(水) 19:56:17.21ID:yg+sr1CP
Javaってint()をわざわざInteger.parseInt()って書く基地外言語だからなあ
誰がどう設計するとあんなことになるのだろう
0123デフォルトの名無しさん2015/09/16(水) 20:38:43.26ID:6/Mj4kG1
こんな時代にプログラミングを本で勉強するバカって
まだ生き残ってるんだな
0124デフォルトの名無しさん2015/09/16(水) 23:18:03.83ID:CBuGCxGj
俺も本で勉強してるよー(^-^)/
0125デフォルトの名無しさん2015/09/16(水) 23:21:41.06ID:awIPWlQA
は? 本で学んで何がバカなんだよ
あと、何が悪い?
0126デフォルトの名無しさん2015/09/16(水) 23:23:14.44ID:9fL6Ueyi
文字列 → 整数を、Rubyでは、String.to_i。
"123".to_i
と、Stringのメソッドだが、

Javaでは、Integer.parseInt()と、
Integerのメソッドに、違和感を覚える
0127デフォルトの名無しさん2015/09/16(水) 23:55:42.75ID:jnCVqJ3t
ノウハウ系の本は読むかな
奥村先生のアルゴリズム入門以外で入門とかいてある本は買ったことがない
0128デフォルトの名無しさん2015/09/17(木) 00:38:19.54ID:196gWGO2
>>116です
まずはjavaを学んで、同一事項もできればpythonで勉強しようと思います。
皆さん回答ありがとうございました!
0129デフォルトの名無しさん2015/09/17(木) 08:15:31.21ID:SBwAu0s0
本は情報がすぐ古くなるので
0130デフォルトの名無しさん2015/09/17(木) 14:55:21.13ID:ku8KDabs
>>89です。
あの後、うまくいかないのpython3から実行してみたのですが、うまくいきませんでした。
内容としては、http://naokiwatanabe.blogspot.jp/2015/02/judge-positive-vs-negative-of-text.html
のサイトに載っているソースコードを実行したいのですが、、、
エラー内容は
/usr/lib/python3/dist-packages/numpy/core/_methods.py:55: RuntimeWarning: Mean of empty slice.
warnings.warn("Mean of empty slice.", RuntimeWarning)
とでています。
python2から実行すると、いろいろ試したのですが文字コードのエラーで実行できませんでした。
知識不足というのは重々承知なのですが解決方法を教えてもらえると幸いです。
0131デフォルトの名無しさん2015/09/17(木) 14:59:40.79ID:ku8KDabs
pn_ja.dicの中身はこんな感じです。
http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic
0132デフォルトの名無しさん2015/09/17(木) 16:46:48.82ID:iMuV3iOg
>>130
2to3.pyはもう実行済みなの?

実行済みという前提でだけど、
48: points_of_s = np.array(points_of_s)
49: avg_point = np.mean(points_of_s)

numpy 使ってるのってここの行だけでしょ?
48行目のpoints_of_s に何が入っているかを確かめて、
meanを計算するfunctionを自分で実装すれば?

つnumpy.mean
http://docs.scipy.org/doc/numpy/reference/generated/numpy.mean.html
0133デフォルトの名無しさん2015/09/17(木) 16:48:53.78ID:iMuV3iOg
>>132の続き
>>130
なんか、points_of_s が空で文句言ってそうだけど。

多分、40行目の行が上手くいってない
ここもword, i['kanji'], i['yomi'] の中身をprintで見てみるんだね
40: if word == i['kanji'] or word == i['yomi']:
0134デフォルトの名無しさん2015/09/17(木) 19:26:17.87ID:JmTKZ5WP
cygwin上のutf-8の漢字入力が処理できないので
漢字が混ざっても大丈夫にして欲しい
English onlyならば動作する

エラー文によればは以下の部分に間違いがある

for line in exif_out:
  key_and_value = line.partition(':')
  if key_and_value[0].strip() == "File Name":
    name.append(key_and_value[2].strip())
  if key_and_value[0].strip() == "Duration":
    play_time.append(key_and_value[2].strip())
0135デフォルトの名無しさん2015/09/17(木) 19:51:59.85ID:JmTKZ5WP
python に問題はなかったので取り下げます
pythonスクリプトに接続する前のコマンドの一つが shift-jisで文字を返してきたことが原因で
nkf -w を挟むことで修正無く正常に動作しました
0136デフォルトの名無しさん2015/09/17(木) 20:15:35.92ID:CxP5vej7
許さん
タイガーアッパーカットの刑だ
0137デフォルトの名無しさん2015/09/18(金) 20:10:21.07ID:STdqpX+z
MATLABをずーっと使ってたんですが、簡単にPythonに乗り換えられますか?(´・ω・`)
0138デフォルトの名無しさん2015/09/18(金) 20:48:38.78ID:tgrC/XXe
はい、scilabとPython3の組み合わせでPythonまでお越し下さい。
0139デフォルトの名無しさん2015/09/18(金) 21:00:47.36ID:iv+WFVpk
py2appもしくはcx_freezeでOS Xの配布ファイルを作ろうとしてるのですが、
ある依存モジュールの*.jsonファイルがlibrary.zipアーカイブ下に置かれてしまって、openができなくなってしまいます。
なんとかこれを回避する手段はありませんか?
0140デフォルトの名無しさん2015/09/19(土) 14:16:36.35ID:zRSvfcVs
スクリプトが長くなってきたので、分割したくなってきたのですが、

importを使うとスコープでグローバルを拾ってくれないので困っていますが
こういう時どうするのが普通でしょうか
0141デフォルトの名無しさん2015/09/19(土) 14:22:56.25ID:EhBxb2se
良い機会と捉えて、global変数をなくす設計を考える。
0142デフォルトの名無しさん2015/09/19(土) 14:37:57.81ID:zRSvfcVs
グローバルにある一つのオブジェクト中に必要なものを全部入れてあるので
引数で渡してやれば、いちょう解決はするんですが、
これだと必ずその引数を付けなくてはいけなくて、シンプルではないと感じています。
0143デフォルトの名無しさん2015/09/19(土) 14:59:47.59ID:c6kn+dRM
python未経験、大学の情報系学科2年でCの経験ありです。
pythonの参考書で迷っています。
『みんなのPython』『プログラミング超初心者が初心者になるためのPython入門』
『Pythonスタートブック』
の3つなのですが、どれがおすすめでしょうか。
また、他にもおすすめがあったら教えていただきたいです。
0144デフォルトの名無しさん2015/09/19(土) 15:12:57.41ID:9MmBL6K2
>>143
プログラミング経験あるならみんなのPython。他のは初歩すぎると思う
あとこのサイト読むだけで十分だったりもする
http://diveintopython3-ja.rdy.jp/index.html
0145デフォルトの名無しさん2015/09/19(土) 15:51:56.79ID:rqtLrpco
>>140
分割したいほど長くなった時点で、もはやスクリプト言語を使う利点は失われている
今後の保守を考えて、Javaなど大規模プロジェクトに対応できる言語へ移行すべきだ
0146デフォルトの名無しさん2015/09/19(土) 15:55:05.11ID:zRSvfcVs
>>145
pythonがやりたいことの条件なのでしょうがありません

クラス作って__init__の引数で渡して使うことにしようと思います。
0147デフォルトの名無しさん2015/09/19(土) 15:57:04.47ID:IG+tqa6Q
著者の自演きめえ
0148デフォルトの名無しさん2015/09/19(土) 16:24:59.93ID:zRSvfcVs
クラスのselfって呪文、短くできないでしょうか
0149デフォルトの名無しさん2015/09/19(土) 17:27:54.66ID:KApqc+U6
できるよ
0150デフォルトの名無しさん2015/09/19(土) 18:14:50.96ID:iv6k6MQz
教えてください、よろしくお願いします
0151デフォルトの名無しさん2015/09/19(土) 19:25:03.83ID:vrCh8asH
もうselfって打ちたくないです…
秘匿するの以外はぜんぶインスタンス変数でいいじゃないか
0152デフォルトの名無しさん2015/09/19(土) 19:57:54.93ID:WfpuSZ1G
>>143
俺も144さんと同意見です。
『みんなのPython』と『Dive into Python日本語版』。
あとは公式のドキュメントを調べる癖をつけとくといいと思います。
http://docs.python.jp/3.4/
本当は『初めてのPython』もおすすめしたいところだけど、いかんせん内容が古いので…。
でもちゃんとPython2とPython3の違いを勉強した後でなら、挑戦する価値はあると思います。特に情報系の学科の学生さんなら。
Python2とPython3の違いは上記2冊にも説明があります。
0153デフォルトの名無しさん2015/09/19(土) 20:09:50.25ID:jbS3DGgI
宣伝きめえ
0154デフォルトの名無しさん2015/09/19(土) 20:52:50.71ID:vrCh8asH
>>152
>あとは公式のドキュメントを調べる癖をつけとくといいと思います。
これ以外必要ない。
0155デフォルトの名無しさん2015/09/19(土) 22:47:02.90ID:3d9rW/SJ
最近の大学生って頭悪いんだね
別に煽ってるつもりはないよ
率直な感想
0156デフォルトの名無しさん2015/09/20(日) 00:55:26.23ID:hPx7plFD
http://jun.2chan.net/31/
0157デフォルトの名無しさん2015/09/20(日) 01:28:28.89ID:Nh5TR33w
>最近の大学生って頭悪いんだね

古代エジプトの遺跡にも、そう書いてあったらしいね( ・ω・)y─┛〜〜
0158デフォルトの名無しさん2015/09/20(日) 01:37:06.96ID:NJwlDPWn
>>157
それガセネタだってば
まだ信じてる人いたんだ
0159デフォルトの名無しさん2015/09/20(日) 02:14:36.98ID:Itn3Bpzp
>>158
もっと古いけどな。
せっかくのレスだが、ポイントはそこじゃない。
0160スッキリ厨2015/09/20(日) 03:31:11.34ID:vBjKt0IW
宣伝じゃなくて、漏れが編み出した、
プログラミング最速メソッドでも、
この3冊をこの順番で読むよ

まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読む
たのしいRuby 第4版、2013
みんなのPython 第3版
0161デフォルトの名無しさん2015/09/20(日) 04:37:13.68ID:iy8xPLn/
>>145
わけわかんない
こういう戯言を初心者は真に受けないように
0162デフォルトの名無しさん2015/09/20(日) 11:10:20.99ID:c50Q0ipw
>>143
>>152
英語が苦にならないなら、"初めてのパイソン"の原著 Learning Python もお薦めします。原著は2013年に第5版が出ています。改定版を重ねているのは、売れている証。
Learning Python では、mutable と imutable の違いや、変数は参照であるといったあたりの説明が丁寧で良いです。みんなのPython や、codecademy の python コースでは、これらの説明が不十分だったように思います。

m = 1
n = m
m = 2
print(m, n) # 2 1
a = [1]
b = a
c = a[:]
a[0] = 2
print(a, b, c) # [2], [2], [1]
a = [3]
print(a, b, c) # [3], [2], [1]
0163デフォルトの名無しさん2015/09/20(日) 11:46:23.95ID:zfBSqDqL
辞書アクセスについて質問です。

設定ファイルにかかれているキーとなる文字列のみを読み取って
辞書(値の中にさらに辞書やリストが定義されています)アクセスを行いたいのですがどのようなコードを書けば実現可能でしょうか。
0164デフォルトの名無しさん2015/09/20(日) 11:57:36.33ID:UBP8lCYf
ほいさ。

$ cat tech163.py
if __name__ == "__main__":
d = {"a": 1, "b": 2}
with open("tech163-keys.txt") as f:
for line in f:
key = line.strip()
value = d[key]
print("key={}, value={}".format(key, value))

$ cat tech163-keys.txt
b
a
b
b
b
a
0165デフォルトの名無しさん2015/09/20(日) 12:04:06.29ID:vBjKt0IW
辞書の中にさらに、辞書やリストが入っているのは、
何階層ネストするかなど、複雑だから難しい

XML,JSONなど、ライブラリがある、
既成のデータ構造を使うべき
0166デフォルトの名無しさん2015/09/21(月) 14:36:46.18ID:3JRegwp7
numpy.ctypeslib.load_libraryってなんのためにあるんですか?
ctypes.cdll.LoadLibraryじゃダメなケースが?
0167デフォルトの名無しさん2015/09/21(月) 16:15:55.92ID:QY3cLhl9
ソース読むと普通にreturn ctypes.cdll[libpath]を返してるな
ということは, そこまでの過程に意味があるということ
0168デフォルトの名無しさん2015/09/21(月) 16:58:58.71ID:o0er9rYI
意味ある過程を解説しろという事
0169デフォルトの名無しさん2015/09/21(月) 17:18:00.57ID:QY3cLhl9
いやずら
0170デフォルトの名無しさん2015/09/21(月) 17:43:45.00ID:o0er9rYI
シッタカすんなずら
0171デフォルトの名無しさん2015/09/21(月) 17:52:42.15ID:QY3cLhl9
ふええ
0172デフォルトの名無しさん2015/09/22(火) 22:51:54.28ID:w0LnM0Y7
初歩的な質問で申し訳ないです。Yahooにログインしたいのですがうまくいきません
import requests
payload = {'username':'user_id','passwd':'user_pass'}
r = requests.post('https://login.yahoo.co.jp/config/login?',data=payload)
これで実行したんですがエラーログも表示されず困っております。助けてください<(_ _)>
0173デフォルトの名無しさん2015/09/22(火) 22:56:03.50ID:w0LnM0Y7
補足です
print rとしたら<Response[200]>と返ってきました。ggっても出てこないんですが
これって何を表しているのでしょうか?ログイン自体は成功していませんが成功と捕らえても良いのでしょうか?
0174デフォルトの名無しさん2015/09/22(火) 23:31:22.08ID:0pZRAY1l
Response[200]は、OKのこと

>payload = {'username':'user_id','passwd':'user_pass'}
payload = {'username':'本当のユーザー名',
'passwd':'本当のパスワード'}

そこに本当のユーザー名・パスワードを入れないと、
ログインできない

でも、それらをそのまま、暗号化せずに送るのかな?
暗号化しなかったら、危険な気もする
0175デフォルトの名無しさん2015/09/22(火) 23:35:00.63ID:+lAdjAEI
>>173
200はHTTPステータスコードというものでこの場合は「成功」
ただしこの場合の成功とはログインに成功じゃなくてたんにそのページヘのアクセスが成功したというだけ
一般的にログイン失敗の場合は40*系が返ってくることが多い

r.textなどを見たらエラー文というかブラウザに表示されてるはずの文がでるはずです
「現在お使いのブラウザの設定ではログインできません。クッキーの設定を確認し、クッキーを有効にしてください。」
なぜそれでログインできると思ったのか、どこの情報を参考にしたのかわからないけども、それはログインを試みてすらもいない

たんにpostでusernameとpasswordを送ってログインできる仕様になってない
ログインページにアクセス、ログインフォームを読み取り、そこに値を入力、ログインボタンを押す、ページ遷移後の処理
という一連の流れでやる必要があるので最初はわりと敷居高いです

ログイン後のページ遷移等を処理したい場合はそれ専用のライブラリ使ったほうがいいと思います
自分はmechanicalsoupとかでログインしてます
あんまり日本語の情報無いからおすすめしづらいけどpython3系対応って少ないんだよね
元気があったら後でログインできるそのまんまのコード書くかも 眠いから書かないかも
0176デフォルトの名無しさん2015/09/22(火) 23:39:07.37ID:w0LnM0Y7
>>174
回答ありがとうございます
自分はただログインができればそれで良いです。
>>175
回答ありがとうございます
書いていただければ参考にさせてもらいます。勿論書いてもらわなくても大丈夫です!
0177デフォルトの名無しさん2015/09/22(火) 23:39:44.08ID:w0LnM0Y7
まずは自力でがんばってみます ノシ
0178デフォルトの名無しさん2015/09/22(火) 23:42:41.04ID:+lAdjAEI
ちなみにこれじゃダメなんでしょうか?
https://gist.github.com/romichi/5567611
自分はmechanize入れてないから試せないけど
こういうのはログイン画面の仕様が変わるとダメになるので2年前の記事だとそのまんま使えないかも
0179デフォルトの名無しさん2015/09/22(火) 23:44:38.87ID:0pZRAY1l
>payload = {'username':'user_id','passwd':'user_pass'}

それにそのサイトのHTMLを分析してから、やっているのか?
'username','passwd'も正しいのか?

それに、クエリ文字列は、その2つだけなのか?

本・サイトに書いてある通りに、
プログラミングしても動かないよ
0180デフォルトの名無しさん2015/09/22(火) 23:54:17.74ID:+lAdjAEI
178のやってみたけど成功した

なんとなくusernameとpasswordをpostしたらログインできるんじゃ?って最初思うのはしょうがない気が
実際は人間と同じようにページにアクセスしてフォームの場所を特定してusername等を打ち込んで…という泥臭いコードを書く必要が
0181デフォルトの名無しさん2015/09/22(火) 23:58:50.34ID:w0LnM0Y7
>>178
ありがとうございます。参考にさせてもらいます
>>179
そこらへんはしっかりとソースを見てやっています
>>180
ほうほう なるほど。

初心者に付き合っていただいて有難うございました、では失礼します<(_ _)>
0182デフォルトの名無しさん2015/09/23(水) 08:34:14.30ID:DOrhv1Zg
>>181
wireshark でパケット見た方が早いと思う
0183デフォルトの名無しさん2015/09/23(水) 12:08:54.96ID:bddtCb1z
入れ子のリストで、中のリストごと削除する事って可能ですか?

[["a","b"],["c","d"],["e","f"],["g","h"]]
↓
[["a","b"],["e","f"],["g","h"]]

としたいんですが、delやpopで消しても以下のように空要素が残ってしまいます
[["a","b"],[],["e","f"],["g","h"]]
0184デフォルトの名無しさん2015/09/23(水) 12:37:13.95ID:gS0ZJsKt
>>> L = [["a","b"],["c","d"],["e","f"],["g","h"]]
>>> L.remove(L[1])
>>> L
[['a', 'b'], ['e', 'f'], ['g', 'h']]
0185デフォルトの名無しさん2015/09/23(水) 12:43:08.41ID:YxG82JoQ
>>> outer = [[1, 2], [3, 4], [5, 6], [7, 8]]
>>> del outer[1]
>>> outer
[[1, 2], [5, 6], [7, 8]]
>>> outer.pop()
[7, 8]
>>> outer
[[1, 2], [5, 6]]
0186デフォルトの名無しさん2015/09/23(水) 13:02:38.50ID:bddtCb1z
>>184-185
できましたありがとうございます.
0187デフォルトの名無しさん2015/09/23(水) 18:05:24.51ID:mJPpIkis
画像から文字の部分を認識させたいのですが、なにかいい方法があったら教えていただきたいです
0188デフォルトの名無しさん2015/09/23(水) 19:38:01.53ID:fW96BSwR
バージョン2.7です。

辞書をリストにしたものから、あるキーを持つものだけを拾い出して、リストにしたいんです。

具体的には
mylist = [{'a':12, 'b':8},{a':5, 'b':19}]
とあるものから、キーがaのものだけを取って、(12, 5)という配列を作りたいのです。

map(lambda x:x[キー用の変数]), mylist)
もしくは、
map(lambda x:x.get(キー用の変数)), mylist)
と書いてみたのですが、どちらも
None
という値が返ってきます。

もう半日これで悩んでいます。
どなたかお詳しい方、教えてください。
0189デフォルトの名無しさん2015/09/23(水) 20:00:36.15ID:2XlOP4Gj
>>188
>>> mylist = [{'a':12, 'b':8},{'a':5, 'b':19}]
>>> [d["a"] for d in mylist]
[12, 5]

どの辞書にも"a"がある前提だけど
0190デフォルトの名無しさん2015/09/23(水) 20:03:59.03ID:YxG82JoQ
mapでできる
>>188のmapについてはカッコが合ってないから何もいえない

>>> L = [{'a': 12, 'b': 8}, {'a': 5, 'b': 19}]
>>> map(lambda d: d['a'], L)
[12, 5]
>>> map(lambda d: d['a'], filter(lambda d: 'a' in d, L))
[12, 5]
>>> [d['a'] for d in L if 'a' in d]
[12, 5]
0191デフォルトの名無しさん2015/09/23(水) 20:04:10.98ID:2XlOP4Gj
>>188

あと,map使いたいんだったら
>>> list(map(lambda x:x["a"], mylist))
[12, 5]
0192デフォルトの名無しさん2015/09/23(水) 20:33:24.83ID:IBQotI2X
日時をマイクロ秒まで取る方法を教えてください
0193デフォルトの名無しさん2015/09/23(水) 20:46:03.49ID:fW96BSwR
お二方、こんなに短い時間のうちに、どうもありがとうございます。
190様の、一番最初のコードが、自分の意図したものでした。
括弧の間違いなどは直して、再度書いてみたのですが、動きません。

(問題の切り分けのために簡略化してしまったのですが、実際は

def mapping(self, key_hensu):
map(lambda d: d[key_hensu], self.list)
とし、

これに基づいて作ったインスタンスの
self.listに辞書を含む配列を入れた後、

newlist = hug_ instance.mapping('a')
Print newlist

としても、noneが帰ってくるのです)

教えていただいた式で、コードを組み直してみようと思いますが、動かないのはmap以外の部分の問題かもしれません…
0194デフォルトの名無しさん2015/09/23(水) 21:18:05.32ID:VUzU7jGH
ひょっとしてmappingからreturnしてないとかいうオチじゃなかったりしない
ちなみに特定メンバー抽出だけならlambdaを書くより
operatorモジュールに複数指定も可能な専用クラスがあったりするよ

>>192
time.time()#POSIXタイムスタンプ(float)
datetime.datetime.now()#datetimeインスタンス(microsecond)
とかそういうのではなく?
0195デフォルトの名無しさん2015/09/23(水) 22:35:52.54ID:fW96BSwR
>>194
お恥ずかしいかぎりです。
Return文がありませんでした。

pythonで本格的にプログラムを組むのが初めてだっので、お騒がせいたしました。

ちなみに、return文は、この場合、MAPの結果を変数に格納し、return その変数、
とやるのでいいのでしょうか。

このメソッドを多用する場合、変数は、プライベート変数にした方がいいですか?
0196デフォルトの名無しさん2015/09/24(木) 01:08:23.75ID:1RjIiiuu
mylist = [ {"a":12 , "b":8} , {"a":5 , "b":19} ]
L = []
for m in mylist:
 for key , value in m.items():
  if key == "a":
   L.append(value)
これが当然読み書きできた上で、もっとシンプルにor高速にという人ならいいんだけどさ
いきなりワンライナー目指そうとして何時間も時間使っちゃうもはもったいない気がする
mapとか内包とかlambda使って長時間悩むよりforでシンプルにやってもいいと思うんだよね
まあ多分これは書けた上で短く洗練したいという人だと思われるので余計なお世話かもしれんが一応
0197デフォルトの名無しさん2015/09/24(木) 03:21:21.13ID:KIwTvfAf
関数のIn/Outを確認するのは、
WhiteBox Test の基本だよ

rtn = func()
func(out)

戻り値・引数のどちらで、結果を返しても、
それらをチェックするのは当然
0198デフォルトの名無しさん2015/09/24(木) 09:07:42.02ID:oyhXYwpr
シリアル通信をしたいんだけど、

hoge = serial.Serial('/dev/ttyACM0', 9600, timeout = 0.1)

で文法エラー吐くんだけど、どんな理由が考えられる?
import serialはしてある
0199デフォルトの名無しさん2015/09/24(木) 09:19:04.50ID:XLoPykDH
serialという名前の関係ないモジュールをimportしているとか

真っ先に文法エラーの内容を貼るべきだったな
0200デフォルトの名無しさん2015/09/24(木) 17:56:16.23ID:7vafZHZr
コーンフレークか
0201デフォルトの名無しさん2015/09/24(木) 18:02:55.63ID:7vafZHZr
>>194
それはミリ秒までしか取れなくね
0202デフォルトの名無しさん2015/09/24(木) 18:18:35.45ID:O2om78VJ
PHPでいうmicrotimeみたいなものが使いたいんです
http://php.net/manual/ja/function.microtime.php
0203デフォルトの名無しさん2015/09/24(木) 19:20:18.31ID:3LIOVMIk
>>201
>>194は小数点以下6桁表示だからmicro秒まで取ってるよ
0204デフォルトの名無しさん2015/09/24(木) 20:52:58.68ID:2Vopl4xt
Windows版2系はミリ秒精度っぽいねぇ…しかし本当に必要なのは日時なのか?
パフォーマンスカウンタならtime.perf_counter()とか、time.clock()で代用とかだけど
0205デフォルトの名無しさん2015/09/25(金) 01:12:24.27ID:tuRmYaRB
>>198
全角文字を使っているとか、
SerialのSが、小文字の間違いとか、

timeout = 0.1 を、辞書にするとか、
' 'で囲むとか、0.1だけにするとか

まあ、エラーメッセージで検索すれば?
0206デフォルトの名無しさん2015/09/25(金) 04:44:01.92ID:tuRmYaRB
>>198
「timeout = 0.1」のように、引数の中で、= を使って、
代入されているものを、デフォルト引数といって、
省略可能な引数のこと

引数を省略すると、0.1を渡したのと同じ扱いになる。
この2つは、どちらも同じ
hoge = serial.Serial('/dev/ttyACM0', 9600)
hoge = serial.Serial('/dev/ttyACM0', 9600, 0.1)

もちろん引数を省略せず、任意の数値を渡してもよい
hoge = serial.Serial('/dev/ttyACM0', 9600, 0.2)

それより、この本でも読んでから、プログラミングしなよ
「みんなのPython 第3版」
0207デフォルトの名無しさん2015/09/25(金) 07:40:45.23ID:OdLQBYES
著者のステマきめえ
0208デフォルトの名無しさん2015/09/25(金) 08:12:39.72ID:EM2/ouOX
>>206
> デフォルト引数といって、

名前つき引数だろ
ちゃんと覚えておかないと恥ずかしいぞ
0209デフォルトの名無しさん2015/09/25(金) 08:31:28.74ID:rmMgHZ3n
キーワード引数だろ
Language Referenceにくらいは目を通して喋ってるのか?
もちろん英語版な
日本語版は公式でない上に訳がゴミなのは常識だぞ
0210デフォルトの名無しさん2015/09/25(金) 08:32:15.00ID:rmMgHZ3n
https://docs.python.org/2.7/reference/compound_stmts.html#def
まだ読んでなくて読めるなら読んでおきたまえ
0211デフォルトの名無しさん2015/09/25(金) 08:38:33.98ID:rmMgHZ3n
あと、キーワード引数は呼び出し時に特定の引数を指定する方法を指すのであって
def文中にある parameter = expression 形式の引数の正しい呼び方は “default parameter values” だ
混同しないように

あとステマ野郎は死ね
ここ数日しつこいぞお前
0212デフォルトの名無しさん2015/09/25(金) 09:35:38.22ID:pvZibk7r
Listクラスを継承して、リストに色んな計算機能を持たせたAreiというサブクラスをつくりたいです。

class Arei(list):

def __init__(self):
list.__init__(self)

def goukei(self):
return sum(self)

#sumは元からあるわけですが、例ということで。


このクラスは
t = Arei()
t.append(1)
t.append(2)
print t.goukei()

とすると、ちゃんと3を返します。

ただ、自分としては、リストクラスの代わりにこれを使っていきたいので、

u = Arei()
u = [1,2]
print u.goukei()
みたいにuの中身を指定したいのですが、
Attribute errorで、リストオブジェクトはそんなメソッド知らないよ、と言われてしまいます。
areiではなく、リストオブジェクトになってしまっているようです。

areiの中身は[ ]で代入したいのですが、何かいい方法はないでしょうか。
0213デフォルトの名無しさん2015/09/25(金) 10:54:47.14ID:KIr5Cth6
しつこい宣伝野郎の本はamazonで悪評価つけんぞ
0214デフォルトの名無しさん2015/09/25(金) 11:01:44.67ID:rmMgHZ3n
Twitter(やってたら)荒らすぞ
0215デフォルトの名無しさん2015/09/25(金) 11:58:30.93ID:0lz/blt5
>>212
pythonの代入は文であって式ではないので動作を変更するのは不可能です
「何かいい方法」はありません

pythonのコレクションは大抵イテレータを受け取るようになっていますので
そのスタイルに従うなら

t = Arei([1, 2])

などと書くことになるでしょう
くどいようですが、あなたの希望は叶いませんのであきらめてください
0216デフォルトの名無しさん2015/09/25(金) 17:46:42.43ID:KRQogbtQ
u = [1,2]
みたいには出来ないです。
諦めてください。

[] を使いたいのであれば、
u.extend([1, 2])
としてください。
0217デフォルトの名無しさん2015/09/25(金) 18:38:53.08ID:APxH2mFV
numpyではa[1,...]みたいにしてアクセスできますけど
この...っていうのはPythonのなんて機能なんですか?
0218デフォルトの名無しさん2015/09/25(金) 18:43:08.84ID:BcpKoy3C
>>203
気付いてるひともいるみたいだけど
123.456000
って感じで6桁あっても下3桁が常に000なんで
実質ミリ秒なんですよ
0219デフォルトの名無しさん2015/09/25(金) 19:29:40.05ID:PrLLHSVR
>>217
...はellipsisと呼ぶ
その文法自体は拡張スライス構文(extended slicing syntax)と呼ぶ
0220デフォルトの名無しさん2015/09/25(金) 19:42:42.20ID:ktFzwPFO
>>218
それはtime.time()の実装しだい、例を挙げると
win版2.7.9ではtime()の小数点以下は3桁だった
win版3.4.3では6桁計算されてる
0221デフォルトの名無しさん2015/09/25(金) 19:55:16.04ID:EAOTXXYi
そんな所で2を差別するとは
02222202015/09/25(金) 20:58:57.37ID:ktFzwPFO
いや、2.xの問題ではない
debian 8 jessieの2.7.9のtime.time()は小数点以下6桁でる
0223デフォルトの名無しさん2015/09/26(土) 00:10:21.83ID:bNSOOO19
pip install でいろいろとパッケージがインストールできないんですが
先輩方は出来てますか?
0224デフォルトの名無しさん2015/09/26(土) 00:14:31.09ID:uTIKCoPr
pythonのバージョンと
pipのバージョンと
OSと
インストールできなかったパッケージの一例を

書 い て ね
0225デフォルトの名無しさん2015/09/26(土) 00:19:25.04ID:bNSOOO19
windows 7
pip 7.1.2
python 2.7.10
です
0226デフォルトの名無しさん2015/09/26(土) 00:23:00.51ID:uTIKCoPr
何か足りないんだが
きみ、人の話を半分に聞いていると指摘されたことはないか?
0227デフォルトの名無しさん2015/09/26(土) 00:26:09.13ID:bNSOOO19
とりあえずあなたができてるのだけ教えて頂けますか?
0228デフォルトの名無しさん2015/09/26(土) 00:29:22.09ID:uTIKCoPr
知らねえよクソ雑魚虫
踏切に飛び込んで死ねや



…windowsでは基本的にC拡張を含むパッケージを
pipでpypiからインストールすることはできない
(コンパイル環境を整えればインストールできるが、かなり面倒)

下記などからコンパイル済みパッケージを入手し、pip install <ファイル名>とやってインストールする
http://www.lfd.uci.edu/~gohlke/pythonlibs/
0229デフォルトの名無しさん2015/09/26(土) 00:29:55.36ID:bNSOOO19
pip installできるかどうか自体を聞いてるから>>224の一部ははスルーしましたよ
ちなみに1番最初に書いた内容でわからないのでしたら無理に書き込みしなくてもいいんですよ?
0230デフォルトの名無しさん2015/09/26(土) 00:30:00.09ID:SlXJkQSm
んっと変数をリストにいやらしくぶち込みたいときって何使うのがいいんですかね
0231デフォルトの名無しさん2015/09/26(土) 00:31:21.58ID:uTIKCoPr
>>229
本当に期待を裏切らないなw
殺すぞチンカス
0232デフォルトの名無しさん2015/09/26(土) 00:53:44.20ID:VnXY6/gA
>>212
uには、Areiオブジェクトのインスタンスが入る
u = Arei()

uには、リストオブジェクトのインスタンスが入る
u = [1,2]

そもそも、最初にuに代入された、Areiオブジェクトは、
使われないオブジェクトになってしまって、
どこからも参照されていない

Pythonを基本から勉強すべし。
初心者用の本を読め
0233デフォルトの名無しさん2015/09/26(土) 01:11:01.94ID:IUg2r09A
書名を挙げてもいいのよ?
遠慮なさらずに。
罵倒されるかもしれないけど。
0234デフォルトの名無しさん2015/09/26(土) 01:22:48.90ID:ycKW7TV1
このスレでよく名前の出る本って実際どうなの
0235デフォルトの名無しさん2015/09/26(土) 01:40:34.00ID:VnXY6/gA
たのしいRuby 第4版、2013
みんなのPython 第3版

どちらも、いい本だよ

図書館では、「みんなの」は常に、
誰かが借りている状態だから、
何年も見たことはない
0236デフォルトの名無しさん2015/09/26(土) 08:22:07.31ID:uTIKCoPr
オライリーの奴は2冊ともあまり推奨しない
片方は簡潔すぎ片方はくどすぎ
0237デフォルトの名無しさん2015/09/26(土) 09:19:45.50ID:nnT9rfzZ
Rubyのオライリーのまっつが書いたのはいいんだけどな
あんな感じのがPythonには無い
0238デフォルトの名無しさん2015/09/26(土) 09:28:15.51ID:YULo0X4G
Pythonの和書なんて、書店の本棚一段くらいしかないだろ
悩んだり選んだりしてる暇があったら全部買って片っ端から読破すりゃいい
技術を学ぶのに金は惜しむな時間を惜しめ
0239デフォルトの名無しさん2015/09/26(土) 09:37:35.10ID:K7CQzQ4M
初めてのPythonでもやってろ
0240デフォルトの名無しさん2015/09/26(土) 09:52:23.29ID:sS2VkfxB
>>212
ここの回答者は馬鹿が多いから、
そんなのに目を付けられたら運が悪かったと思ってね

複数の要素を追加したい時、u.append()ばかり何行も書くのは嫌だから、
[]を使って、複数の要素を一行で追加したいという事だろうけど、
それなら、>>216で書いたように、u.extend()を使えば、
[]の表記を使って複数の要素を追加する事が出来ます。
0241デフォルトの名無しさん2015/09/26(土) 10:17:36.27ID:uTIKCoPr
微妙に元の質問から飛躍している気がするなあ
本人が戻ってこないからどうしようもないけど
0242デフォルトの名無しさん2015/09/26(土) 13:58:51.24ID:SlXJkQSm
因みにLinuxだったらコマンドだけでパッケージインストールできるからおぬぬめするよ
初心者さん
0243デフォルトの名無しさん2015/09/26(土) 15:55:00.04ID:/Er1ur9S
唐突に何の話してんだこいつ
0244デフォルトの名無しさん2015/09/26(土) 16:02:42.71ID:T6SMaGA2
ID:bNSOOO19の話でしょ。
環境より別の問題を抱えてそうだけど。
主に頭に。
0245デフォルトの名無しさん2015/09/26(土) 16:28:15.94ID:ARPouMbC
その質問鯖が落ちてるかどうかって質問じゃないの?
それに噛み付いた奴も頭悪いけど。
0246デフォルトの名無しさん2015/09/26(土) 16:33:54.02ID:PeXvMpg9
>その質問鯖が落ちてるかどうかって質問じゃないの?

お前の予想なんか聞いてないから無理に書き込みしなくてもいいんですよ。
断定できるようになったらどうぞ。
0247デフォルトの名無しさん2015/09/26(土) 16:41:56.09ID:uTIKCoPr
当事者でもないのに何を煽ってんだか
0248デフォルトの名無しさん2015/09/26(土) 17:58:48.50ID:A0xbZm86
初心者スレで威張ってる奴もその程度だ
0249デフォルトの名無しさん2015/09/26(土) 19:16:59.29ID:z8a3JaoE
pip使うためにLinux使うやつもバカだと思うが
0250デフォルトの名無しさん2015/09/26(土) 19:47:50.72ID:nnT9rfzZ
>>240
あんた質問の意味わかってんの?
リストを拡張したclassでも完全にリストっぽく扱いたいって話なんだけど
0251デフォルトの名無しさん2015/09/26(土) 20:01:43.67ID:jMWgOOyZ
Python人口が増えたお陰か揚げ足鳥とか喧嘩腰の解凍しか出来ないカスが増えたな
PHPスレみたいになってきた
0252デフォルトの名無しさん2015/09/26(土) 21:58:24.07ID:6OIyVqiT
そうそう
加えて一歩引いた目線で意識高く冷静に事を傍観する俺様系クズとかな
0253デフォルトの名無しさん2015/09/26(土) 23:01:17.56ID:uTIKCoPr
251は定期レスだよ
半年に一回くらいは同じ内容のレスを見るね
0254デフォルトの名無しさん2015/09/26(土) 23:23:51.88ID:P25DxxnJ
馬鹿には無理とpassが短くて好き
0255デフォルトの名無しさん2015/09/27(日) 10:32:38.05ID:ChKmlAhY
お前らは黙って質問に答えてりゃいいんだよ
0256デフォルトの名無しさん2015/09/27(日) 10:58:22.61ID:8A5jeRhu
1~3年くらい前のWin32APIスレのように,
知らないなら黙っててください. ウザイだけです」
の応酬で埋め尽くされるのも時間の問題か
0257デフォルトの名無しさん2015/09/27(日) 11:08:50.48ID:Oa1I2Bnn
答えるから状況確認の質問には正確に応答しろよ
(バージョンは? 表示されてるエラーを貼れ etc)
素人の判断力で勝手に端折るな
0258デフォルトの名無しさん2015/09/27(日) 12:13:27.45ID:ChKmlAhY
俺をあの頭唐澤と一緒にすんなや
0259デフォルトの名無しさん2015/09/27(日) 17:11:01.07ID:OFhEpgzS
黙って答えるの難しそう。
0260デフォルトの名無しさん2015/09/27(日) 17:50:14.04ID:8A5jeRhu
(このように回答するのです)
0261デフォルトの名無しさん2015/09/27(日) 18:04:52.67ID:V6V0Y/p4
Pythonが国内でメジャーにならないからみんな苛立ってんのさ
自分以外のPythonユーザーに出会うことなんてまずないからな
0262デフォルトの名無しさん2015/09/27(日) 18:13:58.17ID:8A5jeRhu
(カラコロ民までPython使ってるとは思わなんだ)
0263デフォルトの名無しさん2015/09/27(日) 18:27:22.29ID:v7AofSm8
django 1.8が無料で使えるクラウドがあれば流行る
railsが盛り上がったのはherokuのお陰
0264デフォルトの名無しさん2015/09/27(日) 18:39:32.12ID:8A5jeRhu
(herokuみたいに料金体系変更した途端
フリーライダーにdisられるのは嫌だろう)
0265デフォルトの名無しさん2015/09/27(日) 21:03:25.98ID:JhPkHi9i
virtualenvで仮想環境を切り替える時ってdeactivateを実行してから別の仮想環境に切り替えないと何かトラブルになりますか?
0266デフォルトの名無しさん2015/09/27(日) 21:19:21.14ID:8A5jeRhu
(activeの中で最初にdeactivateを実行してるはず…)
0267デフォルトの名無しさん2015/09/28(月) 10:43:08.25ID:0RjOK4Zp
>>261
それな

プログラマでもpythonなにそれ?っていうのが日本人には多い
0268デフォルトの名無しさん2015/09/28(月) 10:43:41.72ID:0RjOK4Zp
>>263
GAEとは何だったのか
0269デフォルトの名無しさん2015/09/28(月) 13:43:06.22ID:JfTylyW8
スレ立て失敗
やっぱりocnってクソだわ
0270デフォルトの名無しさん2015/09/28(月) 14:52:33.76ID:izcdLHq/
LinuxとWindowsではPythonでの開発環境に差はある?
今まで基本的には開発はlinux派だったんだけど、iTunesとか他のソフトを使いながら出来ないからWindows環境に興味を持ってる
フレームワークはDjango、DBはMySQLを使おうと思ってる

PHP、MySQL、ApacheのLAMP環境は結構WindowsとcentOSでは差があったけれど
0271デフォルトの名無しさん2015/09/28(月) 14:55:29.22ID:JfTylyW8
WindowsでVirtualBoxでも使えばいいんでは…
0272デフォルトの名無しさん2015/09/28(月) 15:31:14.44ID:izcdLHq/
>>271
使った事ないんだけど、重くならないの?
以前VMWare使ってた時は、便利と思ったけど個人使用にはオーバースペックすぎたw

ってか皆どんな開発環境でやってるの?
俺はcentOSでLinuxなんだけど、macはまだしも、Windowsの人も多いのかな?
結構、関連ソフト入れに苦労しそうな気がするけど
0273デフォルトの名無しさん2015/09/28(月) 15:42:48.17ID:d6SLnFcK
重いとかて何を気にしてのことなの?
開発だけならギリギリのパフォーマンスみたいなのは関係ないだろうし…
テキストエディタだけならWinがなれてるとか?
統合開発環境みたいなのが欲しいてこと?
0274デフォルトの名無しさん2015/09/28(月) 15:45:06.76ID:dlMXkm1Y
windowsをサポートしていないライブラリ使わないならwindowsでもいいんじゃないっすか
おれはgunicornを使いたいからlinuxを選んだだけ
0275デフォルトの名無しさん2015/09/28(月) 16:01:44.58ID:izcdLHq/
>>273
個人的にコンピューターの動作が遅いのは苛々するんよ
例えばEclipseを起動させる、同時に画像処理ソフトを起動させるとか
ソフトウェアでの仮想環境ってことはCPUやメモリのリソースも使うだろうし

Linuxだけだと、他にExcelでの仕事やAdobe系を呼び出す際に再起動しなくちゃいけないもので
今デュアルブートでやってるから
でもWindowsで開発環境をもしできたら再起動いらずに楽かなと
まぁLinux環境には敵わないだろうけれども
0276デフォルトの名無しさん2015/09/28(月) 16:04:58.41ID:izcdLHq/
ちなみに今挑戦したsetuptools, pipからのDjangoインストールは、
import django
でinvalid syntaxエラーが出た
めんどくさいなぁ...
0277デフォルトの名無しさん2015/09/28(月) 16:05:51.54ID:d6SLnFcK
開発をやってるのに今時デュアルブート?
2,3台は常時稼働しておくのが普通じゃないのか?

#今現在、4台を自分専用に稼働中、ディスプレイも3台あるよ?
0278デフォルトの名無しさん2015/09/28(月) 16:07:12.31ID:izcdLHq/
>>277
暫くプログラミングから離れてたのよ
0279デフォルトの名無しさん2015/09/28(月) 16:07:36.37ID:s7G6tMwD
>>275

> まぁLinux環境には敵わないだろうけれども

答え出てるじゃん
0280デフォルトの名無しさん2015/09/28(月) 16:13:44.68ID:izcdLHq/
今度surface pro 4買おうと思って、じゃぁWindows環境で試してみるかと思ったのよ
持ち運び便利そうだからどこでも出来るな、と
なんかWindowsに慣れていないせいか、Djangoの件もエラーの詳細が分かりにくい
環境構築はほんとWindowsはめんどくさい気がする

ここの人達は流石にWindows環境の人はいないか
0281デフォルトの名無しさん2015/09/28(月) 16:23:21.76ID:s7G6tMwD
基本的にエディタあればどんな環境でもコーディングできるんだから
好きなのにすりゃいいと思うよ

まさかSurfaceで(本番環境として)django動かす訳じゃないんだろ?
0282デフォルトの名無しさん2015/09/28(月) 16:50:55.17ID:dlMXkm1Y
仕事としてないのに見え張るなよ
0283デフォルトの名無しさん2015/09/28(月) 20:32:49.45ID:91/ACm3S
>>275
> 個人的にコンピューターの動作が遅いのは苛々するんよ

とか言ってる奴が

> 今デュアルブートでやってるから

ってネタか余程の間抜けにしか見えない…
0284デフォルトの名無しさん2015/09/28(月) 20:54:33.35ID:EuxVMsYV
仕事をしているような人が聞くレベルの質問じゃねえな
0285デフォルトの名無しさん2015/09/28(月) 21:00:24.89ID:OmBgfqlE
動作のもたつきとデュアルブートの煩雑さは別の問題だろ
デュアルブートの煩雑さを解消するためにWindows1本にしたいが重くならないか心配だって言ってんだからまったく矛盾はない
0286デフォルトの名無しさん2015/09/28(月) 21:02:13.54ID:EuxVMsYV
>surface pro 4買おうと思って

こういうやつだしな
0287デフォルトの名無しさん2015/09/28(月) 21:07:00.43ID:JfTylyW8
疲れた
2時間も遅れて来るなよクソックソッ

重くなるに決まってるが、許容できるかどうかは本人次第だろう
嫌なら我慢してデュアルブート続けるか、意味不明なエラーと死ぬまでつきあってろ
0288デフォルトの名無しさん2015/09/28(月) 21:11:04.78ID:OmBgfqlE
重くならないかっていうのは仮想マシンの話の流れか
そこは訂正
0289デフォルトの名無しさん2015/09/29(火) 10:34:31.22ID:5DFpZmVK
最近気づいたこと
・PythonでWebサイトを作るな
・コマンドラインツールや機械学習でのみPythonを使うべき
0290デフォルトの名無しさん2015/09/29(火) 10:48:20.13ID:9FBYnxt5
CGIがどんな言語や仕組みかって事を気にする人?
そんな事気にする前にバグを直せよ…
0291デフォルトの名無しさん2015/09/29(火) 12:02:07.30ID:5DFpZmVK
CGIwwwwwww今時CGIはねえわ
0292デフォルトの名無しさん2015/09/29(火) 12:52:29.49ID:qVFuDZbI
芝は心の贅肉
0293デフォルトの名無しさん2015/09/29(火) 14:05:42.97ID:Up7l2XRn
>>289
最近全く同じこと思ったわ
0294デフォルトの名無しさん2015/09/29(火) 16:19:17.26ID:9FBYnxt5
むう、コマンドラインツールとか言ってるから、それと対応するWeb用のPythonという
前提でCGIという単語を敢えて使ったんだが…
>>299 は自分が書いたことを覚えていないのだろうか?
それともWSGIはゲートウェイインターフェイスではないと言い張る為だろうか?
変な奴の考える事は謎だ…
0295デフォルトの名無しさん2015/09/29(火) 16:30:36.57ID:qVFuDZbI
オトコの未練は醜い
0296デフォルトの名無しさん2015/09/29(火) 17:03:47.09ID:9Cv+9YBr
コマンドラインツールから何故CGIが出てくるのか謎杉・・・
CGI==WGSIと考えてるところも理解できない・・・
ちょっとググって間違った知識を植え付けられたか
0297デフォルトの名無しさん2015/09/29(火) 17:17:36.56ID:kWYiG2HY
コマンドラインの標準出力をブラウザに返せばCGIでしょ
0298デフォルトの名無しさん2015/09/29(火) 18:17:12.76ID:cUhHTA84
>>289
どうしてなんですか
Webに手を出すつもりはない初心者ですが
理由がちょっと気になるので参考までに教えてください
0299デフォルトの名無しさん2015/09/29(火) 20:55:53.94ID:tsybo51+
>>289
ちゃんとフレームワーク使ってる?
0300デフォルトの名無しさん2015/09/29(火) 20:56:26.09ID:r6tWHKV4
Python3でファイルを操作する方法を調べてるんだけど
機能があちこちのモジュールに分散していて覚えづらい
歴史を重ねながら拡張してきたからかな?

コピー
shutil.copyfile
shutil.copy
shutil.copy2

リネーム
os.rename
os.replace

移動
shutil.move

削除
os.remove
os.unlink

存在確認
os.access
os.path.exists

ファイル一覧取得
os.listdir
glob.glob
0301デフォルトの名無しさん2015/09/29(火) 22:10:12.45ID:Pz1/YzO9
ライブラリがたくさんあって困っているそこの奥さん!
実はオブジェクト指向で設計されたpathlibがあります!
今(3.4以降)ならなんと標準ライブラリに入っています!
0302デフォルトの名無しさん2015/09/29(火) 22:26:18.69ID:38981mSj
でもお高いんでしょう?
0303デフォルトの名無しさん2015/09/29(火) 22:36:08.60ID:Pz1/YzO9
argparseのようにOOP推しなのでPythonに不慣れな方でも使えます!

※個人の感想だけどpathlibはOOP全力なインターフェースで少々くどい
でもRubyからライブラリを移植するときに物凄く便利だった
0304デフォルトの名無しさん2015/09/29(火) 22:45:21.06ID:kWYiG2HY
一度使うと次々別のライブラリ勧められて、
いつの間にか引き返せなくなりそうですね

引き返すなら今のうち・・・
0305デフォルトの名無しさん2015/09/29(火) 22:45:59.57ID:xmaTIn9P
ほほう…「便利」の意味合いをもう少し具体的に知りたいね
0306デフォルトの名無しさん2015/09/29(火) 22:51:16.84ID:WyeI8SJL
>>297
知ったかしたいだけでしょ
スルーでいいと思うよ
0307デフォルトの名無しさん2015/09/29(火) 22:56:57.65ID:qVFuDZbI
pathlibはもう少し標準ライブラリのサポートをなんとかしてくれませんかね
strしないと使えないモジュール多すぎますよ
0308デフォルトの名無しさん2015/09/29(火) 22:57:22.54ID:R456hPpB
自演おつかれ
0309デフォルトの名無しさん2015/09/29(火) 23:10:32.65ID:Pz1/YzO9
>>305
RubyのPathnameっぽい、というか考え方が同じだからコピペ手直しで大体動く

>>307
open()への引数くらいは対応しろとよく思う
関数やオブジェクトを超えてやりとりすると必然的に他も強制されるから嫌い
0310デフォルトの名無しさん2015/09/30(水) 03:47:27.46ID:EX9JFA6F
>>289
Pythonには、標準ライブラリだけで動作する、
Bottle というWEBアプリ・フレームワークがある


でも、Rubyでsinatraなら、何も考えなくても、
これだけで、hello というWEBサイトが表示されるw

require 'sinatra'

get '/' do
'hello' // ここに処理を書く
end
0311デフォルトの名無しさん2015/09/30(水) 04:23:57.36ID:w7SPUet/
型の扱いがいいかげん言語ってこわくない?
初心者はなんとなく使えて便利だけど
遅かれ早かれ全部確認しないと気が済まなくなる。
0312デフォルトの名無しさん2015/09/30(水) 05:20:59.27ID:YJQV+FkT
次のうちエラーになってほしい式を選べ
1+"1"
1+True
1+1.1

全部選んだ人:演算子オーバーロードは許さないよ派(OCaml)
1+"1"を選んだ人:真偽値ってぶっちゃけ0か1でしょ派(C、Python)
1+"1"と1+Trueを選んだ人:式文の意味を重視するよ派(Haskell、Ruby)
1+Trueを選んだ人:真偽値リテラルはないよ派(Perl5)
0313デフォルトの名無しさん2015/09/30(水) 06:18:59.36ID:4e29nm1y
>>309
なるほどありがとう
0314デフォルトの名無しさん2015/09/30(水) 06:39:52.37ID:7Lys9n7q
>>304
童貞乙
0315デフォルトの名無しさん2015/09/30(水) 08:00:23.13ID:BGePcDbg
>>311
理解がめちゃくちゃだな
0316デフォルトの名無しさん2015/09/30(水) 08:02:02.39ID:BGePcDbg
>>275
色んな人に突っ込まれてるけど
君は読解力が無いねってよく言われない?
0317デフォルトの名無しさん2015/09/30(水) 08:02:52.14ID:9ZgwE0tZ
pathlibのドキュメントを調べてみた
メソッドにファイルのコピーと移動がないっぽい
パスを1つのオブジェクトとして扱うクラスがゆえに
コピー元、コピー先の2つを指定する必要のある機能は想定していないのか?
>>300の表がますますカオスになる…
0318デフォルトの名無しさん2015/09/30(水) 08:02:58.84ID:BGePcDbg
>>272
>以前VMWare使ってた時は、便利と思ったけど個人使用にはオーバースペックすぎたw

オーバースペックの意味を間違ってるね
まるっきり逆の意味で使ってるよ
0319デフォルトの名無しさん2015/09/30(水) 08:48:55.48ID:+AX0hMMC
Surface Pro4欲しい君を弄るのはそろそろヤメタマエ
0320デフォルトの名無しさん2015/09/30(水) 09:20:28.89ID:YJQV+FkT
>>317
rename()とreplace()で移動はある
コピーはない、バグトラッカーでの追加の要望には否定的な回答が付いてる
0321デフォルトの名無しさん2015/09/30(水) 12:51:24.45ID:g5Kwg8L4
>>317
ファイルの rename や削除はOSの機能だけどコピーや移動は違うからでしょ
0322デフォルトの名無しさん2015/09/30(水) 12:53:57.81ID:g5Kwg8L4
>>318
オーバースペックで重たかったと言ってるんだろ
何も間違えてないと思うが
0323デフォルトの名無しさん2015/09/30(水) 13:21:14.91ID:v45HhpVr
>>275
文句を言う前に金払って開発環境を揃えればいいだけ
12万で買えるクラスののデスクトップ買ったばかりだけどストレスを感じたことはない
0324デフォルトの名無しさん2015/09/30(水) 13:36:32.56ID:DDo+L8wA
CoreMと噂のsurface pro4が欲しいとか言ってる時点で
プログラミングはファッションレベルに決まってるで
開発に使うようなマシンじゃねー
0325デフォルトの名無しさん2015/09/30(水) 17:34:03.91ID:EKYNYvpv
うむ
0326デフォルトの名無しさん2015/09/30(水) 21:19:52.50ID:upKJw7Zd
デスクトップで開発とかダセーw
0327デフォルトの名無しさん2015/09/30(水) 22:17:31.18ID:4e29nm1y
俺はノートでやってるよっ☆ (^-^)/
0328デフォルトの名無しさん2015/09/30(水) 23:13:40.03ID:NW4C2hiZ
俺はコンピューター持ってないから脳内で
0329デフォルトの名無しさん2015/09/30(水) 23:36:34.92ID:aEcL3JaV
http://peace.2ch.net/test/read.cgi/internet/1401535906/107
  ↑  ↑  ↑  ↑  ↑
0330デフォルトの名無しさん2015/10/01(木) 01:20:40.78ID:jlLOirXX
よくnote pcなんかに無駄金払えるなw
0331デフォルトの名無しさん2015/10/01(木) 06:28:28.23ID:NYBY5O+J
タマネギ無しでカレー作るなら甘み出すためにリンゴ入れた方がいいですかね?
っていう質問に、タマネギ入れろよって答えるような人が多いよねここ
色々な制約が人によってあってその範囲内での質問回答が求められてるのにタマネギ入れろよしか言えない人
馬鹿だと思う
0332デフォルトの名無しさん2015/10/01(木) 07:26:15.35ID:r8teaEYT
>>331
ITってとりあえず自分で試せよってのが基本じゃないかなぁ
やったことないことにまともな答えなんてできねーじゃん
「俺の質問に答えてくれないから糞」ってのはバカな人の思考だよね
0333デフォルトの名無しさん2015/10/01(木) 07:37:18.85ID:/jpbfw6N
>>332
>>331のいう、それ、そのものやないかい

相手の言う事を理解できてなくて、
自分の思う事を言ってるだけって事なんだよね。

要するに。
0334デフォルトの名無しさん2015/10/01(木) 08:34:30.11ID:f5gJwSlF
とりあえず>>332は社会不適合者のバカだという事でw

まぁ学校とかでも友達や彼女もいないで一人暗く過ごしてたような奴らが多いからなましてやここは2ch
0335デフォルトの名無しさん2015/10/01(木) 10:39:30.62ID:ZcWNnYYP
>>331
スレタイ読めよw
お前さんの例えで言えば
質問が「お米は洗剤で洗ったあと何回すすげばいいんですか?」
だとすると、それの答えが「水で洗え、お湯で洗う人もいる」
これの何が悪い?
0336デフォルトの名無しさん2015/10/01(木) 11:04:54.82ID:mpdw7HPU
無洗米買えよ
0337デフォルトの名無しさん2015/10/01(木) 11:21:52.65ID:Td7LqfLC
surface君が荒らしてるのか
0338デフォルトの名無しさん2015/10/01(木) 12:24:39.57ID:9rEn1f0E
わざわざ下手くそな例えで話を混乱させる人が多いよねここ。
0339デフォルトの名無しさん2015/10/01(木) 12:28:09.16ID:VU6YL+ln
>>332,335 以外は特に混乱してないように見えるが。
0340デフォルトの名無しさん2015/10/01(木) 12:33:38.49ID:9rEn1f0E
つまり混乱してるんだなw
0341デフォルトの名無しさん2015/10/01(木) 12:41:46.95ID:/jpbfw6N
レスするか迷ったけどレスしちゃう

>>335
質問の内容がおかしいだろ
「米を洗剤で洗った」と聞けば、あなた頭おかしいんじゃないの?
と普通の人はなる

だから、「水で洗え、お湯で洗う人もいる」
という答えになる。

「タマネギ無しでカレー作る」と聞いても、あなた頭おかしいんじゃないの?
とはならない

質問を聞いて「あなた頭おかしいんじゃないの?」と、
なる・ならないの前提が違うので話にならない
0342デフォルトの名無しさん2015/10/01(木) 13:25:17.91ID:dS12aCbL
>>331-341
タマネギだの米だのスレ違いだろ
続きはここでやってくれ
http://peace.2ch.net/test/read.cgi/tech/1427572389/
0343デフォルトの名無しさん2015/10/01(木) 13:28:37.33ID:BBaRIJcZ
>>341
なるほど一理ある
0344デフォルトの名無しさん2015/10/01(木) 14:42:14.05ID:Td7LqfLC
最近はモバイルと固定回線とスマホがあるお陰で自演も楽勝だな
0345デフォルトの名無しさん2015/10/01(木) 14:55:28.04ID:/jpbfw6N
お前がそう思うんならそうなんだろう お前ん中ではな
0346デフォルトの名無しさん2015/10/01(木) 16:59:38.46ID:5+pXOgtK
>>341
お前さんが想像力がないやつだと言うのがよくわかったよ
超初心者は米を洗剤で洗うような質問をする
Pythonに詳しいやつからみればな

お前さんは、米を洗剤で洗わないのは常識だ、というのがただの思い込みだということにそもそも気づいてないだろ
だから理解できないんだよ
0347デフォルトの名無しさん2015/10/01(木) 17:27:16.41ID:/jpbfw6N
何言ってんだぁ
こいつ
0348デフォルトの名無しさん2015/10/01(木) 19:15:47.64ID:AxFWNbqN
あんまり例え話好きじゃないから読んでないや
0349デフォルトの名無しさん2015/10/01(木) 19:46:08.96ID:M/7MGMo6
悔しいのならアンカー打って反論すればいいと思うの
0350デフォルトの名無しさん2015/10/01(木) 21:36:59.41ID:s3U6j/Jt
米は研げよ、洗うな馬鹿タレ。
0351デフォルトの名無しさん2015/10/01(木) 21:53:03.78ID:6DvvsA2I
米洗ふ 前に蛍の 二つ三つ
0352デフォルトの名無しさん2015/10/02(金) 06:41:28.52ID:AkqrFCcI
>>351
pythonで書けよ。
0353デフォルトの名無しさん2015/10/02(金) 07:47:24.13ID:gd9xqVj7
print()使うだけ
0354デフォルトの名無しさん2015/10/02(金) 09:35:38.01ID:8oryoHg9
負けてるやつ、そろそろ諦めろ
畳み掛けてるやつ、そろそろやめておけ

ところで、いま初心者にすすめるんだったら2.7?3?
0355デフォルトの名無しさん2015/10/02(金) 11:19:05.47ID:KgiramNs
I wish to wash come with me zoo
0356デフォルトの名無しさん2015/10/02(金) 11:50:00.62ID:yPSgHmJT
>>354
3系
と答えたいが、どっちがいい?ときいてくる人には
最初に学習に使う書籍やWEBサイトを決めて、使っているバージョンに従えと答える

あとPythonがプログラミング初学ではないからおススメの書籍とかは分からない
0357デフォルトの名無しさん2015/10/02(金) 12:27:15.25ID:7uxKcXjP
そもそも初心者が初心者に何かを勧める行為をお勧めしない
0358デフォルトの名無しさん2015/10/02(金) 17:08:55.30ID:x7S/CcUO
>>310
bottleでHello Worldを出すのも同じぐらい簡単だったと思うのですが。

実際に運用する際はuwsgiやrackなどを使うので全体で比較するとファイルを置くだけでインストールが完了するbottleの方が楽なのではないかと。
0359デフォルトの名無しさん2015/10/02(金) 19:06:49.68ID:m/wHrWte
>>354
3でしょ
2でしか使えないライブラリがあって,どうしてもそれを使いたいのなら別だけど
0360デフォルトの名無しさん2015/10/03(土) 08:59:26.91ID:fomIpGMD
#coding: cp932

import networkx as nx
from matplotlib import pyplot

def main():


g = nx.Graph()
g.add_edge(10,20)

g.add_edges_from([(30,40),(40,50),(1,2)])


print(g.edges())

nx.draw(g, node_color = 'b')

pyplot.show()


if __name__ == '__main__':
main()
0361デフォルトの名無しさん2015/10/03(土) 08:59:56.37ID:fomIpGMD
というコードを書いて実行すると、


○-○

    ○‐○

○‐○-○



とノード付きのグラフが表示されるのはいいのだけど、
○の中に肝心の数字が何も入らなくて困っています。
くぐっても分からないので、知っている方はご解答、よろしくお願いします。

使っているpythonは、2.7系です。windowsユーザーです。
0362デフォルトの名無しさん2015/10/03(土) 09:10:26.14ID:fomIpGMD
'''☆★で出来たピラミッドを表示するコード'''

def pyramid(n): # nでピラミッドの段数を指定する
i = 0
while i < n:
pad = ' ' * (n - i - 1)
block = '★' * (2 * i + 1)
print pad + block
i += 1

def pyramid2(n):
i = 0
while i < n:
pad = ' ' * (n - i - 1)
block = '☆' * (2 * i + 1)
print pad + block
i += 1
0363デフォルトの名無しさん2015/10/03(土) 09:10:58.08ID:fomIpGMD
def pyramid3(n): # 逆ピラミッド

print '\n'
i = 0
while i < n:
block = '★' * (n - i)
pad = ' ' * i
print pad + block
i += 1

def pyramid4(n): #逆ピラミッド

print '\n'
i = 0
while i < n:
block = '☆' * (n - i)
pad = ' ' * i
print pad + block
i += 1
0364デフォルトの名無しさん2015/10/03(土) 09:16:04.36ID:RHKUDZj0
>>361
たぶんnodeの追加が足りない
ライブラリに詳しくないから検索してヒットしたページを張っとく(@はrockよけ)
http://oceanmarine.sak@ura.ne.jp/sphinx/group/group_networkx.html#networkx-node
0365デフォルトの名無しさん2015/10/03(土) 09:22:53.10ID:RHKUDZj0
あ、nodeじゃなくてpath_graphの追加だな
0366デフォルトの名無しさん2015/10/03(土) 09:52:32.56ID:fomIpGMD
>>364 >>365

ありがとうございます。教えて頂いたサイトの最後の箇所にあったコードを文字コードをwin用に
変えて実行してみたところ、同じグラフがノードに数字入りで出ました。まだ初心者なので、少し
コードを見ただけでは全然分からないのですが、あとで、じっくり検証してみます。ありがとうございました。
windowsユーザーの方もいるかもしれないので、一応、その変更コードも一応、貼っておきます。
0367デフォルトの名無しさん2015/10/03(土) 09:53:14.04ID:fomIpGMD
#coding: cp932

import networkx as nx
import pylab as plt
import matplotlib

from pylab import *
import matplotlib.font_manager

prop = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\meiryo.ttc', size=15)
0368デフォルトの名無しさん2015/10/03(土) 09:53:45.59ID:fomIpGMD
def graph():

G = nx.Graph()
nodes = G.add_nodes_from([0, 1, 2, 3])
G.add_edges_from([(0, 1), (0, 2), (0, 3)])
pos = nx.spring_layout(G)

degree_dic = nx.degree(G)
print(degree_dic)
degree_pos = {}
for k, (x, y) in pos.items():
degree_pos[k] = (x+0.05, y+0.05)

nx.draw_networkx_nodes(G, pos, node_color='b', alpha=0.5)
nx.draw_networkx_edges(G, pos, alpha=0.5)
nx.draw_networkx_labels(G, pos)
nx.draw_networkx_labels(G, degree_pos, degree_dic)
plt.title(u'各ノードの枝数をノードの右上に表示してみた',fontproperties=prop)
plt.axis(u'off',fontproperties=prop)
plt.show()

def main():
graph()

if __name__ == '__main__':
main()
0369デフォルトの名無しさん2015/10/03(土) 10:46:52.36ID:2BaZKaXa
def 関数1:
…
def 関数2:
…
def 関数3:
…

def main:
関数1()
関数2()
関数3()
…

if __name__ == '__main__':
main()


という風に関数を上から順に呼び出していく定型処理のスクリプトがあったとして
開始時のユーザー選択により、関数1でなく任意の関数から開始する、という
フロー制御は、どう書けば実現できるだろう
関数が20個くらいあるので、呼び出しパターン全てをmainにifで書くのはできればやりたくない
GOTOのある言語なら、ラベルを付けておいて各々に飛ばせば済むんだが
0370デフォルトの名無しさん2015/10/03(土) 11:04:10.76ID:tCbgZp8x
自分自身を返す関数のとき,アノテーションはどうかけばいいですか?
クラス名を書くとエラーになってしまいます

class Test:
def func(self) -> Test:
return self

Test().func()

Traceback (most recent call last):
File "a.py", line 2, in <module>
class Test:
File "a.py", line 3, in Test
def func(self) -> Test:
NameError: name 'Test' is not defined
0371デフォルトの名無しさん2015/10/03(土) 11:06:58.47ID:tCbgZp8x
>>369
すごい適当ですけど,関数をリストにいれればいいんじゃないですか?
0372デフォルトの名無しさん2015/10/03(土) 12:04:35.06ID:jyP1OZ7g
>>369
>開始時のユーザー選択により

どう選ばせるかはもう決まってる?
0373デフォルトの名無しさん2015/10/03(土) 12:05:48.02ID:C7I9pgK8
>>369
すべての関数をリストに入れて、
インデックスで呼び出す

関数をキーで呼び出したいのなら、辞書に入れる
0374デフォルトの名無しさん2015/10/03(土) 12:11:47.91ID:tCbgZp8x
>>370
"Test"のようにするしかないみたいでした
0375デフォルトの名無しさん2015/10/03(土) 12:13:10.05ID:2BaZKaXa
>>371
関数をリストに入れられること自体知らなかったよ…

>>372
この程度でいいと思ってる
1が先頭の関数を示す
a = int(input("開始処理番号を入力してください"))
0376デフォルトの名無しさん2015/10/03(土) 12:34:50.58ID:jyP1OZ7g
a = raw_input("開始名を入力してください")
locals()[a]()
あるいは
globals()[a]()
0377デフォルトの名無しさん2015/10/03(土) 13:09:33.52ID:C7I9pgK8
>>375
Python,Ruby,JavaScriptなどでは、関数もオブジェクト。
実行コードを持ったオブジェクト

第一級関数とは、変数・配列などに格納できる。
関数に引数として渡したり、
関数の戻り値として返したりできる

関数型プログラミング、高階関数、遅延評価、
クロージャ、ラムダ(無名関数)などを勉強して
03783692015/10/03(土) 15:07:27.49ID:2BaZKaXa
このやり方で何とかできた。アドバイスサンクス

def 関数1():
…
def 関数2():
…
def 関数3():
…

def main():
funclist = [関数1, 関数2, 関数3]
a = int(input("開始処理番号を入力してください")) -1
for func in funclist[a:]
func()

if __name__ == '__main__':
main()
0379デフォルトの名無しさん2015/10/03(土) 17:28:27.28ID:qqIklWzl
class Func(object):
def func1():
pass
def func2():
pass
def func3():
pass
def exclude():
pass
def __init__():
pass

func1_var="func1 variable"
func2_var="func2 variable"
0380デフォルトの名無しさん2015/10/03(土) 17:30:32.50ID:qqIklWzl
>>379
続き

if __name__ == "__main__":
# see unittest/loader.py
testMethodPrefix = "func"
def isTestMethod(attrname, testCaseClass=Func,
prefix=testMethodPrefix):
return attrname.startswith(prefix) and \
callable(getattr(testCaseClass, attrname))
D = dir(Func)
print("D =", D)
testFnNames = list(filter(isTestMethod, D))
print("testFnNames =", testFnNames)
print("func1_var =", Func.func1_var)
0381デフォルトの名無しさん2015/10/03(土) 17:33:40.18ID:qqIklWzl
>>379,380は、
>>369,378用

これくらいの芸は見せてもらえるんだと思ってました。。。
大丈夫か?日本。
0382デフォルトの名無しさん2015/10/03(土) 18:50:36.31ID:gQH+PRqq
>>378のスクリプトは十分にシンプルでわかりやすいと思うけど
芸ってのはそれをごちゃごちゃこねくり回すことを言うの?
0383デフォルトの名無しさん2015/10/03(土) 19:15:59.94ID:qqIklWzl
funclist = [関数1, 関数2, 関数3]

を自動化する芸くらい見せてもらえると思ってた
関数20までずらっと↓って書くの?

funclist = [関数1, 関数2, 関数3, 関数4, 関数5,
関数6, 関数7, 関数8, 関数9, 関数10,
関数11, 関数12, 関数13, 関数14, 関数15,
関数16, 関数17, 関数18, 関数19, 関数20]

関数21とか成長すると、その都度funclist更新するの?
・・・悪いけど、頭悪ーって思うよ。

# see unittest/loader.py
の通り、該当箇所を抜き出しただけです。
unittest 使うと testXXX を自動実行してくれる事くらい知ってますよね?
source 公開している意味ないよ。。。
0384デフォルトの名無しさん2015/10/03(土) 20:09:29.61ID:TDca+yKY
なんで一人で勝手にイライラしてんだろこの人
0385デフォルトの名無しさん2015/10/03(土) 20:35:15.81ID:d7sRTTd7
Although never is often better than *right* now.
0386デフォルトの名無しさん2015/10/03(土) 22:41:09.78ID:pj0qXq1g
関数が20個あって任意のから始めたいなんて設計が悪いわ
0387デフォルトの名無しさん2015/10/04(日) 07:44:18.13ID:ohsfWQtz
Classの使い方とか使い道がわからん。関数だけあればいいんじゃね?
0388デフォルトの名無しさん2015/10/04(日) 08:58:12.84ID:UyyPHyaL
それでいつか複雑になりすぎて混乱する時が来る
そうなったらclass使う
0389デフォルトの名無しさん2015/10/04(日) 09:18:15.75ID:yoEktSyw
クラス変数やインスタンス変数を使った方が
圧倒的に楽になる時が来るんだよな
0390デフォルトの名無しさん2015/10/04(日) 10:29:02.28ID:LEXjibpb
それまで辞書とかでやりくりしてた部分なんかが
「多分こういうところでクラスってのを使うと便利なんだろうな」とぼんやり見えてくる時期があって、
でネット上の解説とかを読んだりしてやっぱよくわかんねーわ、というのを何度か繰り返してやっと理解できた
0391デフォルトの名無しさん2015/10/04(日) 10:40:27.06ID:eV6iuRhJ
「在る」から使うんじゃなくて
必要だから「在る」んだよ
必要じゃないと思ってる間は無理して使わなくて良い
0392デフォルトの名無しさん2015/10/04(日) 10:42:40.07ID:J4whK/1Y
関数もオブジェクトだから、クラスと同じ

関数、クロージャ、ラムダ(無名関数)、Procなど、
どういう表現をしようと、オブジェクト(クラス)と同じ

つまり、オブジェクトは人間から見て、
わかりやすくした、単なる容れ物(名前空間)で、
その中に、データ・メソッド(実行コード)を持つ
0393デフォルトの名無しさん2015/10/04(日) 10:48:23.01ID:+OAHHRmx
俺もclassなんてさっぱり分からぬが、
よく似た関数の大軍に苦しめられたので、継承だけは使う。
03943692015/10/04(日) 11:03:33.97ID:KmO0NZWk
>>376や>>379-380のように
Pythonの内部情報をユーザーアプリから利用する手法を
リフレクションって言うんだっけ?
超初心者スレにはちと厳しい内容だが、いろいろ参考になるよサンクスコ
0395デフォルトの名無しさん2015/10/04(日) 11:26:28.06ID:clqtTSXW
itertoolsを使わずに
A-Zの組み合わせを出力する方法をカンマ区切りで教えてください

AA,AB・・・ZX,ZY,ZZ
0396デフォルトの名無しさん2015/10/04(日) 11:34:24.18ID:4W1SFQbp
>>> [chr(x) + chr(y) for x in range(ord('A'), ord('Z')+1) for y in range(ord('A'), ord('Z')+1)]
0397デフォルトの名無しさん2015/10/04(日) 11:36:30.63ID:eV6iuRhJ
http://python.rdy.jp/wiki.cgi?page=%CC%E4%C2%EA%BD%B8
文字候補'python'からn文字の文字列を生成する(重複なしの場合)
文字候補'python'からn文字の文字列を生成する(重複ありの場合)
0398デフォルトの名無しさん2015/10/04(日) 11:40:47.45ID:4W1SFQbp
if __name__ == "__main__":
AZ = "".join(chr(x) for x in range(ord('A'), ord('Z')+1))
print(AZ)

xy = []
for y in AZ:
for x in AZ:
xy.append(x + y)
print("xy =")
print(xy)
0399デフォルトの名無しさん2015/10/04(日) 15:45:40.47ID:DtYtvb6R
s = "10月 4, 2015 15時:2分: 59秒 GMT"

この文字列から日本のタイムゾーン(GMT+9)に変換して2015/10/04 0:02:59に変換する方法を教えてください
0400デフォルトの名無しさん2015/10/04(日) 18:00:07.02ID:tfBvgUb1
GMT15時はJST0時じゃないけど
0401デフォルトの名無しさん2015/10/04(日) 18:04:44.84ID:m8Ix8uLj
>>400
http://wwp.greenwichmeantime.com/to/jst/
0402デフォルトの名無しさん2015/10/04(日) 18:06:31.52ID:tfBvgUb1
ああ
合ってたか
勘違いしてた
ごめん
0403デフォルトの名無しさん2015/10/04(日) 18:07:12.28ID:tfBvgUb1
だけど
日付変わってないからやっぱり変だな
0404デフォルトの名無しさん2015/10/04(日) 19:40:29.06ID:m8Ix8uLj
5日の打ち間違いでしょ
0405デフォルトの名無しさん2015/10/05(月) 05:35:00.42ID:Efh3UhbF
>>399
>>> from datetime import datetime, timedelta, timezone
>>> s = '10月 4, 2015 15時:2分:59秒 GMT'
>>> d = datetime.strptime(s, '%m月 %d, %Y %H時:%M分:%S秒 %Z').replace(tzinfo=timezone.utc)
>>> d = d.astimezone(timezone(offset=timedelta(hours=9)))
>>> d.isoformat()
'2015-10-05T00:02:59+09:00'

%Zはタイムゾーン名からtzinfoを解析しなかった
sのタイムゾーンが変わるならサードパーティ製のpytzやdateutilなどを利用する
0406デフォルトの名無しさん2015/10/05(月) 12:04:10.12ID:JPV4Vzjz
こういう().().()みたいなのって
()
.()
.()

datetime.strptime(s, '%m月 %d, %Y %H時:%M分:%S秒 %Z')
____.replace(tzinfo=timezone.utc)

エラーがでます
.replace(tzinfo=timezone.utc)
^
IndentationError: unexpected indent
0407デフォルトの名無しさん2015/10/05(月) 12:45:10.22ID:MX7oHHYL
>>406
何が言いたいの?
エラーが出るんなら直せばいいでしょう。
どう直せばいいか分からないの?
言いたいことを他人にもちゃんと分かるように書いてください。
0408デフォルトの名無しさん2015/10/05(月) 12:51:48.03ID:Efh3UhbF
>>406
Pythonは改行で式や文の区切りを判断するから、行を継続する式を書く場合は
下のように全体をカッコでくくって1つの式とするか
(foo()
.bar()
.baz())
下のように継続させる行の末尾にバックスラッシュを付ける
foo()\
.bar()\
.baz()
0409デフォルトの名無しさん2015/10/05(月) 22:22:20.57ID:5PLQveQr
皆はさpyenv使ってる?
linuxの時は全然気にしてなかったけどmacはシステムのpython使うの嫌ってpyenv使う人多いのかな?
0410デフォルトの名無しさん2015/10/05(月) 22:33:57.30ID:MI7O5egC
pyenv使ってたけどやめたよ
作者にひつ例だからあえて理由は言わない
0411デフォルトの名無しさん2015/10/06(火) 00:32:33.09ID:gui0gkO2
>>409
システムのpython使うの嫌ってというよりも、最初はPython3を使いたい、もしくは2.7の最新を使いたいっていう理由からじゃないですかね。
何も知らなければシステムのPythonをバージョンアップしようとするかもしれませんが、いろいろ調べる過程でシステムのPythonはそのまま置いておいた方がいいと知って…という感じかと。
しかし同じ理由から入るにしても、公式のインストーラ使うとかAnacondaなどのディストリビューション使うとか複数の選択肢があるわけで、その中からpyenvを使うのを選ぶっていうのは、多分に偶然が作用していると思います。
私自身は公式→pyenv→Anacondaっていう感じに流れて、今はAnacondaで落ち着いてますね。
0412デフォルトの名無しさん2015/10/06(火) 02:00:25.19ID:ECst51So
macはpyenv使わないと、自分の使いたいバージョンのPythonいれることすらできないの?
0413デフォルトの名無しさん2015/10/06(火) 02:22:15.60ID:9QX2zML5
いやそんなことは無いよ
ただシステムのは古いんじゃなかったけ
だから新しいのに入れ替えると元から入ってたのとごちゃごちゃになって
os詳しくない人は混乱する恐れあるのでenv使うみたいな
ubuntuはわりと新しいの入ってるから楽だよね
Windowsってデフォルトで入ってるのかな?
0414デフォルトの名無しさん2015/10/06(火) 02:31:15.46ID:ECst51So
>>413
>ただシステムのは古いんじゃなかったけ
>だから新しいのに入れ替えると元から入ってたのとごちゃごちゃになって

システムのは入れ替えずに、それとは別に使いたいバージョンのPythonをいれて、そっちを使うといいじゃない
Macではそれをpyenv使わずにできないの?
0415デフォルトの名無しさん2015/10/06(火) 07:43:44.36ID:PGXF9dFG
できるよ
誰もpyenv使わないとできないとは言ってないでしょ
最初のネタふりがpyenv使ってる?だったからpyenv中心に話が流れてるだけでしょうに
0416デフォルトの名無しさん2015/10/06(火) 18:09:20.96ID:9QX2zML5
>>414
日本語不自由なのかな…
できるけどパス設定等自信ない人はデフォルトを弄りたくないんじゃないのっていう話
0417デフォルトの名無しさん2015/10/06(火) 18:58:10.30ID:qzKSIZnO
gccなどのcコンパイラがない環境でも、easy_installやpipは使えますか。
0418デフォルトの名無しさん2015/10/06(火) 19:00:13.29ID:zH4YnSEx
使える
0419デフォルトの名無しさん2015/10/06(火) 19:10:38.33ID:rjAeuINg
>>414はまずpyenvがなにをするのかドキュメントを読むところから始めたほうがいいよ
04204172015/10/06(火) 19:57:09.50ID:qzKSIZnO
ありがとうございます。
自分はMacのXcodeの環境なので、gccがない環境のことがよくわかりませんでした。
0421デフォルトの名無しさん2015/10/06(火) 20:24:51.24ID:I6zakUtC
411ですがまあ私の書き方もちょっと曖昧で誤解を招く書き方だったかもしれませんね。申し訳ない。
0422デフォルトの名無しさん2015/10/07(水) 09:40:03.07ID:1r79YyMu
別に謝る必要無いよ
ID:ECst51Soがmacになんか変な憎しみを抱いてそうってだけの話で
0423デフォルトの名無しさん2015/10/07(水) 18:54:50.06ID:aFLFxckR
つーか、このスレで質問のレベルの低さに驚いたり
呆れたり侮蔑の色を示す人は、スレの主旨がわかっていないわけだから
来ないで欲しいところ
0424デフォルトの名無しさん2015/10/07(水) 19:38:39.70ID:X5WUW4ju
macには水爆を落としてやりたい。
0425デフォルトの名無しさん2015/10/07(水) 20:17:30.86ID:VfagUZdF
>>423
叩かれて顔真っ赤になって悔しい思いをしたのはわかるけど
その発言は火に油を注ぐことになることを忘れるな
0426デフォルトの名無しさん2015/10/07(水) 21:07:09.24ID:jcTVQzQq
質問するにも最低限の礼儀はあるわな
それすらわからん奴は質問しないで欲しい
0427デフォルトの名無しさん2015/10/07(水) 21:29:59.61ID:iZEXRK2I
Pythonの次にJavaかC++どっちに行こうか悩んでいるんだが、C#はキライ
0428デフォルトの名無しさん2015/10/07(水) 22:33:15.73ID:ax7wmSsY
みんな、喧嘩しないで
0429スッキリ厨2015/10/07(水) 22:49:29.29ID:0iwSPjqO
漏れが薦める、勉強の順番

まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読むと、すごくよくわかる
たのしいRuby 第4版、2013
みんなのPython 第3版
0430デフォルトの名無しさん2015/10/07(水) 23:59:44.13ID:DipKTZIc
>>427
無難にJava?
でもPythonと比べたらまどろっこしいと思う
0431デフォルトの名無しさん2015/10/08(木) 01:42:29.21ID:jk8nLMhn
順番とか言ってないでさっさと
作るもん作れよ
0432デフォルトの名無しさん2015/10/08(木) 02:41:43.60ID:pfU24EX7
いつからこういう上から目線の回答者が多くなっちゃったんだろ
スレ見始めた四年前はこんな人あんまりいなかったけどなあ
0433デフォルトの名無しさん2015/10/08(木) 03:29:15.17ID:TuKbDO7s
>>432
ここ以外のPythonスレはひどく過疎っている
つまり上級ユーザー同士で語り合える場所がない
そのため比較的活発なこのスレに来て初心者に当たり散らす

正義に燃える魔法少女が、成長し強大な力を身につけると
魔女となり害悪をもたらす存在に変わる、という某アニメで見た光景
0434デフォルトの名無しさん2015/10/08(木) 05:19:20.93ID:clkY52aF
むしろ成長しそこねたから初心者に向かって偉そうにしてるんだけどな
0435デフォルトの名無しさん2015/10/08(木) 10:41:54.11ID:2A2luB2d
また燃料投下してるバカが湧いちゃった
0436デフォルトの名無しさん2015/10/08(木) 11:54:07.65ID:1kxTq/Y8
ダメな質問の仕方をしたらどこで聞いても答えてもらえない例
http://qiita.com/s15007/items/17d492c48c326c737ec1
0437デフォルトの名無しさん2015/10/08(木) 13:12:46.49ID:sRIRMnFE
import random


def anyProb(numTrials):
anyMonth48=0
for trials in range(numTrials):
months = [0]*12
for i in range(446):
months[random.randint(0,11)] += 1
if max(months) >= 48:
anyMonth48 += 1
aProb =anyMonth48/float(numTrials)

print u'\n446人の拒食症患者のうち、同一の誕生月の患者が48人以上になるケースが\n少なくとも1つは存在する確率は、', aProb,'です。'
0438デフォルトの名無しさん2015/10/08(木) 13:13:21.84ID:sRIRMnFE
このコードの意味が、初心者なので分からないのです。まず、 months = [0]*12 のところで12個分の誕生月の箱をリスト形式か
何かで作っていると思うのですが、実際にインタラクティヴシェルでこの部分だけを実行してみると、
[0]*12 = [0,0,0,0,0,0,0,0,0,0,0,0]となります。months[random.randint(0,11)]の箇所で、0〜11の乱数を取り出して、それを
変数monthsと紐付けているのはなんとなく分かるのですが、具体的にどういう形式になっているのでしょうか。

たとえば、それがmonths[0]やmonth[10]みたいになのか、それともmonths[0,0,0,0,0,0,0,0,0,0,0,0]になったり、
months[9,9,9,9,9,9,9,9,9,9,9,9]、もしくは、months[1,3,5,7,2,9,11,0,4,8,2,2]みたいな感じでrandint(0,11)の乱数が
どのように配分されているのかが、よく分かりません。


anyProb(numTrials)のnumTrialsの箇所で試行回数を設定するのですが、これを仮に10000に設定します。この意味は、たぶん
range(446)分あるfor文の式を1万回繰り返して、それを0〜11のmonthsにランダムに割り当てて、それを
インクリメントしていった値が、48以上になるものをさらにanyMonth48 += 1ところで、+1ずつインクリメントする
というものですよね。
0439デフォルトの名無しさん2015/10/08(木) 13:13:48.46ID:sRIRMnFE
その数(anyMonth48)を試行回数で割ったもの(今回は、1万回)の比率を求めています。最終的には、range(446)の範囲での
0〜11へのランダムな配分をしていって、その合計が48以上になる月(0〜11)が少なくとも1つは存在する確率がどれくらい
あるかを求めているのですが、 months = [0]*12の部分やmonths[random.randint(0,11)] += 1で本当に行っていることや
、そこで実際に展開されている式などがよく分かりません。その確認のため、[0]*12の部分を[1]や[8]など別の数字を
入れてみると、アウトレンジ、範囲外になっています、みたいなエラーメッセージが出ます。

知っている方がいたら、ご教示をよろしくお願いします。

ちなみに、この確率を何度か計算・実行してみると、0.4…前後の値が出やすい。だからそれは、range(446)の
範囲にあるfor文に1万回の試行をすると、48以上の値を得る月(0〜11)が、40%前後の確率で存在するという意味
だと思われます。
0440デフォルトの名無しさん2015/10/08(木) 13:27:57.28ID:sRIRMnFE
'''pythonの最大の特徴であるインデントブロックが全部、潰れて投稿されて
読みづらくなっているので、再投稿する。これでも、ダメだったら今回は諦める。'''

def anyProb(numTrials):
anyMonth48=0
for trials in range(numTrials):
months = [0]*12
for i in range(446):
months[random.randint(0,11)] += 1
if max(months) >= 48:
anyMonth48 += 1
aProb =anyMonth48/float(numTrials)

print u'\n拒食症患者のうち、少なくとも48人以上の患者が発生した誕生月が\n少なくともひとつは存在する確率は、', aProb,'です。'
0441デフォルトの名無しさん2015/10/08(木) 13:30:28.89ID:qk4fmR9D
month = [0] * 2
months[0] = 1
months[1] = 2
month[random.randint(0, 1)] = 1000
random.randintが何をするかはドキュメントに書いてある
http://docs.python.jp/2/library/random.htmlをrandom.randint
0442デフォルトの名無しさん2015/10/08(木) 13:31:48.39ID:qk4fmR9D
インデントさせるならcodepadやideoneに投稿するか、アンダーバーを使う

def a():
____print(1)
____return 1
0443デフォルトの名無しさん2015/10/08(木) 13:49:51.31ID:x1B1+vrd
>>438
コード全体の流れについてはあなたの見解で合っていると思います
個々の部分、変数への代入やリストの操作について分からないということですね

最初の点、months = [0]*12の内[0]*12の部分の意味はあなたの見解で合っています
シェルで確認したとおり[0]*12は[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]へと計算されます
この計算を言葉で書き下すと「数値の0が1つ入ったリストを12個複製して1つにつなげる」

この計算結果は=の文でmonthsと名づけた変数へ代入されます
Pythonでは変数へ代入によって計算した値を保持し、後のタイミングで再び計算に利用します
0444デフォルトの名無しさん2015/10/08(木) 14:07:53.32ID:sRIRMnFE
>>441>>442

解答ありがとうございます。 months[0] = 1 や months[1] = 2 になっているのですね。ということは、
リストに入る要素の個数を指定出来るということか、あるいは、順番(順・序数)を示しているのかのいずれか
という感じ。とりあえず、書いていただいたように months[0] = 1 と考えると、 months = [0]*12 は
months = 12 になりそうだけど、詳細の理解はあやしいです。

書いていただいた month[random.randint(0, 1)] = 1000 の意味さえ分からないです。0〜1の範囲にある
無限の実数の中かから1000個分の要素を取り出すのか、あるいは、それが1000と等しくなるようになにかの
作業をするのか。この程度の初心者です。

>>443 
解答ありがとうございます。ご指摘頂いた段階までの計算の展開は分かりました。もしよろしければ、
その次段階で、どのような式が展開されているのかを、ご教示して下さい。変数monthsに紐づけられた乱数が、
どのように実際に割り当てられているかの例をいくつか式や形式と一緒に挙げて頂ければ、幸いです。
よろしくお願いします。
0445デフォルトの名無しさん2015/10/08(木) 14:44:11.87ID:x1B1+vrd
>>444
リストに入っている値には添え字[]を使ってアクセスできます
添え字には通常、先頭(0)から最後尾(リストの長さ-1)まで指定できます

months[random.randint(0, 11)] += 1の[]の中の部分を取り出して文を2つにわけると

i = random.randint(0, 11)
months[i] += 1

「0から11の範囲でランダムな整数値をiに代入する。
monthsの(変数iに入っている数値)番目の値に1加算する。」
0446デフォルトの名無しさん2015/10/08(木) 15:21:00.78ID:sRIRMnFE
>>445

解答ありがとうございます。なんとなく少し解ってきた感じです。


入れ子構造で理解できるのですね。それなら、iの部分に実際の乱数(0〜11)
を入れてみると、

months[0]
months[1]
months[2]
months[3]
months[4]
months[5]
months[6]
months[7]
months[8]
months[9]
months[10]
months[11]

になるのですが、添え字ということなので、たぶんmonths[_0,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11]
という風な(形)式が見えない内部では展開されていて、イテレーション?みたいな感じで
、添え字に該当している月の数値(0〜11)「ここでは、添え字(_0〜_11)と月を表す0〜11が一致しているので」に、
ランダムに配分された乱数は、リストmonths内の添え字を指示するようになって、それがそれぞれの別の添え字(=月ごと)
にランダムに乱数として配分されていくことで、それぞれの添え字=月にインクリメントされていっているという理解でいいのでしょうか。
0447デフォルトの名無しさん2015/10/08(木) 18:21:07.57ID:sRIRMnFE
あと、このコードの分かりづらい点は、months = [0]*12 のコード
で実行すると、確率の値 aProbが0.4…の範囲に出やすいの理論上正しい
のだけど、たとえば、指定している乱数random.randint(0,11)の中で一番
大きな乱数の値である11を使って、months = [11]*12 のコードに変更して
みると、途端に確率が1.0となって、倍以上に増えて表示されてしまう。

その意味は、1万回の試行の全てにおいて、446人の拒食症患者のうち、同じ誕生月の
拒食症患者が48人以上になるケースが少なくともひとつは存在する確率が100%で
あるということ。

どうもmonths = [0]*12の[]の部分の数値が大きくなるのと連動して、確率値も
どんどん上昇していくようなコードや計算上の仕様になっている感じがする。
months = [0]*12の時が1番低いaProbの確率で、0.4…くらいの値。
months = [11]*12の時は、aProbの確率が1.0、つまり100%。

乱数がリストmonthsの添え字として配分されているのであれば、months = []*12
の[]の箇所に0〜11のどの乱数を入れても、そこに結び付けられる添え字は同じ
なのだから、最終確率も類似のものになってもよさそうなのに、どうも
[]の中に0<1<2<3<4<5<6<7<8<9<10<11という関係と比例する形で、aProbの確率が
最初の0.4〜5の範囲から、最終的には1.0(months = [11]*12の時)にまで達する
ぐらいに値が理論上の計算値からズレてきてしまうのです。

その理由が分かりません。
0448デフォルトの名無しさん2015/10/08(木) 18:56:24.52ID:2HMBHL9M
確かにスレの伸びはここが一番かも知れんが
読む価値無いわ
0449デフォルトの名無しさん2015/10/08(木) 18:57:04.57ID:sRIRMnFE
少し考えられそうなのは、months = [0]*12 のコードでの実行時は、

months[0,1,2,3,4,5,6,7,8,9,10,11]、もしくはmonths[1,2,3,4,5,6,7,8,9,10,11,12]
といった感じのmonthsリストが形成されて、それに割り振られた0〜11の覧瑞狽フ
添bヲ字によって、bサれぞれの月ごbニにインクリメャ塔gされた値かb迯ナ終的な確率bェ
正しく涛アき出されるのbノ対して、

months = [11]*12 のコードの実行時は、months[11,11,11,11,11,11,11,11,11,11,11]か
months[12,12,12,12,12,12,12,12,12,12,12]みたいに、とにかくリスト内の要素が
すべて同一の値(別に11でなくてもいい)になってしまっていて、そのことによって、
0から11の乱数としてどの添え字が配分されても、同一の要素(月)だけが
インクリメントされてしまっているので、最終的な確率が1.0=100%と表示されてしまうのかな。

でも、教えてくれた方は、months = [0]*12で、[0,0,0,0,0,0,0,0,0,0,0,0]
が作られて、リスト内の要素には添え字でアクセスする、と言っていた。
私は、その添え字をrandom.randint(0,11)から渡される(0〜11)の値だと
思っていたのだけど、その理解が違うのでしょうか。

>>441さんの
month = [0] * 2
months[0] = 1
months[1] = 2

という数え方の方が、なんとなく、計算結果と合致するのですが。
0450デフォルトの名無しさん2015/10/08(木) 19:05:44.30ID:/mg/zjar
いわゆるsjisのダメ文字といわれるやつですが、回避方法はどんな手がありますか。
MS-Windows版Python 2.6です。

ZipFile.write(u'ソング.txt', u'ソング.txt'.encode('cp932'))
で、zip内のファイル名の「ソ」(文字コードにバックスラッシュを含む)が化けます。
0451デフォルトの名無しさん2015/10/08(木) 19:48:03.02ID:29V1SYaY
windowsってさutf-16も扱えなかったっけ
pythonでutf-16に変換できるか知らないが試してみておしえて
0452デフォルトの名無しさん2015/10/08(木) 20:03:10.67ID:TEWEdEIy
>>449
何を勘違いしてるのか謎だけどリストに対する乗算は、それを乗数分繰り返したリストを生成する
つまり[0]*12は要素が12個で全てが0のリスト…なのでその理解はいい、そのリストへの参照がmonthsに割り当てられる
しかし変数にくっついた鉤括弧はリストに使うと要素に(0から始まる)インデックスよってアクセスすることを意味する
random.randintによってそのインデックスをランダムに決定することで患者数をインクリメントする月をランダムにする
month = [11] * 12では各月に最初から11人罹患していることになってしまう

>>450
ZipInfoにos.sepを/に置き換えるコードが入ってるのでねぇ…手っ取り早くos.sep = '/'とかしても回避できるけど
ドライブのセパレータを除去できなくなったりするので大人しくUnicode渡してUTF-8で記録させた方が…
0453デフォルトの名無しさん2015/10/08(木) 20:26:13.91ID:TEWEdEIy
あーそうかエクスプローラとかだと未だにUTF-8フラグ対応してないっけ…ZipFile作る前に
zipfile.ZipInfo._encodeFilenameFlags = lambda self: (self.filename.encode('cp932'), self.flag_bits)
でも挿入してみるとか、ファイル名は全部unicodeで渡して
0454デフォルトの名無しさん2015/10/09(金) 00:31:33.88ID:rd4aRhyU
マジックナンバーは氏ね
0455デフォルトの名無しさん2015/10/09(金) 04:06:48.90ID:351lCfXP
>>452

その説明で、ようやく分かりました。感謝です。

リストに複数入った要素へ乱数をインデックスに割り当ててインクリメントしていく状態といった
コードが、自分的には見慣れないレアなコードだったので、そのイメージが得にくかったのです。
x+=1やx*=5みたいに1つの変数xに対して、インクリメントするのなら理解しやすいのに。


months = [0]*12で最初の状態は、[0,0,0,0,0,0,0,0,0,0,0,0]になって、range(446)の条件で
インデックスに乱数が配分されて、[random.randint(0,11)] += 1でインクリメントされた時は、

たとえば、[33,50,36,42,17,69,24,44,34,35,40,19,43] みたいな感じにリストの値が変わるということ
なのでしょう。

> month = [11] * 12では各月に最初から11人罹患していることになってしまう  

と教えていただいたので、それは、 months[11,11,11,11,11,11,11,11,11,11,11,11] のリストの状態から
インクリメントがスタートしてしまっている状態なので、のちに得られる最終的な確率も
months = [0]*12の[0,0,0,0,0,0,0,0,0,0,0,0]からスタートしたものよりは、当然上がってくる、ということ
なのだろう。教えて頂いて、助かりました。>>452さん 再感謝です。
0456デフォルトの名無しさん2015/10/09(金) 04:58:55.41ID:SqKziDAZ
>>450-453
ファイル名には、半角英数字と、_(アンダーバー)だけを使う

外人が作るアプリでは、
日本語・空白文字・ダメ文字などを想定していないから、
まともには動かない

>>437
連想配列と同じ。
文章内に出てくる、単語数を数える処理などで、よく見る

words['dog'] += 1
words['cat'] += 1
dogという単語は3回・catは5回、出現したとか

そのプログラムも、キーを患者の番号ではなく、
名前・患者IDなどで考えたら、よくわかる

初心者は、>>429 の本を読んだ方が速い
0457名無したん(;´Д`)ハァハァ2015/10/09(金) 07:26:12.88ID:R/fihbLN
IDEって何使ってる? Vim? Pyscripter? Emacs?
0458デフォルトの名無しさん2015/10/09(金) 08:16:42.93ID:8cGzmkg3
spyder 使ってるよ。
0459デフォルトの名無しさん2015/10/09(金) 09:42:45.91ID:Pt9XGpl2
Eclipse + PyDev 使ってる
04604502015/10/09(金) 23:14:14.52ID:CLF1T+DB
>>451-453
レスありがとうございます。
ZipInfo.__init__() 内で'\\'を'/'にreplace()した部分を無効化しました。
関数もオブジェクトなので書き換えられるという発想がありませんでした。
0461デフォルトの名無しさん2015/10/09(金) 23:30:48.74ID:LjniZf+R
>>457
Visual Studio
GUIから仮想環境作ったり、pipでパッケージ入れたりできるの便利だった。
0462デフォルトの名無しさん2015/10/10(土) 06:25:13.56ID:xKeKrZ5a
>>455
もう見てないかもしれないけど、コードの意味がわからなかったらそれを逐一printして確認すれば大抵のことは解決します
初心者がプログラムを見て自分でアレコレ推論するほど意味の無い行為はありません
上級者でも袋小路に陥ったらそうします(実際はデバッガーを使うけど初心者はprintで頑張る)
今回の場合はforの中のmonthsをprintしてれば長時間悩むこと無く解決してたかと思います
0463デフォルトの名無しさん2015/10/10(土) 07:39:28.47ID:xRAr0t1S
えっ、Pythonそんないいdebuggerあったの?
わたし、print()、logger()で頑張ってたけど、、、
0464デフォルトの名無しさん2015/10/10(土) 08:04:17.66ID:qrMNhsm1
正しい順番は、仕様書 → ソースコード

これを逆にして、ソースコード → 仕様書
では、ソースコードの作者が、
わかりやすく書いているとは限らないから、
理解するのに数倍の時間がかかる

ソースコードは読まない方がいい。
達人が書くソースコードは、変数名・関数名を見たら、
すぐに処理がわかるので、読む必要もない

達人は、バーッとすごい勢いで、
ソースコードを書いたりしない

作業時間の1/3はじっくりと、
わかりやすい名前を考えている

また1/3は、ソースコードの構成について考えている。
残り1/3が、プログラム・デバッグなのだが、
ほとんどバグを起こさない

つまり、バグのほとんどは設計段階で生じるから、
プログラム・デバッグの段階では、生じないのだ
0465デフォルトの名無しさん2015/10/10(土) 08:37:11.80ID:336gnDzB
netbeans
0466デフォルトの名無しさん2015/10/10(土) 09:48:22.09ID:GwjphGt7
> 463
Spyder だと、コードのステップ実行したり、ブレイクポイント置いたり、実行中の変数を見たりが出来て、便利だよ。
print のみで十分なことの方が多いけどね。
0467デフォルトの名無しさん2015/10/10(土) 11:54:13.99ID:3ApnBNOY
pdb
0468デフォルトの名無しさん2015/10/10(土) 12:27:29.78ID:/egW/Cb1
これか
http://www.oreilly.co.jp/books/9784873114484/
0469デフォルトの名無しさん2015/10/10(土) 12:39:41.31ID:xKeKrZ5a
printだけだと「多分この変数が原因だろう」と自分が注目している変数しか見ないじゃない
もしその変数じゃなくて関連する別のやつが原因だった時にそれじゃ特定にめっちゃ時間かかる
デバッガ使えばその状態の変数がすべて見られるから片っ端から調べる事が可能
あとprintだと可読性が悪すぎるし(特にclass)GUIデバッガは閲覧性高くて便利
0470デフォルトの名無しさん2015/10/10(土) 13:07:52.25ID:3vz2/iUj
お薦めのGUIデバッガは何がありますか?
0471デフォルトの名無しさん2015/10/10(土) 13:53:22.01ID:/rn3qk7+
>>456

「みんなのPython第3版」は持っています。時々、部分的に参照しています。
 連想配列のことも、この本の後ろの索引には載ってましたが、「ディクショナリはハッシュ(連想
 配列に似ている)」みたいに書かれているだけでした。

>>462

さっそく、その方法を今、試してみました。range(446)のfor文から
 print months を対話シェルで実行してみたところ、

[33,28,36,43,41,43,39,36,40,32,40,36] と表示されていました。

私が、こういう感じのものが見えない部分で計算・表示されているのでは?と脳裏に
イメージしていたのと同様のものが、実際に表示されてて、嬉しかったです。
ありがとうございます。教えていただいたように、コードが分からない時には、
print文で、小さくチェックして動作検証を行うというスタイルを試すようにしてみます。
「small is beautiful」というプログラミング言語に関する格言もあるようですし。
まさに、pythonの対話シェルの仕様など、その利点を生かせそうです。

ちなみに上記のリストの要素の値を全部足してみたところ、447になっているので、
range(446)=447 ということで、乱数がインデックスに配分されてインクリメント
+1された値も、当然ながら無事に合致してました。
0472デフォルトの名無しさん2015/10/10(土) 14:07:59.78ID:UQMKf0jM
[hoge, 1]
[hog, 2]
[ho, 3]
[h, 4]
.
.
.
というような沢山のリストをループ処理の結果、出力する、というような関数を作ったのですが、返し値にうまく入ってくれません。
一回目のループ結果、つまりこの例で言う一番上の
[hoge, 1]だけが値に入って返されてしまいます。
とうすれば全てのループ処理の後のデータが返し値に入ってくれるでしょうか。
ループの外にreturnをおいてもダメでした。
宜しくお願いします。
0473デフォルトの名無しさん2015/10/10(土) 14:12:03.68ID:/egW/Cb1
>range(446)=447

???
0474デフォルトの名無しさん2015/10/10(土) 14:13:33.49ID:/egW/Cb1
>>472
関数のソース貼る気は無い?
0475デフォルトの名無しさん2015/10/10(土) 15:06:45.71ID:/rn3qk7+
>>473
range(10)だと、0〜9の意味なので、

range(446)たと、0〜445になって、

各インクリメントごとに+1の仕様なので、ご指摘の疑問のように
計446になっていてよさそうなものなのに、でも、理由が分かりました。


別の計算をしてリストの要素のひとつに1が入った状態のまま合計してしまったので
+1増えた状態で計算してしまったみたい。


なので、もう一度、対話シェルを使ってやり直してみると、

months[34,34,39,33,34,38,27,41,33,46,46,41]

で各要素を合計したところ、446になったので=range(446)で、今度は合ってますね。

たぶん、インデックスの数え方が0から始まるので+1なっていてもいいのだと、
勘違いしていたので、range(446)=447でOKなのだと、誤解していました。
ご指摘、ありがとうございます。
0476デフォルトの名無しさん2015/10/10(土) 16:13:00.22ID:jcnnPVwy
キミは大体いつも難しく考え過ぎなのでR
0477デフォルトの名無しさん2015/10/10(土) 16:28:13.84ID:5vRp+uuJ
ここソース貼ってもインデントちゃんと付かないじゃん
質問に不向きなんだよ
0478デフォルトの名無しさん2015/10/10(土) 18:05:20.74ID:UQMKf0jM
>>474
すみません、こんな感じです

f = open(u"data.txt")
data1 = f.readlines()
f.close

f = open(u"del.txt", "r")
del = [line.strip("\n") for line in f]
f.close

number = "150"

def get():
_____for data in data1:
_____list_a = data.strip("\n").split("\t")
_____dict_a = {"name":list_a[0], "cluster":list_a[1]}_____if number in dict_a.values():
_______data2 = dict_a["name"].split()
_______del_data = [d for d in data2 if d not in del]
_______return del_data

data.txtには
文字列、番号のセットのデータが大量に、
del.txtには削除したい文字列が改行区切りで入ってます。
番号は被っており、番号というよりかはグループのイメージです。

このコードだと、150という番号を持った文字列を抜き出し、さらにそこから所定の文字列を削除する、という処理が目的です。

宜しくお願いします。
0479デフォルトの名無しさん2015/10/10(土) 18:26:22.18ID:LR5ASwn1
numpyまじで難しすぎる
数学の知識が無いときついな
0480デフォルトの名無しさん2015/10/10(土) 18:30:55.73ID:LR5ASwn1
>>478
とりあえず短めのサンプルデータと、そのサンプルデータを使って返されるデータを張って
0481デフォルトの名無しさん2015/10/10(土) 18:53:57.48ID:evwOALkb
質問の答えじゃないけど del って変数名に使えるか?エラーでない?
0482デフォルトの名無しさん2015/10/10(土) 19:02:30.99ID:UQMKf0jM
>>480
例えばdata.txtの中身が
abcd 1
efgh 1
ijkl 1
mnop 2
qrst 2
uvwx 2
yz12 3
3456 3
789@ 3
(全てタブ区切り)
だとして、numberを”1”とした場合、本当は
['abcd']
['efgh']
['ijkl']
が返ってきてほしいのにこのままだと
['abcd']
しか返ってこない、ということです。

>>481
変数名は適当に変えただけなので、都合のいいものに変換してくださると助かります。
0483デフォルトの名無しさん2015/10/10(土) 19:12:43.97ID:evwOALkb
return del_dataのせいかな
最初に条件に合うものが見つかった時点で処理が終了してしまうから
返り値用のリストをつくってそれにappendしてさいごにそのリストを返すとか
yield文つかうとか
0484デフォルトの名無しさん2015/10/10(土) 20:06:54.52ID:KhrHeyZL
data = [
['abcd', 1],
['efgh', 1],
['ijkl', 1],
['mnop', 2],
['qrst', 2],
['uvwx', 2],
['yz12', 3],
['3456', 3],
['789@', 3],
]

ary = []
for i in data:
____if i[1] == 1:
________ary.append(i)
print(ary)
0485デフォルトの名無しさん2015/10/10(土) 20:07:25.80ID:KhrHeyZL
ファイルから扱いやすいようにパースするのは自分でやってね
0486デフォルトの名無しさん2015/10/10(土) 21:09:48.83ID:xRAr0t1S
>>482
ほらよっ。

if __name__ == "__main__":
  path = "tech482.txt"
  number = "1"
  L = []
  with open(path) as f:
    for l in f:
      l = l.strip()
     # print(l)
      if not l:
        # 空行
        continue
      key, value = l.split()
      if value == number:
        L.append(key)
  print("L =")
  print(L)
0487デフォルトの名無しさん2015/10/10(土) 21:58:40.61ID:BkPjyjwr
>>486
478によればファイルの1行はタブで区切られた文字列と数字で構成されており、さらに文字列内部にスペースによる区切りを持っている。そのコードでは期待した結果にならないし、質問者を混乱させると思う。
あと、辞書でもなく、keyとvalueの関係でもない値をkey, valueという変数名で受けるのは、初心者を混乱させると思う。
0488デフォルトの名無しさん2015/10/11(日) 02:21:59.87ID:AyUJcJIA
>>482
>>478のgetをジェネレーターにした

def get(number, data_list, del_list):
 for data in data_list:
  name, cluster = data.strip("\n").rsplit("\t", 2)
  if number in (name, cluster):
   yield [d2 for d2 in name.split() if d2 not in del_list]

def main():
 number = "1"
 with open(u"data.txt") as f:
  data1 = f.readlines()
 with open(u"del.txt") as d:
  del_list = d.read().split("\n")
 for L in get(number, data1, del_list):
  print L

if __name__ == '__main__':
 main()
0489デフォルトの名無しさん2015/10/11(日) 07:35:19.16ID:gtAaD4ZL
>>478
if number in dict_a.values(): のところだか、
確認したいのはclusterの値がnumberの値と同じかどうかなんだから、
values()で辞書のすべての値を取得してチェックしているのは、おかしい。
無駄な処理をしてるし、潜在的なバグになる可能性だってないとは言えない。
if dict_a['cluster'] == number: と意図をストレートに反映したプログラムにした方がいい。
0490デフォルトの名無しさん2015/10/11(日) 09:05:37.55ID:ejMduT14
様々なアドバイス、有難うございました。
いろいろな手法があり、とても勉強になります。
取り敢えずは堅実にyieldでデータを返してforで回す、という方法をとりたいと思います。
ご協力有難うございました。
0491デフォルトの名無しさん2015/10/11(日) 10:42:31.52ID:ngi+Bnfd
>>478
x f.close
o f.close()
0492デフォルトの名無しさん2015/10/11(日) 20:56:16.47ID:bs+FqhpV
venvでpython2.7の仮想環境を作る方法を教えてください
0493デフォルトの名無しさん2015/10/11(日) 21:58:33.87ID:WJzfMgSC
python経験者って言えるのってどのくらいのレベル?
学生バイトに申し込みたい
0494デフォルトの名無しさん2015/10/11(日) 21:59:43.94ID:WJzfMgSC
>>493です。
連投すいません。
私は、入門書を1周した程度の、超初心者です。。。
0495デフォルトの名無しさん2015/10/11(日) 22:04:29.32ID:Y91Ji1zq
pyconやってたんですね
誰も話題にしないから開催前に気づかなかった
0496デフォルトの名無しさん2015/10/12(月) 01:24:18.28ID:3+p+nAKf
>>493
経験の意味合いは人によって異なる
そのバイト先に問い合わせなさい
0497デフォルトの名無しさん2015/10/12(月) 09:37:30.89ID:cfQqiQeE
だれかpy2exeより軽量で軽いビルダー作って~
0498デフォルトの名無しさん2015/10/12(月) 12:14:02.34ID:Y/lDePmz
pyconなんて6ヶ月前から話題になってましたが
アンテナが足りないんじゃねえの人のせいにするなよ
0499デフォルトの名無しさん2015/10/12(月) 12:17:32.49ID:ntYAJ4A2
なに14時間前のレスに食ってかかってんだお前
飯でも食えよ腹減ってんだろ?
0500デフォルトの名無しさん2015/10/12(月) 12:22:29.41ID:ObyDPERj
キレるポイントが特異な人だなあw
0501デフォルトの名無しさん2015/10/12(月) 12:31:32.04ID:LCoCFKNB
>>492
venvモジュールはPython3.3から付属するから、あなたは現在すでに3.3以上をインストールしていて、でも2.7も試したい、それも仮想環境の中で試したい、ということでいいのかな。
結論から言うと、venvモジュールにはPythonのバージョンを指定して切り替える機能はないので、venvではできない。
Pythonのバージョンを指定しつつ仮想環境を構築できる方法としては、大雑把に言うと
1. virtualenvを使う
2. pyenvを使う
3. anacondaを使う
の3つがある。
大雑把過ぎてこれだけだと不正確な説明だけど、正確に説明しようとするといくらでも長文になるので、とりあえず方向性としては3つあるんだな、と理解しておいてください。
0502デフォルトの名無しさん2015/10/12(月) 12:34:10.25ID:ntYAJ4A2
誰も話題にしなかったってのは100%嘘だよ
俺2ヶ月前にこのスレでPyConに言及したし
ただPyCon行くよりは, その金でyapcに行くか
焼き肉をたらふく食べることを勧めるね
役に立たないから
0503デフォルトの名無しさん2015/10/12(月) 14:06:52.66ID:QD0vOYoj
それな
0504デフォルトの名無しさん2015/10/12(月) 20:45:14.34ID:TeZNppeg
python2.7のscriptをpython3.4に引っ越そうとして、つまづいています。
2.7では、
str_data = str_data + chr(0xfd) + str_adddata
などとしていました。
元のstr_dataが"00"でstr_adddataが"11"だとすると、この式の後ろでは、str_dataをhexで表現すると"3030fd3131"となっていました。
これは期待動作でした。
しかし、これをpython3.4で動かすと、"3030c3bd3131"となってしまっています。
どう記述すれば、同じ意味にできるのでしょうか。
教えてください。
0505デフォルトの名無しさん2015/10/12(月) 21:30:25.92ID:fqUNFNRv
if __name__ == "__main__":
  str_data = "00"
  str_adddata = "11"
  str_data = str_data + chr(0xfd) + str_adddata
  print("str_data =", str_data)
  print("str_data =", str_data.encode())
  print("len(str_data) =", len(str_data))
  print("len(str_data.encode()) =", len(str_data.encode()))
  print()

  bytes_data = "00".encode()
  bytes_adddata = "11".encode()
  bytes_data = bytes_data + b"\xfd" + bytes_adddata
  print("bytes_data =", bytes_data)
  print("len(bytes_data) =", len(bytes_data))
0506デフォルトの名無しさん2015/10/12(月) 21:56:20.19ID:TeZNppeg
>>505
ありがとうございます。
バイト同士ならOKだったのですね。
期待動作を確認できました。
0507デフォルトの名無しさん2015/10/12(月) 23:50:56.76ID:dF+vuBUQ
三つも聞きたいことがあるのですが、どれでも教えていただけると助かります
環境は関係なさそうですが、一応Python2.7でWindowsです

一つ目:
import Aとfrom A import *って同じですか?

二つ目:
from ctypes import *
windll.user32.SendMessage()
上記のようにしてWin32APIを呼び出しているのですが、
user32.SendMessage()のようにwindllを略して書けるimportの書き方を教えていただけませんか?
以下は自分で試してみたパターンです
from ctypes.windll import user32
import ctypes.windll.user32 as user32
from ctypes import windll.user32 as user32

三つ目:
ctypesを使って書いたスクリプトをこのモジュールごと同梱して配布したいのですが、
これは内部で_ctypesというモジュールをインポートしているようなので、
ファイル検索してみた結果、DLLs/_ctypes.pydとlibs/_ctypes.libで、
らしきファイルを二つ見つけました。これは両方共必要ですか?

以上です。お手数ですがよろしくお願いします
0508デフォルトの名無しさん2015/10/13(火) 00:06:17.74ID:YzZ6qWCc
一つ目
違う

二つ目
windllはモジュールじゃないからimportでは無理
user32 = windll.user32を自分で書く以外ない

三つ目
libは要らん
05095072015/10/13(火) 00:15:55.77ID:AORQ6+t2
>>508
ありがとうございます!助かりました
0510デフォルトの名無しさん2015/10/13(火) 07:04:34.55ID:mv2XvxUt
>import Aと、from A import * って同じですか?
import math as m
m.cos(1)

from math import cos, sin, tan
from math import *
cos(1)

上のように、モジュール名を付けた方が、わかりやすい
0511デフォルトの名無しさん2015/10/13(火) 07:41:15.88ID:f2cwsjVv
>>510
>モジュール名を付けた方が、わかりやすい

一文字が分かり易いか否かは、人によるかと。
0512デフォルトの名無しさん2015/10/13(火) 08:19:51.17ID:YzZ6qWCc
一文字にはしない
a, b, c, i, j, k, n, m, v, x, y, zあたりはループやラムダ変数に使うから
0513デフォルトの名無しさん2015/10/13(火) 08:24:58.45ID:YzZ6qWCc
e, p, q, w, h, r, s, tもよく使うかな
0514デフォルトの名無しさん2015/10/13(火) 08:49:11.87ID:cqCsA1PS
2バイト文字も使えます
0515デフォルトの名無しさん2015/10/13(火) 08:57:46.94ID:Fh+xbXsm
モジュール名はつけておいたほうが弊害無いと思う
cosとかはサードパーティライブラリにもあったりする可能性があるので名前が被って思わぬハマりポイントになりがち
短い書捨てコードなら付けなくてもいいけど
0516デフォルトの名無しさん2015/10/13(火) 11:01:59.94ID:ULA4zX5N
スコープが狭けりゃモジュールはつけない
0517デフォルトの名無しさん2015/10/13(火) 18:00:29.09ID:XHQqqM3u
a = raw_input()
if a == "a":
print ("アタリ")
else == "b":
print ("ハズレ")

入力→結果→再入力の繰り返しにしたいです。
どのように書き加えればうまくいくでしょうか…
お願いします
0518デフォルトの名無しさん2015/10/13(火) 18:01:40.60ID:XHQqqM3u
>>517
else:
print ("ハズレ")

書き間違えました…
0519デフォルトの名無しさん2015/10/13(火) 20:01:45.04ID:U/y2WxCw
while True:
 a = raw_input()
 if a == "a":
  print ("アタリ")
 else:
  print ("ハズレ")
0520デフォルトの名無しさん2015/10/13(火) 20:15:14.36ID:Qx5knz2N
>>519
breakする条件も一応は入れてあげた方がいいんじゃないかw
0521デフォルトの名無しさん2015/10/13(火) 20:27:20.82ID:fswW2dsD
atan2なんですけど
時計の45分のところを0度、0分を90度として計算するにはどうしたらいいですか?
0522デフォルトの名無しさん2015/10/13(火) 20:43:26.84ID:XHQqqM3u
>>519
>>520
ありがとうございます
continueについてばかり考えてwhileを忘れてました。
breakについては調べたら分かりましたので多分大丈夫です…
0523デフォルトの名無しさん2015/10/14(水) 01:35:04.90ID:xEnjhypG
>>521
グラフを書いてみたらイメージ湧くと思うけど、引数に-1掛けて計算すればいける。
0524デフォルトの名無しさん2015/10/14(水) 11:47:27.53ID:NJzvazWx
CSVファイルの行を反転させ、保存するのはどうしたらいいでしょうか?

1,2,3
4,5,6
7,8,9
10,11,12
13,14,15
↓
13,14,15
10,11,12
7,8,9
4,5,6
1,2,3
このような感じで反転させ、保存したいです。
0525デフォルトの名無しさん2015/10/14(水) 11:52:24.96ID:8Sy25YjX
open('out.csv', 'wb').write('\n'.join(reversed(open('in.csv', 'rb').readlines())))
0526デフォルトの名無しさん2015/10/14(水) 11:58:10.57ID:8Sy25YjX
ごめん
これでいいわ
open('out.csv', 'wb').write(''.join(reversed(open('in.csv', 'rb').readlines())))
0527デフォルトの名無しさん2015/10/14(水) 12:02:14.65ID:NJzvazWx
>>525
こんなに簡単なコードで実現させてくれてありがとうございます。
0528デフォルトの名無しさん2015/10/14(水) 12:12:04.99ID:8Sy25YjX
ファイルの最後が改行で終わってない場合は結果が可笑しくなるかも知れない
0529デフォルトの名無しさん2015/10/14(水) 13:34:42.51ID:tbd5i+Zu
$ tac a.csv > b.csv
0530デフォルトの名無しさん2015/10/14(水) 21:01:13.38ID:aVFYhswz
>>526
ごめんちょっと質問
そういうふうに書いたときと
with open('in.csv', 'rb') as f:
__tmp = f.readlines()
__tmp = ''.join(reversed(tmp)
with open('out.csv', 'wb') as f:
__f.write(tmp)
こんな感じに分けて書いた時とでは、機械語になったときに違いがある?
どっちの書き方がいいとかいう話じゃなくて、純粋にマシン語になっても違うのかそれとも最終的に同じになるのかっていう疑問なんだけど。
あとそういう書き方をしたらcloseはしなくてもいい?
0531デフォルトの名無しさん2015/10/14(水) 21:51:09.53ID:O2Vg9iRA
pythonで2chに書き込みたい・・・
0532デフォルトの名無しさん2015/10/14(水) 21:51:30.64ID:travUk60
>>530
機械語じゃないけどdisを使ってバイトコードを見ることはできる

結果は張らないけどwith文なしの方が簡潔だがクリーンアップ処理をしない
closeを呼ばない場合、変数の寿命までファイルハンドルを解放しないだろう
0533デフォルトの名無しさん2015/10/14(水) 22:04:45.01ID:9V9DYJOq
バイトコードと機械語は区別しておかないと
そのうちモヒカンとレザースーツの怖いオッサンにハンドアックスで襲われるぞw
0534デフォルトの名無しさん2015/10/14(水) 22:26:22.36ID:V5hvgk/k
>>530
基本的にはこれがあるので解放されないことはない
ttp://docs.python.jp/3/library/io.html#io.IOBase.__del__
が、__del__が呼ばれるタイミングは保証されないので
ttp://docs.python.jp/3/reference/datamodel.html#object.__del__
大人しくwith文を使いましょう、1行にしたければwith ~ as ~,~ as ~: ~
0535デフォルトの名無しさん2015/10/14(水) 23:33:45.74ID:aVFYhswz
みんなありがとう
・disモジュール
・バイトコードとはなんぞや、また機械語との違い
・io.IOBase.__del__、object.__del__
・with文が複数のコンテキスト式を持てること
知らなかったこと、意識したことがなかったことがこんなにたくさん出てくるとは…
ひと通りリンク先など公式リファレンスを中心に読んでみて、理解できたことも、理解できなかったこともあったけど、勉強になったよ
0536デフォルトの名無しさん2015/10/15(木) 00:11:21.54ID:E11DY73q
おうガンガンdisってやれや
0537デフォルトの名無しさん2015/10/15(木) 10:27:00.45ID:bdlPZJI1
2の頃はopenしてcloseしないプログラムで溢れかえってたな
今でもf=open()してf.closeとか書いちゃうひともいるけど
0538デフォルトの名無しさん2015/10/15(木) 11:29:08.43ID:oh5EEV7k
pipでインストールしたライブラリと同名のファイルをカレントディレクトリに配置した場合
両方のライブラリを読む方法を教えてください
0539デフォルトの名無しさん2015/10/15(木) 12:20:50.64ID:bdlPZJI1
馬鹿には無理
0540デフォルトの名無しさん2015/10/15(木) 12:32:12.53ID:E11DY73q
無理って何なんですか
死ねの間違いでしょ
0541デフォルトの名無しさん2015/10/15(木) 20:53:36.44ID:teOaKAE0
>>538
無理です
カレントの方を
module2.py
等に変更してください
0542デフォルトの名無しさん2015/10/16(金) 00:48:05.36ID:NRJXYjK/
Yuya-no-MacBook-Pro:~ Yuya$ pyenv versions
system
* 3.5.0 (set by /Users/Yuya/.pyenv/version)
Yuya-no-MacBook-Pro:~ Yuya$ pyenv global 3.5.0
Yuya-no-MacBook-Pro:~ Yuya$ pyenv rehash
Yuya-no-MacBook-Pro:~ Yuya$ pyenv version
3.5.0 (set by /Users/Yuya/.pyenv/version)
Yuya-no-MacBook-Pro:~ Yuya$ python --version
Python 2.7.10

なんかいやってもversion切り替えできませんどうしてですか。
0543デフォルトの名無しさん2015/10/16(金) 02:28:13.47ID:nO2Tiq06
bashの設定は?
0544デフォルトの名無しさん2015/10/16(金) 07:05:02.10ID:AgtpvZ0j
ゆーやーwww
0545デフォルトの名無しさん2015/10/16(金) 08:27:28.01ID:FC1Yc6+l
使い方を読んでないからだろ
RTFM
それが嫌なら死ね
0546デフォルトの名無しさん2015/10/16(金) 08:32:35.07ID:jXGfcQ6G
pyenvでは、

activate で仮想環境をアクティブにしなくても良いの?
0547デフォルトの名無しさん2015/10/16(金) 09:38:35.71ID:D33QNIgD
そうだよ
pyenv globalは仮想環境外で使用するpythonを切り替えるコマンドだから
ただし, 適切なPATHが設定されていないと動作しない
指摘されているように, READMEに書いてある
0548デフォルトの名無しさん2015/10/16(金) 10:47:31.18ID:x5kkqrSP
シェケナベイベー
0549デフォルトの名無しさん2015/10/16(金) 10:58:20.93ID:gZzQyjNX
>>542
rehashはinstallしたあとに実行しろ

俺はこうしてるよ
systemに最初から入っているpythonは使わない
pyenvで2.7.10と3.5.0をインストールする
pyenv install 2.7.10 && pyenv rehash
pyenv install 3.5.0 && pyenv rehash
pyenv global 2.7.10 3.5.0
python --version # これは2.7.10
python3 --version # これは3.5.0

~/hogeの中ではpythonで3.5.0を使いたいなら
cd ~/hoge && pyenv local 3.5.0
0550デフォルトの名無しさん2015/10/17(土) 13:11:14.95ID:ycnfRT7Z
Anaconda3でscipyというライブラリを使っているのですが
ソースを見てみると"cdef"や"cimport"といった文があります

cythonではないAnacondaでこれらの文が使えるのはなぜでしょうか
0551デフォルトの名無しさん2015/10/17(土) 13:25:51.00ID:ycnfRT7Z
>>550
自己解決しました
コンパイルしたものを使っていたのですね
0552デフォルトの名無しさん2015/10/17(土) 14:17:16.78ID:8crV4oii
久々のほほえましいレス
0553デフォルトの名無しさん2015/10/17(土) 18:09:19.66ID:XWWnk8mi
pythonって手動GCの方針はあり?

デーモンプログラム作ってるんだけど、自動GCだとメモリがどんどん増加したんで、ループの最後とかにgc.collect()を仕込んだらある一定で安定するようになった
0554デフォルトの名無しさん2015/10/17(土) 18:17:48.87ID:0116KRBh
ありあり。
長時間稼働させる場合は特に必要だと思う。
0555デフォルトの名無しさん2015/10/17(土) 21:25:28.58ID:wyhUq8vl
僕なら10リクエストごとにApacheを再起動しますね
0556デフォルトの名無しさん2015/10/17(土) 22:10:15.90ID:FxuDpipI
Djangoで生年月日を入力させるフォームを作ろうと思うんだけど、
月、日はChoiceField()でシコシコ打ち込めば問題ないけど、年のところは2015年から1900年とかまでと数が多すぎるので何とかならないかなと
皆はどうしてる?
0557デフォルトの名無しさん2015/10/17(土) 22:49:42.62ID:uNJQ9dbe
子供の頃見ていたアニメを入れさせて推測してる
0558デフォルトの名無しさん2015/10/17(土) 23:04:50.32ID:wyhUq8vl
ドロップダウンが良いか単純入力が良いかクライアントに選ばせる
俺が選んで良いならドロップダウンにする
0559デフォルトの名無しさん2015/10/18(日) 01:24:23.00ID:hYDptRZP
>>556
web固有の質問はwebprog板で行うのが2ちゃんのルール

【Python】Webフレームワーク Djangoスレ Part2
http://kanae.2ch.net/test/read.cgi/php/1323960422/
0560デフォルトの名無しさん2015/10/18(日) 05:20:34.38ID:B0fgHUNR
Webの話題多いねえ
コマンドウインドウからのローカルテキスト操作がスクリプト言語の本業だと思うけど
あらゆる技術がWebに向かっちまってて嫌になるねえ
0561デフォルトの名無しさん2015/10/18(日) 09:30:38.82ID:yRFVTkan
思うのは好きにしとけよ
ただしママに報告するかチラシの裏以外に書くな
0562デフォルトの名無しさん2015/10/18(日) 09:53:23.91ID:shRS8GNg
>>558
いや選択方法じゃなくて、コードの記述方法
choices = (
('1980', 1980),
('1981', 1981),
...
)
とかずっと書いていかんといけないのかなと思って
0563デフォルトの名無しさん2015/10/18(日) 10:28:26.07ID:aPDgrt4L
スレ違い
0564デフォルトの名無しさん2015/10/18(日) 10:56:32.84ID:vJDQVwJW
>>560
同意
0565デフォルトの名無しさん2015/10/18(日) 10:58:51.68ID:vJDQVwJW
>>562
choices = [(_, _) for _ in range(1980, datetime.now().year + 1)]
0566デフォルトの名無しさん2015/10/18(日) 13:57:39.20ID:doKDXU1P
Python3歴1日目のド初心者です。
自作classのimportが上手くできず早くも泣きそうです。どなたかお助けください・・・。

下記2ファイルを作成しました。
・D:\dev\src\Controller.py
・D:\dev\src\Config.py
Controller.pyから、Config.pyの中の「Config」クラスを呼び出したいです。
ですが、import文のところに「no module named Config」と表示され
実行すると「TypeError: 'module' object is not callable」とエラーになります。

コードは下記です。

●Controller.py
# -*- coding: utf-8 -*-
import Config
cfg = Config("config.json")
print(cfg.get_all())


●Config.py
# -*- coding: utf-8 -*-
import json
class Config:
  def __init__(self, path):
    file = open(path, mode = "r", encoding = "UTF-8")
    self.json = json.load(file)
    file.close()
  
  def get_all(self):
    return self.json

どなたかお優しいパイソナーの方いらっしゃいましたら、何とぞよろしくお願いいたします。
0567デフォルトの名無しさん2015/10/18(日) 14:20:28.98ID:1p1QfgSs
>>566
import Config
ではなくて
from Config import Config
にすればいけるかと
0568デフォルトの名無しさん2015/10/18(日) 14:33:03.80ID:ePPgzDx9
>>566
pythonの場合はPHPみたいにファイル名の先頭を大文字にする慣習はない
こういう時のためにipythonを入れなさい
import Cを打ったあとにtabをおせば補完候補が出てくる
0569デフォルトの名無しさん2015/10/18(日) 15:05:17.61ID:sPJe7rRi
>>510

importの書き方も、参照
0570デフォルトの名無しさん2015/10/18(日) 15:55:36.36ID:81sora9Q
>>567
嘘ではないけど
その解決方法はおすすめじゃない感じがする
0571デフォルトの名無しさん2015/10/18(日) 16:34:04.95ID:doKDXU1P
>>567-569
ありがとうございます!!
importの書き方と、ファイル名・クラス名をPEP8準拠に直しました。
おかげさまで、とりあえず動作させることはできました。

ただ、今度は、
「This inspection detects names that should resolve but don't.」
なるエラーが出てしまい、さらにcfg.から先のコード補完が動作してくれません・・・
このエラー文について、stack overflowの英語記事しか引っかからずよくわかりませんが
PyCharmのバグ?っぽいです・・・
http://stackoverflow.com/questions/25147180/opening-attempting-to-read-a-file

>>570
もしよければ、よりよい解法をご教示いただけるとありがたいです
0572デフォルトの名無しさん2015/10/18(日) 16:39:02.91ID:doKDXU1P
あと直接Pythonに関係なく恐縮なのですが
PyCharmでエラーや警告文を常時表示してくれるウィンドウはあれば教えていただけないでしょうか
eclipseの「問題」ビューみたいなやつです
標準だと、エラー箇所にカーソルあわせてctrl+F1を押さないとエラー文が表示されないし
しかも表示してくれるエラー文がポップアップのためコピペできず
非常に不便です・・・
0573デフォルトの名無しさん2015/10/18(日) 16:56:46.31ID:doKDXU1P
from src import config
とすることで直りました!エラーも出ず、補完もできるように・・・
ありがとうございます。

ただ、この書き方だとディレクトリがsrcじゃなくなったらおしまいですね・・・
相対パスで上手く書けないんでしょうか
0574デフォルトの名無しさん2015/10/18(日) 17:02:08.43ID:81sora9Q
sys.path.append('src')
これもおすすめじゃないけど
0575デフォルトの名無しさん2015/10/18(日) 17:49:41.55ID:HDTZmcWK
絶対にアクセスできないクラスのプライベートメソッドってできませんか?
class A:
__def __m(self):
____print(1)

これだとクラスオブジェクトさえあれば_外部から__mにアクセスできてしまいます
0576デフォルトの名無しさん2015/10/18(日) 17:53:24.96ID:sMC62kag
2と3でも動くコードを同じファイルで書きたいんですが
2と3で名前が変わった標準ライブラリがあるじゃないですかurllibとか。
この場合ならrequests使えばいいんですがこれはあくまでも例えってことで。
サードパーティのライブラリを使わない場合でこういうのはどう解決したらいいですか?
0577デフォルトの名無しさん2015/10/18(日) 17:57:46.56ID:IrNm6I6C
>>572
Codeメニュー>Inspect Codeで警告やらエラーの一覧がツールウィンドウに表示される
https://www.jetbrains.com/pycharm/help/inspection-tool-window.html
0578デフォルトの名無しさん2015/10/18(日) 18:02:26.27ID:IrNm6I6C
>>576
Python のバージョン毎の違いとその吸収方法について - CUBE SUGAR CONTAINER
http://blog.amedama.jp/entry/2015/09/06/204552
0579デフォルトの名無しさん2015/10/18(日) 18:03:00.25ID:81sora9Q
>>576
これ見たら?
https://www.youtube.com/watch?v=U1CSxd-kklY
0580デフォルトの名無しさん2015/10/18(日) 18:08:41.08ID:jvqZfICy
pytestのsetup_classとteardow_classってテストの最初と最後には実行されますがテストケース毎に実行されませんよね
テストケース毎に実行させるほうほうってありませんか?
0581デフォルトの名無しさん2015/10/18(日) 18:20:27.29ID:zFgX1Igt
>>575
アンダースコア2つでアクセス出来なくなるわけじゃないけど
みんな大人だからさ、人の意図に反する行為はやらないよね?
0582デフォルトの名無しさん2015/10/18(日) 18:43:48.85ID:P+8yiDHO
>>566
rename Config.py config.py
rename Controller.py controller.py

import config
cfg = config.Config("")

>>573
http://diveintopython3-ja.rdy.jp/
一通り読むと良いよ。

>>575
無理です。
紳士協定で、_(under score)付きのmethodは使用しないってなってるので、
def _m(self):
 pass
とでもして下さい。
0583デフォルトの名無しさん2015/10/18(日) 18:57:05.39ID:iFZOaEXb
>>576
俺はこんな感じで対処してる

import sys
if sys.version[0] == '2':
__from urllib import urlopen
if sys.version[0] == '3':
__from urllib.request import urlopen
0584デフォルトの名無しさん2015/10/18(日) 19:11:48.90ID:doKDXU1P
constなし
privateなし
ライブラリはpython2にしがみつく老害のゴミだらけ
ideの補完もゴミ

数値と文字列の連結に、型を気にしてstr()をしてあげないといけないなんて
鼻で笑っちまったわ

なんだこのゴミ言語
ペチピー以下じゃねえか
マイナー言語なわけだわ・・・
0585デフォルトの名無しさん2015/10/18(日) 19:13:41.50ID:doKDXU1P
天才の僕は1日目にして気付いちゃったけれど
これ言語仕様酷すぎません??
python作ってる人ってまともな教育受けてなかったのかな・・・なんか憐れみすら覚える
0586デフォルトの名無しさん2015/10/18(日) 19:27:51.65ID:8xhftPvG
python書いてると気持ちいいよね
0587デフォルトの名無しさん2015/10/18(日) 19:28:34.75ID:doKDXU1P
まともなxlsx読書するライブラリも、いまだ完全に3対応していない
驚きモモヒキケンタッキーだわ
こんな糞言語にしがみついて生産性落としてる奴らって・・・
電気の無駄、時間の無駄、酸素の無駄
公害だわ、全人類の敵、地球の敵、みんなちょっと死んだ方がいいんではないですか?
0588デフォルトの名無しさん2015/10/18(日) 19:29:37.82ID:doKDXU1P
>>586
お、ドMゥー!
0589デフォルトの名無しさん2015/10/18(日) 19:49:01.65ID:iFZOaEXb
>>580
1つのクラスで1つのテストケースを実装するとして、
単一モジュール内で複数のテストケースを実行する場合に、
それぞれのテストケースごとにそれぞれ違う処理をその前後にさせたいっていうこと?
0590デフォルトの名無しさん2015/10/18(日) 21:43:53.39ID:9gnwfSc1
ぺちぱーは10分おきに人生でも再起動してどうぞ
0591デフォルトの名無しさん2015/10/18(日) 22:23:34.51ID:Tu8sQdti
>>585
天才なら君が選んだ言語を教えてね。あと、名前も付けてね。
0592デフォルトの名無しさん2015/10/18(日) 22:28:57.28ID:s8XdCc41
貶めるために初心者装って真面目にレスしてくれた人を裏切ってそれで満足したかい?

さぞや気分がいいんだろうね?
0593デフォルトの名無しさん2015/10/18(日) 23:16:27.50ID:u1NWdmdH
Python使ってていつも思うのは変数宣言があった方が良かったんじゃないかなって点
C#みたいに
var i = 0
var str = 'hoge'
とか宣言できたらいいのにと思った
(もちろん宣言せずにいきなり参照・代入したらエラーで)
0594デフォルトの名無しさん2015/10/18(日) 23:20:56.38ID:9gnwfSc1
yamlが標準ライブラリに含まれるわけでもないのに
リファレンス内(logging how toを見よ)で平気でyamlを使う神経だけは理解できない
0595デフォルトの名無しさん2015/10/18(日) 23:34:59.60ID:B0fgHUNR
>>593
何でそう思うの?
タイプ量が増えるだけでメリットを感じないが
0596デフォルトの名無しさん2015/10/18(日) 23:39:16.81ID:zFgX1Igt
>>593
既にある変数に再代入するコードと区別がつかないのが問題ということかな
後はif-else文はブロックを作らないから
分岐中に代入して合流後に使うコードでNameErrorが発生したり
0597デフォルトの名無しさん2015/10/19(月) 00:22:08.90ID:Oh7pgbBt
>>593
IDE使ってればいきなり参照は警告してくれる

それよりもmapとかfilterがメソッド形式になってくれた方が嬉しい
0598デフォルトの名無しさん2015/10/19(月) 09:24:54.60ID:0FeynMog
>>593
その宣言は無意味なんだ
0599デフォルトの名無しさん2015/10/19(月) 09:26:07.01ID:0FeynMog
>>584-585
馬鹿には無理
0600デフォルトの名無しさん2015/10/19(月) 17:00:46.05ID:BVriihZ8
pytestとpytest-cov使ってるんですがテストでcoverageで100%を取りたいんですが鳥漏れがあります
テストされていないコード行が知りたいんですが知る方法ありませんか?
pytestにこだわってるわけでもないので別のテストライブラリで実現できるならそれを教えてください
phpunitだとこんなふうにテストされた箇所が視覚的にわかるのでこういう風に知りたいです
http://cdn-ak.f.st-hatena.com/images/fotolife/s/secret_hamuhamu/20150527/20150527005349.png
0601デフォルトの名無しさん2015/10/19(月) 17:56:28.36ID:0FeynMog
ぺちぱー
0602デフォルトの名無しさん2015/10/19(月) 19:31:13.79ID:TQDUnBKM
dict同士の引き算ってどうやるんですか?
{"a": 1, "b": 2}から {"b": 2}を引いて{"a": 1}にしたいです
0603デフォルトの名無しさん2015/10/19(月) 19:49:18.75ID:QZomG315
>>602
諦めよ
dictに集合演算機能はない
0604デフォルトの名無しさん2015/10/19(月) 20:26:02.75ID:OhaGgHJ3
意地悪な奴だ
dictに集合演算機能はない(がdictviewにはある)
0605デフォルトの名無しさん2015/10/19(月) 20:29:26.87ID:OhaGgHJ3
>>600
pytestの実行時に--cov-report htmlオプションを与えるとhtmlを出力する
はず

俺はnose派だから詳しくない
0606デフォルトの名無しさん2015/10/19(月) 20:29:35.87ID:pRRTzcro
a = [[[0], [1], [2]],[[3], [4], [5]]]
del a[0]
print(a)
とか
a = [[[0], [1], [2]],[[3], [4], [5]]]
del a[1][2]
print(a)
みたいに異なる階層の値を削除したい
深い階層に行くほど[]を複数書いていくことになりますが
リストの階層に合わせてハードコーディングしないといけませんよね
上のaの場合だと[n]と[n][i]の2つをハードコーディングしなければいけません
aがもっと深い階層まで拡大することに備えて、動的にインデックスを指定して削除したいのですが方法を教えてください 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0607デフォルトの名無しさん2015/10/19(月) 20:30:52.13ID:OhaGgHJ3
出力例
http://i.stack.imgur.com/PNhkb.png
0608デフォルトの名無しさん2015/10/19(月) 20:33:59.18ID:CabTOv+a
>>602
いくつか引き算の定義が考えられるけど、fooがあるとする
>>> foo = {"a": 1, "b": 2}

1.指定したキーを取り除く
>>> bar = {"b"}
>>> {key: value for key, value in foo.items() if key not in bar}
{'a': 1}

2.指定した値を取り除く
>>> bar = {2}
>>> {key: value for key, value in foo.items() if value not in bar}
{'a': 1}

3.キーと値が一致するものを取り除く
>>> bar = {"a": 1000, "b": 2}
>>> dict(item for item in foo.items() if item not in bar.items())
{'a': 1}
0609デフォルトの名無しさん2015/10/19(月) 20:58:50.51ID:OhaGgHJ3
>>606
そーゆーときは一段ずつ処理するんだ
1, 2を消したいならまずa[1]を適当な変数tmpに取り出す
それからdel tmp[2]する

同様に1, 2, 3, 4なら
tmp = a[1]
tmp = tmp[2]
tmp = tmp[3]
del tmp[4]
これをループを使って書き直す
その程度は自分でやれ
0610デフォルトの名無しさん2015/10/19(月) 21:12:23.56ID:CabTOv+a
>>606
高階関数を定義する
funcへ渡す関数をlambdaではなくdefで定義すれば複雑な処理もできる

def f(func, a, ns):
 b = a[ns[0]]
 for i in ns[1:]:
  b = b[i]
 return func(b)

>>> a = [[[0], [1], [2]], [[3], [4], [5]]]
>>> f(lambda x: print("result =", x), a, [0])
result = [[0], [1], [2]]
>>> f(lambda x: print("result =", x), a, [1, 2])
result = [5]
0611デフォルトの名無しさん2015/10/20(火) 08:05:56.35ID:+y34cH6I
急募、タイプヒンティングに自信ニキ
PyCharmの補完が糞過ぎて草も生えない
0612デフォルトの名無しさん2015/10/20(火) 12:48:49.01ID:W9uB5SNn
>>611
http://qiita.com/methane/items/e95c578c3d8fc5f1f62e
0613デフォルトの名無しさん2015/10/20(火) 16:59:27.98ID:aHZFphRv
IntelliJって褒めるほどの出来じゃねえよな
そりゃeclipseみたいなゴミに比べれば良いものだろうけど
0614デフォルトの名無しさん2015/10/20(火) 21:35:59.87ID:TC/ibFEV
タイプヒンティングに頼るんだったら静的型付けの方が手っ取り早いよな…

>>612
ofなんて使えたのか
list[str]って書いてたわ
0615デフォルトの名無しさん2015/10/20(火) 21:44:43.19ID:IcBvDclU
pycharmなんかよりjediのほうがすごいんだぞ!
0616デフォルトの名無しさん2015/10/20(火) 22:25:47.27ID:7U/Y/4//
アルファベットの増減てどう書くといいの。
char value_a = 'b' - 1;
char value_c = 'a' + 2;
のような。
0617デフォルトの名無しさん2015/10/20(火) 22:37:00.70ID:A1vNd6F7
chr(ord(c)+n)
0618デフォルトの名無しさん2015/10/20(火) 22:49:37.80ID:aHZFphRv
aの次がbだと思うなよとプログラミングの師匠からは教わった
0619デフォルトの名無しさん2015/10/21(水) 01:44:43.22ID:k2x/6pgE
std::istream_iterator<char> is(ifs); の行不要な
あとcoutの最後にstd::endlもつけてやってくれ。
0620デフォルトの名無しさん2015/10/21(水) 05:26:59.47ID:YZnuen5o
>>618
特殊な環境だけ
0621デフォルトの名無しさん2015/10/21(水) 10:28:15.90ID:TJeiUleN
array = [1, 2, [3, 4]]
を

array = [
__1,
__2,
__[
____3,
____ 4
__]
]
こんなふうに深さを視覚的に見やすく出力する方法ありませんか?
0622デフォルトの名無しさん2015/10/21(水) 10:35:46.90ID:4CVMjexC
pprint
0623デフォルトの名無しさん2015/10/21(水) 11:19:38.96ID:TJeiUleN
pprintではできません
0624デフォルトの名無しさん2015/10/21(水) 11:25:07.13ID:zc5Cc/IW
YAML
0625デフォルトの名無しさん2015/10/21(水) 11:51:29.99ID:az0eFhYY
def f(a):
b = a
del b[0]
print(a)
print(b)

f([0, 1])

aとbが同じなんですが何故ですか?
何でbの値を消したのにaの値も消えてるんですか?
0626デフォルトの名無しさん2015/10/21(水) 11:59:23.07ID:/9+8IY9r
代入は参照のコピーでインスタンスはコピーしない
0627デフォルトの名無しさん2015/10/21(水) 12:34:35.50ID:4CVMjexC
>>621, 625
def f(a):
  # see
  # http://diveintopython3-ja.rdy.jp/table-of-contents.html#native-datatypes
  # http://diveintopython3-ja.rdy.jp/native-datatypes.html#lists
  c = a.copy()
  d = a[:]
  b = a

  print("f() ==========================================================")
  print("id(a) =", id(a))
  print("id(b) =", id(b))
  print("id(a) == id(b),", id(a) == id(b))
  print("id(c) =", id(c))
  print("id(d) =", id(d))
  print()
0628デフォルトの名無しさん2015/10/21(水) 12:36:40.14ID:4CVMjexC
>>627 の続き
  del b[0] # del a[0] と同じ。
       # なぜならば、id(a) == id(b) だから。

  print(a)
  print(b)
  print()

  a.append(100) # [1].append(100)
  c.append(200) # [0, 1, 100].append(200)
  d.append(300) # [0, 1, 100].append(300)

  print(a)
  print(b)
  print(c)
  print(d)
0629デフォルトの名無しさん2015/10/21(水) 12:41:02.67ID:4CVMjexC
import pprint
def g():
  print("g() ==========================================================")
  # see http://docs.python.jp/3/library/pprint.html
  pp = pprint.PrettyPrinter(width=10)
  pp2 = pprint.PrettyPrinter(width=10, compact=True) # python3.4
  array = [1, 2, [3, 4]]
  pp.pprint(array)
  pp2.pprint(array)

 # help(pprint)

if __name__ == "__main__":
  f([0, 1])
  g()

>>625
b = a
だけでは、bもaも同じなの
0630デフォルトの名無しさん2015/10/21(水) 12:57:30.65ID:Zr5MZtBC
>>625
b = a[:]
0631デフォルトの名無しさん2015/10/21(水) 16:35:41.70ID:ZXMR/M8n
Pythonについてはよく知らないけど、一般的に代入では、
intなどの単純型(primitive)では値自体がコピーされる

クラス・配列などの複合型(コンテナ)は、
一々各要素はコピーされず、
複合型を指す参照(アドレス値)だけがコピーされる
0632デフォルトの名無しさん2015/10/21(水) 17:00:07.91ID:t8SS3rgX
>>631
> Pythonについてはよく知らないけど、一般的に代入では、

おまえは「くだすれPython(超初心者用) その27」スレで何を言ってるんだ?
0633よこ2015/10/21(水) 17:43:08.75ID:mNcocD1t
1レコード読み込むごとに出力するのではなく、
最後に一括して、ファイルに出力する方法を教えて下さい。

例)入力ファイルを最後まで読み込み、全レコードがえらーがない場合のみ、
  入力ファイルの全レコードを出力ファイルに出力する。

よろしくお願いいたします。
0634デフォルトの名無しさん2015/10/21(水) 18:23:19.49ID:/9+8IY9r
何でそこまで説明できるのにプログラムに書き下せないんだよ!
0635デフォルトの名無しさん2015/10/21(水) 18:26:03.86ID:Lz4gKDdZ
u'\xe3\x82\xab\xe3\x83\xa1\xe3\x83\xa9'
みたいにutf-8として読まないといけないのにunicodeとして取得しちゃった文字列を
後から
u'\xe3\x82\xab\xe3\x83\xa1\xe3\x83\xa9' → '\xe3\x82\xab\xe3\x83\xa1\xe3\x83\xa9'
に変換する方法はありますか?

よろしくお願いします。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
0636デフォルトの名無しさん2015/10/21(水) 18:27:12.66ID:/9+8IY9r
何が分からないのか全く分からないから
ヒントになるのかどうかも分からないけど
list(file)で全行を一旦リストに入れて
書き込む時はfile.writelines使うといい
0637デフォルトの名無しさん2015/10/21(水) 18:37:08.05ID:/9+8IY9r
>>635
str.encode('iso-8859-1')
0638デフォルトの名無しさん2015/10/21(水) 18:41:47.54ID:Lz4gKDdZ
>>637
ありがとうございます!
文字コード関連は難しい…
0639デフォルトの名無しさん2015/10/21(水) 19:16:11.15ID:T5Qpsw3w
Class C:
def a(self):
pass
def b(self):
pass

クラスのメソッド名を取得する方法を教えてください
この場合ではaとbの2つのみが知りたいです
0640デフォルトの名無しさん2015/10/21(水) 19:33:16.82ID:C0yBgOIh
inspect.getmembersを使う
0641デフォルトの名無しさん2015/10/21(水) 19:35:52.39ID:4CVMjexC
>>> [func for func in dir(A) if not func.startswith("_")]
['func1', 'func2']
0642デフォルトの名無しさん2015/10/21(水) 19:51:09.86ID:4CVMjexC
ごめん、こっちの方が良い
>>> [name for name, func in A.__dict__.items() if callable(func)]
['func2', 'func1']

>>641 は止めで
0643デフォルトの名無しさん2015/10/21(水) 20:43:25.36ID:T5Qpsw3w
>>
0644デフォルトの名無しさん2015/10/21(水) 20:47:43.46ID:T5Qpsw3w
>>640
>>642
ライブラリを使う方法使わない方法両方でできました
どうもありがとうございました
0645デフォルトの名無しさん2015/10/21(水) 20:58:54.64ID:Lxq5Xv0N
utf-8以外はみんな死ねばええねん
utf-8以外使ってるど阿呆はrm -rfや
0646デフォルトの名無しさん2015/10/21(水) 21:03:13.41ID:/9+8IY9r
utf-8-mac(nfdのutf8)も死んだらええねん
0647デフォルトの名無しさん2015/10/21(水) 23:50:21.15ID:+lQNWzhB
pythonもphpみたいに独特な仕様が合ってきもち悪い
0648デフォルトの名無しさん2015/10/22(木) 00:10:17.03ID:TKCRaEBU
>>645
つ sudo
0649デフォルトの名無しさん2015/10/22(木) 06:53:13.03ID:oin5XU3S
歯ブラシとプログラミング言語を比べるのはナンセンスでしょう
0650デフォルトの名無しさん2015/10/22(木) 07:38:22.61ID:svRgbvpo
パイソニスタだったら歯ブラシは手動だよな?
0651デフォルトの名無しさん2015/10/22(木) 13:09:56.29ID:522gqyPw
>>645
2ちゃんも消えるな
0652デフォルトの名無しさん2015/10/22(木) 14:04:55.07ID:LYhTv0Jg
dic = {"a":1, "b":1, "c":1}
print(dic)
こうしたときに{"a":1, "b":1, "c":1}ってかいた順番通りに出力させる方法ありませんか?
{"b":1, "c":1, "a":1}みたいにランダムで出力されるので
0653デフォルトの名無しさん2015/10/22(木) 14:09:07.14ID:Clh0KPl/
つOrderedDict
0654デフォルトの名無しさん2015/10/22(木) 14:27:56.50ID:522gqyPw
パフォーマンスどれくらい落ちるんだろ
0655デフォルトの名無しさん2015/10/22(木) 14:58:25.49ID:oin5XU3S
Cで書き直されて4倍から100倍高速になった(Python3.5 what's new曰わく)
という所から考えるに, 少なくとも4倍遅いでしょう
ボトルネックになるかどうかは使用頻度次第でしょうが
0656デフォルトの名無しさん2015/10/22(木) 15:43:51.12ID:522gqyPw
OrderedDict の話だよ
0657デフォルトの名無しさん2015/10/22(木) 16:23:09.80ID:ySLNTuee
それをCで書き直したら以前はDefaultDictに比べて4倍遅かったけれど今は100倍…あれ?なんか違うな
0658デフォルトの名無しさん2015/10/22(木) 16:35:35.84ID:oin5XU3S
OrderedDictの実装はdict+linkedlistだからdictより遅い
dict=1とすると
1=dict<OrderedDict

Python3.5ではCで書き直されたということだから,
OrderedDictの速度はdictに近くなったと考えられるが,
アルゴリズム的にdictを上回ることはない
したがって

1=dict<OrderedDict(3.5)<OrderedDict(~3.4)

で, 右の不等号の部分は4~100倍らしいから,
Python3.4までのOrderedDictは, 少なくともdictより4~100倍遅いと見積もれる
0659デフォルトの名無しさん2015/10/22(木) 16:38:17.11ID:oin5XU3S
で, 最初から最後までOrderedDictの話をしていたけど
「OrderedDictの話だよ」ってどういう意味?
0660デフォルトの名無しさん2015/10/22(木) 17:02:35.71ID:522gqyPw
dict=1とする意味は?
0661デフォルトの名無しさん2015/10/22(木) 17:07:06.98ID:ySLNTuee
えー…
あかんわ
0662デフォルトの名無しさん2015/10/22(木) 17:53:46.10ID:522gqyPw
IDわろた
0663デフォルトの名無しさん2015/10/22(木) 18:14:47.89ID:5FjGz1l/
import lxml
print(lxml.etree)
>>AttributeError: module 'lxml' has no attribute 'etree'

from lxml import etree
print(etree)
こっちはエラーがでません
何でfromでかいたほうがエラーにならないのにlxml.etreeって書くのはエラーになるんですか?
0664デフォルトの名無しさん2015/10/22(木) 19:23:19.51ID:oin5XU3S
>>660
さすがに二の句が継げない
数年したら分かるよ

>>663
lxmlパッケージの__init__.pyが何もimportしてないから
パッケージ配下のモジュールが暗黙的にimportされることはない
一部のライブラリで
import パッケージ名
するとモジュールも使用可能になるのは
__init__.pyの中にimportが書いてあるから
0665デフォルトの名無しさん2015/10/22(木) 19:58:24.03ID:Gknfkluf
>>658
> アルゴリズム的にdictを上回ることはない

アルゴリズムはいいけどクソ実装の可能性を何故無視する?
0666デフォルトの名無しさん2015/10/22(木) 20:34:39.24ID:bQPHsZ7G
そんな詭弁のガイドラインの定番を持ち出しても仕方ないでしょ。
そんなんだから馬鹿にされるんだよ。
0667デフォルトの名無しさん2015/10/22(木) 20:42:33.47ID:+naZ/uDa
a/lib.py
b/lib.py

b/lib.pyでimport a.libしてもインポートできませんが
空のb/__init__.pyを作成するとインポートできるようになりました
何故インポートできるんですか?
0668デフォルトの名無しさん2015/10/22(木) 20:51:04.42ID:oin5XU3S
>>665
そりゃあ最初の書き込み前にソースコードを読んで断定しましたから
可能性が割り込む余地はないですね
0669デフォルトの名無しさん2015/10/22(木) 21:57:09.36ID:svRgbvpo
>>668
んで、何が素のdictより遅くなる原因なの?
dict+linkedlistだったら参照コストは素のdictと同じでも良さそうなもんだけど?
0670デフォルトの名無しさん2015/10/22(木) 22:08:14.49ID:kinLxVE3
>>666
詭弁のガイドラインなんて久々に聞いたわ w
爺乙
0671デフォルトの名無しさん2015/10/22(木) 22:13:34.49ID:lrbbaRKO
Python自体が糞だしその上にこさえられた糞の糞っぷりを競い合っても仕方なかろうもん
0672デフォルトの名無しさん2015/10/22(木) 22:54:36.60ID:svRgbvpo
アレアレ? ID:oin5XU3S居なくなっちゃった?w
0673デフォルトの名無しさん2015/10/23(金) 02:51:11.81ID:KbxpAfMH
>>667
パッケージは普通のディレクトリで、
そのディレクトリ内に、__init__.pyモジュールが必要で、
__init__.py内に、定数なども定義できる

import パッケージ
で、__init__.pyの内容が読み込まれる

from パッケージ import モジュール
の形式もある

パッケージ内には、サブパッケージ・モジュールを置ける
0674デフォルトの名無しさん2015/10/23(金) 04:10:41.08ID:bes8qU3y
>>669
参照コストは変わらんと思うよ
誰も参照コストに限定した話なんてしてないけどね...
アホが必死にマウント取ろうとしてる姿は哀れだな
shi3zみたいだ
0675デフォルトの名無しさん2015/10/23(金) 04:17:10.90ID:bes8qU3y
まあ下らない揚げ足取りにはこれ以上付き合わないさ
「OrderedDictの話だよ」を好きなだけ続ければいい
0676デフォルトの名無しさん2015/10/23(金) 04:27:56.04ID:bes8qU3y
>>667
その構造ではb/__init__.pyがあってもimport a.libではimportできない...
状況説明が不正確か, あるいは説明されていない所に理由があると思う
0677デフォルトの名無しさん2015/10/23(金) 05:12:27.64ID:NKqGTZsQ
>>674
追加も大して変わらんのだけどな
また居なくなっちゃう?w
0678デフォルトの名無しさん2015/10/23(金) 05:43:20.27ID:NKqGTZsQ
暇だから書いておく

OrderedDictがdictと同じアルゴリズムでキーの管理にリンクドリストを使っているとすると
・__getitem__l, values
速度は同じ
・__setitem__
リストの末尾に追加する分非常に僅かに遅い可能性がある
・keys, items
リストを辿るだけなので実装によってはdictより速い可能性もある
という結果になる

つまりID:oin5XU3Sによる発言
1. OrderedDictの実装はdict+linkedlist
2. 少なくともdictより4~100倍遅い
3. ソースコードを読んで断定しました
このうち、1.を正しいと仮定する事で、2. or 3. のいずれかが誤りである事が分かる

「必死にマウント取ろうと」したいのは分かるけどウソはいかんよ
だってすぐバレちゃうんだもんw
あとアルゴリズムの勉強しようねw
0679デフォルトの名無しさん2015/10/23(金) 11:45:28.19ID:EGmG1R8f
クラウドソーシング使って修行してみたいんだけど
クラウドソーシングってどれくらいの腕なら食えるくらい稼げる?
自分プログラミング歴はpython2.7が初学初心者で、
これから「はじめてのPython」をがっつりやってみる予定です。
この本のコードが書けるようになったら挑戦しても大丈夫かな?
0680デフォルトの名無しさん2015/10/23(金) 11:49:28.66ID:KfqstdW8
それなりの腕()があっても
平日の昼間から2ちゃんやってる人には頼みたくならない
0681デフォルトの名無しさん2015/10/23(金) 12:28:02.26ID:8qkwY/Qu
小数点以下2桁のみ表示するにはどうしらいいでしょうか?整数値はn桁全て無視したいです
0682デフォルトの名無しさん2015/10/23(金) 13:19:50.74ID:EGmG1R8f
と思ったけど
初めのpythonが2009年、クックブックが2007年dkr
本は新版待ってsbrkネットで勉強しよう
0683デフォルトの名無しさん2015/10/23(金) 13:22:35.30ID:gdSvDFNq
宣伝成功wwwwwww
0684デフォルトの名無しさん2015/10/23(金) 15:54:14.99ID:8qkwY/Qu
>>681
自決。普通に正規表現で処理した
0685デフォルトの名無しさん2015/10/23(金) 16:41:16.69ID:aB7VvuXv
print("{:.2f}".format(0.12345))
0686デフォルトの名無しさん2015/10/23(金) 16:42:56.91ID:aB7VvuXv
print("{}".format(str(0.12345).split('.')[1][0:2]))
0687デフォルトの名無しさん2015/10/23(金) 17:27:19.46ID:1FmkefyV
みんPyの宣伝してた奴いつの間にかいなくなったな
0688デフォルトの名無しさん2015/10/23(金) 18:11:34.08ID:CLZQE+Gq
宣伝したらアマゾンで悪口かいてやるから覚悟しろ著者ども!
0689デフォルトの名無しさん2015/10/23(金) 21:02:59.00ID:Mcb87vot
みんな女性プロ グラマーと話すとき
pypyって何て発音してる?
0690デフォルトの名無しさん2015/10/23(金) 21:06:52.18ID:NKqGTZsQ
女と話せるとかリア充かよwwwwwwwwwww
0691デフォルトの名無しさん2015/10/23(金) 21:14:03.19ID:1FmkefyV
今のところpypyに言及する機会がない
0692デフォルトの名無しさん2015/10/23(金) 21:17:12.56ID:Bkh3nx47
ぷいぷい
ぴいぴい
0693デフォルトの名無しさん2015/10/23(金) 21:31:36.92ID:1egZ0Qog
そもそもPythonの話が通じるプログラマー自体非常にレア
0694デフォルトの名無しさん2015/10/23(金) 21:40:58.03ID:1FmkefyV
探せばいくらでもいるけど、偶然遭遇はほとんどないねえ
0695デフォルトの名無しさん2015/10/23(金) 22:40:20.71ID:cNciiAba
>>679
Pythonの仕事なんてクラウドソーシングであるの?
ちょっと想像できない
theano使って論文実装できるレベルの人にならいくらでも仕事頼みたいけどそんな人転がってないし
0696デフォルトの名無しさん2015/10/23(金) 22:52:43.10ID:pRrg/BSt
cpython以外を使う必要性がない
0697デフォルトの名無しさん2015/10/23(金) 23:55:47.60ID:KbxpAfMH
matplot, R などの処理も、Pythonへ移行しつつある
0698デフォルトの名無しさん2015/10/24(土) 12:02:59.08ID:niXzNvfm
>>689
汁出しながら話してる
0699デフォルトの名無しさん2015/10/24(土) 19:03:17.43ID:3slC6hth
DOE処理を自動化したいです。

オリジナルファイルがひとつある。

ファイルをコピーして、ファイルを開き、変数部分を書き換えて保存して閉じる。

これを水準数分実行したいです。
ざっくりで良いのでコードを教えて下さい。
0700デフォルトの名無しさん2015/10/24(土) 19:22:20.34ID:Gv3c0teS
>>699
ごめんDOEって何?プログラムでやりたいことと関係ある?
あと水準っていわれてもわかんないので一般的な言葉で説明してほしい
オリジナルファイルが複数あってそのファイルごとに同じ処理を実行したいってことでいいのかな?
0701デフォルトの名無しさん2015/10/24(土) 19:31:47.80ID:wB/X7nCW
実験計画法のことじゃねーかな
水準数って単語が出てくるってことは

ただやってることは単なるテキスト処理でDOEは全く関係ないと思うけど
ファイルの出所のことであって
0702デフォルトの名無しさん2015/10/24(土) 20:32:34.04ID:Gv3c0teS
ははあ でもそう聞くと変数部分を書き換えてっていうのは
変数名を書き換えるってことかと思ってたけどそうじゃなくて変数の値を書き換えるってことで
その変数の値を書き換える処理を実験の数の分だけしたいってことなのかな?とかも思っちゃう
それだけならわざわざ物理的にファイルをコピーしなくてもいいじゃんとかも思ったり

適切な抽象度で正確にやりたいことを説明してくれないと
ざっくりにしろじっくりにしろ回答できないよ
0703デフォルトの名無しさん2015/10/24(土) 22:07:12.51ID:89dPDR9H
とりあえず質問者の返信をまとうか
0704デフォルトの名無しさん2015/10/24(土) 23:49:34.74ID:brrrlGfC
いまどきPython2にしがみついてる老害のゴミ屑って何なんですか?
死んでほしい
0705デフォルトの名無しさん2015/10/25(日) 00:04:58.86ID:cAm39BSn
特に未だ3未対応のライブラリ!!
作者小一時間ほど説教して引っぱたいてやりたいわ、この無能が
0706デフォルトの名無しさん2015/10/25(日) 00:14:42.13ID:YZ5g+13y
>>704
老害のゴミ屑みたいな環境を使わざるを得ないからだよ。
俺は今 python2.4を使ってるよ。何気ないことの実現がひどく難しい。
0707デフォルトの名無しさん2015/10/25(日) 00:17:54.93ID:xV04ZCve
殺せばいいだろ
殺せない無力なガキが喚くな
0708デフォルトの名無しさん2015/10/25(日) 00:21:52.09ID:yRM5qJHB
IronPythonとJythonが3対応したらもう2系には用ないわ〜
0709デフォルトの名無しさん2015/10/25(日) 00:25:42.91ID:lfnNH8vu
野良ライブラリに頼った者の末路だね
自業自得というヤツさ
0710デフォルトの名無しさん2015/10/25(日) 00:47:38.08ID:BK3Evb4v
OSは何なんだ
今時2.4は酷いわ
0711デフォルトの名無しさん2015/10/25(日) 01:30:18.97ID:xV04ZCve
RHEL5かCentOS5だろう
一応現役(ProductionSupport期間内という意味で)だからな

俺は生涯そんな仕事受けないが
0712デフォルトの名無しさん2015/10/25(日) 02:26:37.55ID:IGihUR6P
>>699-703
copyfile()で、ファイルをコピーする

ファイル関連
open(), close()
with open()
read(), readline(), readlines(), write()

データ形式
CSV, YAML, XML, JSON
0713デフォルトの名無しさん2015/10/25(日) 10:36:26.32ID:VXAWkuKH
3.5.0をインストールするんだけど、32bit版64bit版両方入れた方がいいのかな?
0714デフォルトの名無しさん2015/10/25(日) 10:50:28.67ID:yfABSQf+
def tasizan(a, b):
return a + b

メソッドの引数に型を指定する方法ありませんか?
上の例ではaとbはintでくることにしたいんですが
他の言語みたいなdef tasizan(a:int, b:int)みたいに指定することって出来ませんか?
0715デフォルトの名無しさん2015/10/25(日) 11:04:56.28ID:aYhTdN9F
型なし能なしユーザーなしの池沼ゴミ言語なので
そんな高度なことはできません
安心してStringのtasizanをお楽しみください
0716デフォルトの名無しさん2015/10/25(日) 11:08:56.82ID:6KzvrzU/
型指定はない。関数アノテーションなら明示はできる
def tasizan(a: int, b: int) -> int:
0717デフォルトの名無しさん2015/10/25(日) 11:09:52.32ID:6KzvrzU/
使用してる環境によっては、警告してくれる
0718デフォルトの名無しさん2015/10/25(日) 11:28:27.06ID:yfABSQf+
完全なものはないってことですか
doc stringに書いた引数の型をチェックしてくれるテストツールとかもないですか?
0719デフォルトの名無しさん2015/10/25(日) 11:51:38.37ID:6KzvrzU/
DocString と関数アノテーションについてはテストツールがある
名前忘れちゃったんで調べてみて

pyCharmとかのIDE使えばコーディング時に教えてくれるからオススメ

型アノテーションはまさに今議論されているところ
0720デフォルトの名無しさん2015/10/25(日) 13:44:06.22ID:xV04ZCve
道具選びから間違ってるって馬鹿じゃねえの
0721デフォルトの名無しさん2015/10/25(日) 15:00:01.27ID:aYhTdN9F
いや言語選びから間違ってるだろう
どーしてもパイチョンでしか実現できない要件以外
こんな言語触れる価値ないわ
0722デフォルトの名無しさん2015/10/25(日) 15:12:57.29ID:ljG3KemP
Web限定ならPHP,Rubyのどれか一つを覚えてるなら改めてPythonを学ぶ必要はない。
しかしPythonはこの2つの言語よりもWeb以外で強力なライブラリがある
0723デフォルトの名無しさん2015/10/25(日) 15:15:05.59ID:xV04ZCve
科学計算や機械学習方面でしょ
一般的にはいらねーよな
0724デフォルトの名無しさん2015/10/25(日) 15:21:48.75ID:xV04ZCve
その他の利点としてはLSBに含まれていること
古いとは言え、大抵の環境でインストール直後から使える
ゴミドザは座ってろ
しゃしゃんな
Perlも引っ込んでろ暗号コードジェネレータが
0725デフォルトの名無しさん2015/10/25(日) 15:41:11.48ID:aYhTdN9F
どやマカパイチョナー顔面しゃしゃ〜んwwwwwwwww
0726デフォルトの名無しさん2015/10/25(日) 15:42:26.88ID:xV04ZCve
残念ながらクソマカーでもないですよゴミドザーくん
0727デフォルトの名無しさん2015/10/25(日) 17:02:57.52ID:BK3Evb4v
はあ
アホばっかり
0728デフォルトの名無しさん2015/10/25(日) 18:16:21.03ID:aYhTdN9F
パイチョンですから
0729デフォルトの名無しさん2015/10/25(日) 18:49:35.48ID:ip/vnDdd
マカーはシェア10%にも満たないくせに偉そうだよな
犬糞は2%にも満たないくせに更に偉そう
0730デフォルトの名無しさん2015/10/25(日) 20:38:40.30ID:mN/1fWbV
batファイルのECHO offみたいなことってpythonでどうやるのか教えてください
ユーザー入力を非表示に出来れば良いんです
cursesを使う以外でお願いします
0731デフォルトの名無しさん2015/10/25(日) 20:47:13.53ID:tTPtowO4
出力は手っ取り早いのはsys.stdout乗っ取り
真面目にやるならlogging
入力はgetpass
0732デフォルトの名無しさん2015/10/26(月) 00:50:41.23ID:DUZkD9lW
if __name__=="__main__"までは理解できたけどmain()作ってわざわざ呼び出すのなんで?
0733デフォルトの名無しさん2015/10/26(月) 01:03:26.03ID:39wMuITq
モジュールが変数であふれかえって汚くなるから、関数の中に隠している
0734デフォルトの名無しさん2015/10/26(月) 01:05:56.43ID:Pu2c6+a/
そういうもんだから

あえて冗長な記述、おまじないをすることが上級者だと
誰も読めない・読みたくないコードがかっこいいと
本気で信じてる池沼が作ってる言語だから

受け入れるのが大事
上司が右を向けと言ったら右を向くように
思考することをやめ、Pythonこそが至高と唱え続ければ
きっと幸せになれます
0735デフォルトの名無しさん2015/10/26(月) 01:11:55.55ID:jSFkYHTf
間抜けな長文の上にまともな回答より遅奴
0736デフォルトの名無しさん2015/10/26(月) 01:18:45.17ID:Pu2c6+a/
ほらな、思考停止
0737デフォルトの名無しさん2015/10/26(月) 01:20:11.05ID:jSFkYHTf
7分考えて8文字
0738デフォルトの名無しさん2015/10/26(月) 01:25:17.68ID:39wMuITq
もちろん関数やif __name__=='__main__':を書かない場合もあるよ
実行する理由が限られてるスクリプト、例えばsetup.pyとかは
setup()を直に呼び出してるパッケージが多数派だと思う
0739デフォルトの名無しさん2015/10/26(月) 02:43:29.68ID:r0xKHFxJ
CやJavaでmain()が実行の起点となる仕様に倣っているのでしょ
常にmain()から始まるようにしておけば起点が見つけやすい
07407322015/10/26(月) 05:58:55.24ID:DUZkD9lW
>>733
変数でモジュールが汚れるというのは、inspectでいうとf_globalsに変数が多く存在するということですか?
C言語から来たのでグローバル領域に物が沢山あると汚いとは思いますが、同じような理由でしょうか?

>>734
私はプログラミング言語の慣習には大抵何か理由があると思っています。
Pythonはインデントスタイルを縛ることでユーザー間の可読率を上げています。
そういった縛りや慣習も大勢が使う言語では可読率向上に有効に働くものかと思います。

>>739
確かにそれは他言語のユーザーからでもわかりやすくて良いですね。
しかし言語としてmain()から始まるようには設計していないのにこの書き方が広まっているのは、
言語の開発側とmain()から始めたいユーザーの静かな戦いですね。笑
0741デフォルトの名無しさん2015/10/26(月) 06:15:32.44ID:Mjft3WHN
>>740
変数の観点からもう少し突っ込むと関数ブロックでは代入がSTORE_FASTになるけど
モジュールやクラスブロックではSTORE_NAMEなのでループになると割合馬鹿に出来ない
07427322015/10/26(月) 09:41:24.58ID:DUZkD9lW
>>741
http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/python/virtualMachine/PyVM.htm#STORE_GLOBAL_STORE_NAME
にあるようにSTORE_NAMEの場合、保存先のオブジェクトの種類を判定する分遅いということでしょうか?
pyグラマというのはここまで気にしながらプログラミングしているのですか……脱帽です。
0743デフォルトの名無しさん2015/10/26(月) 12:02:42.95ID:jSFkYHTf
そんなわけねえじゃん
そんなコンマ数秒の勝負なら無能でなければC/C++使って書くよ
0744デフォルトの名無しさん2015/10/26(月) 12:37:33.42ID:8OJDIDJG
有能な俺はいつもpythonで書く
0745デフォルトの名無しさん2015/10/26(月) 13:31:08.66ID:luKrPwO7
>>714
if not isinstance(a, int) or not isinstance(b, int):
 raise TypeError("not int!")
0746デフォルトの名無しさん2015/10/26(月) 16:38:17.04ID:2MNiZRij
なんでもかんでもおまじないで済ましてると
原発の非常用電源みたいにSBOになるよ
0747デフォルトの名無しさん2015/10/26(月) 16:39:27.82ID:2MNiZRij
>>738
__name__ == "__main__" 書かないのと
from hoge import * と
どっちが許せる?
0748デフォルトの名無しさん2015/10/26(月) 17:05:58.94ID:Mjft3WHN
>>742
勿論速度に取り付かれた人だけです、素が倍違えど処理が入ると雀の涙、C/C++拡張へと…
ただコンパイラ言語と違って強い最適化は掛けられないので、書き方は結構重要になります
いくらか古い情報ですがPythonSpeedの記事はまだ有用でしょう、少し話がそれてきました

結局速度を気にするならasync/awaitが導入されたりとI/Oを非同期でやれということでしょう
また限定的用途ですがLLVMでJITするnumbaなる物も台頭してきた模様(anaconda.orgにビルド済み有
話を戻して…スレッド、JIT等にコードを渡すにしてもブロックにしておくと、というのもあります
0749デフォルトの名無しさん2015/10/26(月) 17:25:15.26ID:39wMuITq
>>747
許せる場合ならどっちも書く、滅多に書かないけどね
zen of pythonで言われてるように、盲目的なルール厳守は上手くないと思う
標準ライブラリにもfrom tkinter import *とか使われている
0750デフォルトの名無しさん2015/10/26(月) 17:28:34.67ID:39wMuITq
あ、滅多に書かないはfrom hoge import *の話
0751デフォルトの名無しさん2015/10/26(月) 17:40:23.13ID:jZMivBq6
tkinter は import * よくやるな
0752デフォルトの名無しさん2015/10/27(火) 12:43:56.79ID:XeOEre3W
csvファイルを行単位で結合する方法が分かりません。
以下のin1.csvとin2.csvを結合してout.csvを出力する方法を教えてほしいです。

in1.csv
0,1,2
5,6,7

in2.csv
3,4
8,9

out.csv
0,1,2,3,4
5,6,7,8,9
0753デフォルトの名無しさん2015/10/27(火) 13:05:06.87ID:dbz6tEeF
if __name__ == "__main__":
 f1 = open("./tech752-2-in1.csv")
 f2 = open("./tech752-2-in2.csv")

 while True:
  l1 = f1.readline()
  l2 = f2.readline()
  l1 = l1.strip()
  l2 = l2.strip()
  if not l1 and not l2:
    break
  print(l1, l2)

 f2.close()
 f1.close()
0754デフォルトの名無しさん2015/10/27(火) 13:17:58.24ID:dbz6tEeF
>>753は変更で

import csv, sys

if __name__ == "__main__":
 f1 = open("./tech752-2-in1.csv")
 f2 = open("./tech752-2-in2.csv")

 csv1 = csv.reader(f1)
 csv2 = csv.reader(f2)
 csv_writer = csv.writer(sys.stdout)
0755デフォルトの名無しさん2015/10/27(火) 13:20:03.27ID:dbz6tEeF
>>754の続き

 while True:
  try:
    row1 = next(csv1)
  except StopIteration as e:
    print("except StopIteration by next(csv1)")
    break
  try:
    row2 = next(csv2)
  except StopIteration:
    print("except StopIteration by next(csv2)")
    break

  csv_writer.writerow(row1 + row2)

 f2.close()
 f1.close()
0756デフォルトの名無しさん2015/10/27(火) 13:45:46.10ID:XeOEre3W
>>755
ありがとうございます
思い通りの処理ができました
0757デフォルトの名無しさん2015/10/27(火) 14:20:42.65ID:Lj8iPgFJ
pasteというコマンドがあってだな
0758デフォルトの名無しさん2015/10/27(火) 14:33:02.28ID:xzF47nt/
PythonのスレでUnix環境依存のコマンドもちだしてくるのって、別言語の関数を持ち出すのに近いものがあるよね
0759デフォルトの名無しさん2015/10/27(火) 15:09:50.45ID:oZ3zd0d4
ドザーwwwって煽ろうかと思ったけど
今回の指摘は最もな気がするので止めておきます
0760デフォルトの名無しさん2015/10/27(火) 15:13:53.02ID:D1Dn3dXQ
http://pastebin.com/f1efNtGB
俺ならこう書くかな
0761デフォルトの名無しさん2015/10/28(水) 02:17:21.27ID:Mi86mFov
これぐらい、join, paste などで、
簡単に出来なきゃおかしい

f1の行 + ',' + f2の行
0762デフォルトの名無しさん2015/10/28(水) 04:54:06.79ID:2vlbbPP0
Windowsは欠陥OS
0763デフォルトの名無しさん2015/10/28(水) 17:58:54.09ID:9t2jSX/t
>>762
スレ違い
0764デフォルトの名無しさん2015/10/29(木) 10:53:51.63ID:/yhPxtsE
ipythonで%pasteを入力すると、ファイルコピーしたものが、インデントした
状態で、ちゃんとコピーされるということを最近、知った。これ、なにげに
便利な機能だった。

あと、IPythonのMagic Functionsで、%save history 数字-数字の指定で
で、対話シェルで使ったコードが、pyファイル化してくれる機能も、最近知って
良かった。対話シェルで書いたものが保存できないのが嫌だなと、思っていた
のに、その難点が解消された。ファイル名はhistoryだけじゃなくて、なんでも
使えるというのを、今、知ったw

pythonのテキストを書く人は、この機能があることをもっと周知して欲しい。
0765デフォルトの名無しさん2015/10/30(金) 11:42:12.01ID:tF82mK6t
ドキュメントに書いてあることをドヤ顔で言われても
0766デフォルトの名無しさん2015/10/30(金) 11:57:50.52ID:4xsCLJ1M
日々忙しい現場の人は膨大なドキュメントを読む暇も気力もないし
読んだだけでは使い方・メリットがわからないことも多い
こうやって書いてくれることはありがたいものだよ
0767デフォルトの名無しさん2015/10/30(金) 12:02:04.54ID:bGTI8z09
>>766
ありがとうω
0768デフォルトの名無しさん2015/10/30(金) 12:37:33.93ID:LbGz8JT9
ただ、%pasteを使って対話シェルにペーストしたものを%saveでpyファイル化すると、
そこに出来たpyファイルの中身は、get_ipython().magic(u'paste')みたいに
なって、後に使えないような問題が生じていました。

そこで、その理由を調べてみると、
ttp://stackoverflow.com/questions/29968038/how-to-save-an-ipython-session-if-i-used-magic-paste-magic-save-doesnt-wor

という英文のサイトに、How to save an ipython session if i used magic %paste ? (magic %save doesn't work)
Of course, I would like the pasted code to be saved instead.Any ideas?

という同じトラブルの質問がなされていた。
0769デフォルトの名無しさん2015/10/30(金) 12:38:03.64ID:LbGz8JT9
その解答の一つにあったのは、

It is only saving the commands you type at the prompt, and the command you entered was paste,
which the magic converts to get_ipython().magic(u'paste ').

While the first behavior may not be a bug (even if it's not particularly helpful),
this editing behavior definitely seems like one.

%pasteでIPythonの対話シェルにペーストしたものを%saveでpyファイル化したものは、
get_ipython().magic(u'paste')になるのがデフォルトの仕様です、ユーザーが
コマンドを実行した箇所の%paste=(u'paste ')の部分しかファイル化されない仕様になってます。と、
書いてある感じ。%pasteを使わないで、普通にコードをコピペ・ペースト出来たものは、%saveで普通に
pyファイル化されている感じでした。
0770デフォルトの名無しさん2015/10/30(金) 19:08:49.11ID:GTAHUN3J
csvの書き込みで、特定列のみクオートしない方法ありますか?

forで回して特定列のみ数値型にするしか思い当たらなかったのですが、nullの扱いでつまずいてます…
0771デフォルトの名無しさん2015/10/30(金) 20:35:32.03ID:zUZa21Gd
pycharmのローカル変数のtype hintingって2種類あるんだが、どっちがいいとかある?

�@
#: :type: int
num = dic['num']

�A
num = dic['num']
""":type: int"""

�@って公式から消えてるから�Aの方がいい?
0772デフォルトの名無しさん2015/10/30(金) 21:18:19.73ID:V5n94Kuv
>>770
そのfor文とその中身を提示してみれば?

コードを見て改善点を出してくれる人が居るかもよ。
0773デフォルトの名無しさん2015/10/30(金) 23:42:08.77ID:k5vGnOwJ
ExcelのCSV形式とか、色々な種類があったかな?

そういうのを参考にすれば、お好みの形式が見つかるかも
0774デフォルトの名無しさん2015/10/31(土) 12:09:44.66ID:v1FiNzJT
>csvの書き込みで、特定列のみクオートしない方法ありますか?
>forで回して特定列のみ数値型にするしか思い当たらなかったのですが、nullの扱いでつまずいてます…

値をクオートしたくないから数値に変換したい意味が分からない
どのような文字列が使われるのか説明を省くな


"a","b"
↓
a,"b"

"\"a\"","\"b\""
↓
"a","\"b\""
0775デフォルトの名無しさん2015/10/31(土) 12:34:13.12ID:EqUq4cF0
int型とか数値だとクォートしないcsvライブラリー多くない?
pythonはどうか知らんけど。
0776デフォルトの名無しさん2015/10/31(土) 13:23:56.28ID:v1FiNzJT
csvには明確は仕様がないのでそれがおかしいとも正しいとも言えない
0777デフォルトの名無しさん2015/10/31(土) 15:02:35.84ID:HfRtIykb
途中で改行入るのもあるしな
0778デフォルトの名無しさん2015/10/31(土) 22:00:10.15ID:UVsvdy88
python超初心者です。
python 3.4.3 shellで
>>>class Prism:
def _init_(self,width,height,depth):
self.width=width
self.height=height
self.depth=depth
def content(self):
return self.width*self.height*self.depth(インデントはしてあります)

>>>p1=Prism(10,20,30)
TypeError:object() takes no parameters
となりました。みんなのpython第3刷です。
超初心者ですいません。回答お願いします。
0779デフォルトの名無しさん2015/10/31(土) 22:12:53.41ID:2GL7tPRL
>>778
>python超初心者です。
>return self.width*self.height*self.depth(インデントはしてあります)
超初心者のコードの評価なら、こっちに書いてからリンク貼ってくれたほうが確実です
http://pastebin.com/
0780デフォルトの名無しさん2015/10/31(土) 22:17:35.38ID:/ed7opaB
>778
class Prism():

カッコが足りないのでは?
0781デフォルトの名無しさん2015/10/31(土) 22:37:57.22ID:UVsvdy88
>>>779 >>>780
()つけてみましたが、だめでした…
すいません>>>778です http://pastebin.com/zEKVssb3
0782デフォルトの名無しさん2015/10/31(土) 22:46:51.47ID:kMFTk0iK
回答お願いしますと言いながら質問が書いてないじゃないか。無精なやつだな。

>>778
initの前後のアンダーバーはそれぞれ2つ必要。
_init_ ではなくて __init__
0783デフォルトの名無しさん2015/10/31(土) 23:36:52.77ID:UVsvdy88
>>>782 ありがとうございました。解決しました。
質問書くのを忘れていました すいませんでした
0784デフォルトの名無しさん2015/10/31(土) 23:50:10.10ID:9xmCXk3+
データベースを文字列として保存して利用できるライブラリってありませんか?
select,delete,update,insertができればいいんです

sqlite3が使いたかったんですが
データベースファイルを暗号化するので、復号化するときにファイルに書き出さないといけないので使えません。
0785デフォルトの名無しさん2015/11/01(日) 00:02:29.68ID:cJRHBIPW
a.db 自体を暗号化しちゃえば?
aes.py なんて腐るほどあるでしょ
0786デフォルトの名無しさん2015/11/01(日) 00:14:32.34ID:ePhs0pxt
そのa.dbじたいを暗号化したいので、復号化したらファイルに書き出さないといけませんよね
0787デフォルトの名無しさん2015/11/01(日) 01:00:13.13ID:8yFkftFr
Connection.iterdump
データベースをSQL testフォーマットでダンプするためのイテレータを返します。
in-memory データベースの内容を、後でリストアするための保存する場合に便利です。
0788デフォルトの名無しさん2015/11/01(日) 03:15:39.57ID:FP4yCWl/
>>784
使えないとかじゃなくて、
まず、要件だけ列挙してみ?
0789デフォルトの名無しさん2015/11/01(日) 04:42:00.75ID:8yFkftFr
https://github.com/Microsoft/Pyjion
それよりIronPythonを…
0790デフォルトの名無しさん2015/11/01(日) 10:42:45.97ID:X/WSAqc0
>>787
iterdumpいいですね
これでsqlを読み込ませたいんですが
下のコードを実行したらsqlite3.Warning: You can only execute one statement at a time.ってなりました

import sqlite3
c = sqlite3.connect(':memory:')
sql="""
BEGIN TRANSACTION;
CREATE TABLE tbl(id, title);
INSERT INTO "tbl" VALUES(1,'a');
INSERT INTO "tbl" VALUES(2,'b');
INSERT INTO "tbl" VALUES(3,'c');
COMMIT;
"""
c.execute(sql)
0791デフォルトの名無しさん2015/11/01(日) 10:44:53.49ID:X/WSAqc0
BEGIN TRANSACTION;とCOMMIT;を除いて1行ずつexecuteすればいいんですが
sqlをそのまま利用できる方法ありませんか?
0792デフォルトの名無しさん2015/11/01(日) 11:45:19.76ID:8yFkftFr
少しはリファレンス読めよカス
0793デフォルトの名無しさん2015/11/01(日) 11:50:17.00ID:DnVZClsz
おまいらというインタラクティブリファレンスを使ってるだけなんだよなあ
これだから低脳老害池沼は困るンゴね
頭がしゃしゃしゃんのパイチョナーだからしゃーなしだけど
0794デフォルトの名無しさん2015/11/01(日) 16:05:16.17ID:fsJJdRPt
matplotlibを用いて株価のチャート図を作成しています。
入力している株価は平日のみなのですが、チャート図には休日部分でも軸があり見辛いです。
平日のみを表示するにはどうしたらいいですか?
0795デフォルトの名無しさん2015/11/01(日) 16:37:13.71ID:MdE+0m3/
int, float, strの混在したnumpy array (dtype=object) を非数値と数値に分離したい。

a = [0.2192670820092546 0.38922684417371245 9 9 'A' 0.39194839474978815 4 8 7 'B']
split(a)
['A' 'B']
[ 0.21926708 0.38922684 0.39194839 4. 7. 8. 9. ]

以下のように素朴に組んでみましたが、スマートで高速な方法はないでしょうか。
取りうる値を調べたいのでnp.uniqueをかけています。

def split(a):
_nom = []
_num = []
_for i in a:
__if isinstance(i, str):
___nom.append(i)
__else:
___num.append(i)
_return np.unique(nom), np.unique(num)
0796デフォルトの名無しさん2015/11/01(日) 17:10:46.37ID:B8LcATC9
numpy.arrayに異なる型の値を入れるところから間違えているのは気にならないの?
0797デフォルトの名無しさん2015/11/01(日) 17:18:18.36ID:eXne5FsE
そんな配列作れたっけ?
そもそもどうやって作るんだ?
0798デフォルトの名無しさん2015/11/01(日) 17:37:27.10ID:MdE+0m3/
汚いデータを扱う事を想定していて…
異なる型を入れるなと言われたらまあそれまでなのですが

作る分には最初にobject型を指定しておけば作れます
a = np.zeros(4, dtype=object)
a[0] = 1
a[1] = 1.1
a[2] = "A"
0799デフォルトの名無しさん2015/11/01(日) 18:37:42.62ID:eXne5FsE
速い方法見つからないし、思いつかんな
forループあり、取りうる型の範囲の指定もありで
以下の感じしか思い浮かばなかった。

import numpy as np
def_type = [str, int, float]
a = np.zeros(6, dtype=object)
a[0] = 1
a[1] = 1.1
a[2] = "A"
a[3] = 2
a[4] = 2.2
a[5] = "B"

type__lists = {}
for v in a:
 for t in def_type:
  if isinstance(v, t):
   type__lists.setdefault(t, []).append(v)
   break

print type__lists
0800デフォルトの名無しさん2015/11/01(日) 19:15:23.10ID:Unza4uUw
>>> a
array([0.2192670820092546, 0.38922684417371245, 9, 9, 'A', 0.39194839474978815, 4, 8, 7, 'B'], dtype=object)
>>> idx = np.frompyfunc(type, 1, 1)(a) == str
>>> a[idx]
array(['A', 'B'], dtype=object)
>>> a[~idx]
array([0.2192670820092546, 0.38922684417371245, 9, 9, 0.39194839474978815, 4, 8, 7], dtype=object)
0801デフォルトの名無しさん2015/11/01(日) 19:23:10.95ID:eXne5FsE
何その万能そうなやつw
俺氏numpy疎すぎ
0802デフォルトの名無しさん2015/11/01(日) 20:32:39.16ID:mdIJAfuo
>>794
試してみたが特に軸について指定しなかったら自動的に入力されてる日付だけで描画されるようだが
http://i.imgur.com/ppQAZQ5.png
0803デフォルトの名無しさん2015/11/01(日) 21:28:45.75ID:MdE+0m3/
>>799
ありがとうございました。
種々の型に分離できて便利そうです。
setdefaultを初めて知りました。覚えておきます。
>>800
圧倒的にスマートですね。
frompyfuncというのがあるのですね。np.vectrizeでもいけますね。
恐らく ==, [], ~, [] で走査が何回か走っているので実行速度面ではやや遅くなっています。
非常に勉強になりました。ありがとうございました。
0804デフォルトの名無しさん2015/11/01(日) 21:42:10.43ID:eXne5FsE
>>798 >>800
超基礎っぽくて重大なことを2つも知りました
どうもです
0805デフォルトの名無しさん2015/11/01(日) 22:38:21.96ID:+Y9Yxcop
>>796
そういう質問の前提をひっくり返すような返答しかできないなら黙ってたほうがいいかと
業務で使ってたらいくらでもこういう状況に巡り合うし
前にも書いたけど「タマネギ無しでカレー作りたい」っていう質問に「玉ねぎ入れろよ」は無能回答者の極み
0806デフォルトの名無しさん2015/11/01(日) 23:07:44.84ID:5bGNIrSn
超初歩的質問ですいません。モジュールをpyscripterで作って保存し、importしようとしたのですが、
ImportError:No module named 'aaaa'というエラーがでます。
どうすればimportできるようになるのでしょうか?
環境変数にはC:\Python34のpassを追加してあります。
スクリプトを保存する場所がまちがっていたのでしょうか?
スクリプトの名前の打ち間違えはしてません。
0807デフォルトの名無しさん2015/11/01(日) 23:32:55.24ID:5bGNIrSn
>>806です。site-packagesに保存したところimportできました。
0808デフォルトの名無しさん2015/11/02(月) 10:40:16.36ID:u1Xcwdjg
>>805
今回はやっちゃった後だから仕方ないが次から気を付けようね
0809デフォルトの名無しさん2015/11/02(月) 11:08:32.73ID:NqGvXyH8
>>808
うわあ
0810デフォルトの名無しさん2015/11/02(月) 11:34:42.87ID:8MrUu8oz
ary = [
[
{"age":20,"tanaka"},
{"age":30, "satou"},
{"age":12, "suzuki},
],
[
{"age":50,"nakano"},
{"age":3, "miura"},
{"age":21, "nakamura",
]
]
これをageの値が小さい順で、もし値が同じなら名前順でソートして
ary = [
[
{"age":12, "suzuki},
{"age":20,"tanaka"},
{"age":30, "satou"},
],
[
{"age":3, "miura"},
{"age":21, "nakamura",
{"age":50,"nakano"},
]
]
となるようにするコードを教えてください
0811デフォルトの名無しさん2015/11/02(月) 12:10:41.79ID:O/IYQSjt
> 810
辞書には、キーと値のペアが必要だから、
{"age":12, "name":" Sato"}
とかにすることが必要。
for lst in ary:
____lst.sort(key=lambda person: person["age"], person["name"])
で並べ替えできるはず。
08127702015/11/02(月) 12:16:55.14ID:pKvKRT4w
先日csvまわりで質問させて頂いたものです。
色々と情報足りていませんでした。すいません。
やりたいのは、
・csvファイルを読み込む
・文字コード、区切り文字、囲み文字、改行コードを変換
・別ファイルのcsvを出力
です。

csv.readerで読み込んだあと、csv.writerで区切り文字などを変換して出力しようとしたのですが、csv.readerの時点で文字列になってしまうため、変換前はクォートされていなかった項目も囲まれてしまいました。
そこで、特定項目のみ数値型に変換しようとしたのですが、データにnullがあったため、数値型に変換できないレコードがあって。。。
という流れです。

ちなみに、文字コードはcodecs.openで別処理で行います。
0813デフォルトの名無しさん2015/11/02(月) 12:48:27.98ID:u1Xcwdjg
pythonをOpenCVで使いたいのですが
どのバージョンがおすすめですか?
0814デフォルトの名無しさん2015/11/02(月) 13:42:34.52ID:e8sSwe/F
辞書オブジェクトの値を四捨五入して表示したいのですがどうすればいいです?

具体的には
print predict_dicの結果を
{0: 0.0, 1: 0.53333333333333333, 2: 0.46666666666666662}から
{0: 0.0, 1: 0.53, 2: 0.47}としたいです。
0815デフォルトの名無しさん2015/11/02(月) 14:03:29.71ID:ysex+PeP
四捨五入するprintを実装

or

floatを継承して__repr__をオーバーライド
0816デフォルトの名無しさん2015/11/02(月) 15:28:13.00ID:f3Dk5D9Q
>>814
str.format
0817デフォルトの名無しさん2015/11/02(月) 15:58:48.25ID:cuo/lEqs
./sample.py

def one():
__return 1

./test/test_sample.py

sample.pyをtest/test_sample.pyでテストしたいんですが
import sampleってしてもロードできません
bottleとかflaskのテストファイルには__init__.pyを使ってないのにimportできてます
どういうふうにして__init__.pyを使わないでテストを実現しているのか教えてください
0818デフォルトの名無しさん2015/11/02(月) 16:11:03.17ID:xjce4HXM
>>812
具体的にどんな値がいつの時点でどのようにクォートされるって言ってるのかわかりません。
文字列だからクォートされるっていうのもよくわからないし。
それが再現する最低限のプログラムと最小のデータを作って >>>779 のサイトに上げてもらえますか?
0819uy ◆Qawu9.2l1E 2015/11/02(月) 18:46:55.92ID:SGzzuciz
ペイソン知らないけど四捨五入ってsprintfじゃないの
0820デフォルトの名無しさん2015/11/02(月) 20:45:56.04ID:D1MIq598
3.5でようやくtypehintingですか
バージョンごとの互換性低いし、言語の可読性も悪いし
なんか良いとこなしの言語ですねえ
科学分野の人はなんでこんなゴミ言語ありがたがってるんでしょ?
バカなんですかね?
0821デフォルトの名無しさん2015/11/02(月) 20:55:08.20ID:2rFXfmu6
はいはいママに聞いてもらってね
0822デフォルトの名無しさん2015/11/03(火) 01:37:42.37ID:GCahsqg0
初心者です。PyQtとPySideって出来ることに差があるんでしょうか?
また、それらを使うにはPython2より3の方が良いんですか?
0823デフォルトの名無しさん2015/11/03(火) 03:09:22.00ID:7F8rrZeR
>>817
モジュールの検索パス
import sys
print(sys.path)

python a.py
のように、ファイル名だけを指定して、パスを付けない場合、
sys.pathの冒頭には、空文字列が表示され、
カレントディレクトリを表すが、

./test/test_sample.py
のように、パスを付けると、./test/ となるので、

./sample.py
のパスとは1階層異なる
0824デフォルトの名無しさん2015/11/03(火) 03:50:27.00ID:7F8rrZeR
>>812
SQLAlchemyのような、O/Rマッパーを使うのは?
他にも、SQLObject, Django付属のライブラリとか

NULL許容のInt型を指定すれば?

NULLは例えば、生徒が休んだときの、
テストの点数などで、平均値から除外する

CSV → O/Rマッパー → CSV
0825デフォルトの名無しさん2015/11/03(火) 04:45:57.16ID:FYipsz6F
最近居着いた>>820ってちょっと前に最初は初心者的質問してて同じIDでdisり出した奴だよね多分
0826デフォルトの名無しさん2015/11/03(火) 05:02:40.71ID:7F8rrZeR
>>812
sqliteで、CSVでもクォートで囲っていて、その中にカンマがあったり、
クォートの中で開業したりしていたら、インポートできないみたい

タブ文字はデータ中で使わないだろうし、
TSV(タブ区切り)がまぎれが無くて、よいかも
0827デフォルトの名無しさん2015/11/03(火) 07:08:57.26ID:Y2+tMywR
>>821, >>825
相手するなよ…
0828デフォルトの名無しさん2015/11/03(火) 08:44:08.74ID:WA/pYWcc
>>817
その、bottleやflaskではどういうふうにして__init__.pyを使わないでテストを実現しているのかという質問には、
あなたがbottleやflaskの、あるいは他のモジュールの、どんな機能を利用してテストを書いて、どんなふうにファイルを配置して、どんなテストプログラムを書いて実行したのかが分からないと、答えようがありません。
というのも、あなたが何を指して、何を以って、bottleとかflaskのテストファイルには__init__.pyを使ってないのにimportできてると言っているのかが、あなたのその説明からは、さっぱりわからないからです。
あなたが前段で書いていることは、それを読んだ人が誰でも、同じことを自分でして試してみることができます。
でも後段のbottleやflaskのテストについては、そうじゃないでしょう?
その上で、さらに個別のライブラリに関する質問に回答するには、そのライブラリのソースやドキュメントを確認することも必要になることがある、ということも理解してくださいね。
ここで回答してくれる人がみんな、bottleやflaskに詳しいわけじゃないですからね。だから具体的に説明してくれないと、答えようがないんですよ。
0829デフォルトの名無しさん2015/11/03(火) 08:45:27.58ID:9FtI+eCg
相手してるのも含めて自演に決まってんだろ
俺がFF○○スレを荒らした時は
荒らし役、反応役、茶化し役、諫め役*2で5役を演じたぞ
0830デフォルトの名無しさん2015/11/03(火) 09:25:18.42ID:SQf02+gY
Pythonを使っているとここまで醜い生き物になるのか
それとも、醜い生き物だからPythonを使っているのか
0831デフォルトの名無しさん2015/11/03(火) 10:39:32.94ID:pSFTI+Np
>>828
なんとなくだけど君はあんまりテストを書いたことがない初心者に見える
0832デフォルトの名無しさん2015/11/03(火) 13:12:09.08ID:WA/pYWcc
>>831
当たりです。
テスト書いたことって一度だけしかありません。
あと実を言えばインポートの仕組みもまだよくわかってません。
単純に「上の階層にあるモジュールをインポートする方法」を答えればいいものを、それが分からないので、
でもなんか誰もレスつけなくてそのまま流れちゃいそうで可哀想だったから、無理矢理レスつけたら、>>828みたいになっちゃった。
0833デフォルトの名無しさん2015/11/03(火) 13:30:27.73ID:SQf02+gY
上から目線でドヤってたら指摘受けて情けない言い訳で取り繕い
恥ずかしいな
これが平均的パイチョナーか
0834デフォルトの名無しさん2015/11/03(火) 13:54:53.91ID:C0Kah9v/
>>829
0835デフォルトの名無しさん2015/11/03(火) 13:56:51.14ID:C0Kah9v/
>単純に「上の階層にあるモジュールをインポートする方法」を答えればいいものを、それが分からないので、

from .. import hoge

で出来ますよ
0836デフォルトの名無しさん2015/11/03(火) 18:14:34.35ID:zqIPD6fb
>>835
ありがとうございます。
ん〜
SystemError: Parent module '' not loaded, cannot perform relative import
って表示されてインポートできません…
0837デフォルトの名無しさん2015/11/03(火) 18:36:28.88ID:SQf02+gY
importすらまともにできない完全汚物吐瀉糞言語パイチョン
0838デフォルトの名無しさん2015/11/03(火) 23:13:09.88ID:7F8rrZeR
普通、importされるモジュールの方が、
1階層上には来ない

通常、実行ファイルと同じフォルダか、1階層下にある
.exe
.dll

.exe
./lib/dll

そもそも、実行ファイルを置いていないフォルダから、
実行できたらおかしいので、
ディレクトリを移動してから、実行すれば?
cd test
python test_sample.py

カレントディレクトリがtestになり、
そこでパス無しファイル名だけで実行する
08398122015/11/03(火) 23:29:30.37ID:8GVwcxa5
>>818

http://pastebin.com/GZ3KavP5

カンマ区切りをタブ区切りに変更したいのですが、
"uuu",,"ううう"
こんなレコードがあると
"uuu" "" "ううう"
空文字部分がクオートされてしまうのです
0840デフォルトの名無しさん2015/11/04(水) 00:23:17.38ID:UvMmqNQl
コーヒー噴いたわ
quotingをNONNUMERICにしてるんだから文字列が常にクオートされるのは当たり前だろ
オプションの説明読んだのか?
0841デフォルトの名無しさん2015/11/04(水) 01:16:46.33ID:J7mxnqPB
一々、CSVからTSV(タブ区切り)へ変換しなくても、

最初にデータを作るときに、
TSVで出力すればよいのでは?
08428122015/11/04(水) 08:00:58.11ID:FPu3J/EA
>>840
文字列はクオートしたいんです
したくない項目があるので、NONNUMERICにして無理矢理一部を数値型に変換しようとしました。
08438122015/11/04(水) 08:05:07.71ID:FPu3J/EA
>>841
それが一番いいのですが
既存システムからカンマ区切りで出力されてしまうので指定が出来ないのです
0844デフォルトの名無しさん2015/11/04(水) 08:24:06.08ID:JNCv00QT
isNumberしてnumberなら適当にあれすりゃいいんじゃね
あとはそのクッサイゴミレガシーシステムを捨てろ
0845デフォルトの名無しさん2015/11/04(水) 09:00:19.72ID:UvMmqNQl
無理なことを押し通そうとしてる時点で壊れた玩具の車と変わらない
自殺志願なら駅のホームで好きなだけやってろ
0846デフォルトの名無しさん2015/11/04(水) 09:02:03.22ID:UvMmqNQl
ほんのカスほどでも頭があったなら
QUOTE_NONEにして自力でクオートすればいいと気づくだろ
0847デフォルトの名無しさん2015/11/04(水) 09:02:19.29ID:p+tN+eCM
君は病院行ったほうがいい
08488122015/11/04(水) 09:47:11.09ID:lqTMDHCA
>>846
NONEにして手動でダブルクオートなどで囲むと
それ自体がエスケープ処理されてしまうのですが
設定で回避出来たりしますか?
0849デフォルトの名無しさん2015/11/04(水) 10:10:16.47ID:qgDdiE2u
ID変えて煽ってまたID変えてくる陰湿な質問者か
0850デフォルトの名無しさん2015/11/04(水) 10:11:10.96ID:JBTH8cVO
>>848
writerのオプションでquotechar="$"みたいに別の文字を指定してできないかな?
あとプログラムのコメントに「囲み文字変換」って書いてあるけど、これは元のcsvファイルで文字列は既にクォートされてて、それを出力時に別の文字でクォートし直してるってこと?
例えばシングルクォートされてるのをダブルクォートにし直してるとか。
0851デフォルトの名無しさん2015/11/04(水) 10:28:20.86ID:wf5P/Bdz
[[1, 2, 3],[4, 5, 6]]のような配列を
[[1 2 3][4 5 6]]のように変更するにはどうしたらいいですか?
0852デフォルトの名無しさん2015/11/04(水) 10:51:40.90ID:9/gYWAho
???
できません。が答えだけど。

http://docs.python.jp/3.4/library/itertools.html
>>> import itertools
>>> list(itertools.chain(*L))
[1, 2, 3, 4, 5, 6]
これを欲しかったの?

>>> L1 = itertools.chain(*L)
>>> L1
<itertools.chain object at 0x7fec403ba518>
>>> list(L1)
[1, 2, 3, 4, 5, 6]
>>> L1
<itertools.chain object at 0x7fec403ba518>
>>> list(L1)
[]

itertools.chain()のobjectを受け取る方法では
2回目は空を返すから注意が必要
0853デフォルトの名無しさん2015/11/04(水) 10:59:31.12ID:dx4sHopx
sed 's/,/\t/g' in.csv > out.tsv
0854デフォルトの名無しさん2015/11/04(水) 12:54:11.15ID:HK3+KEXA
dictkeys = ["a", "b"]
values = [[1, 2], [3, 4]]
これを
[
{"a": 1, "b": 2},
{"a": 3, "b": 4},
]
ってするコードを教えてください
もしdictkeysが["a", "b", "c", "d"]だったら
valuesは[[1,2,3,4]]な感じになります
valuesの1次元がrow、2次元がcellだとお考えください
インデックスをハードコーディングしないで配列のサイズが変わっても対応できるコードを教えてください
0855デフォルトの名無しさん2015/11/04(水) 14:47:48.67ID:9/gYWAho
if __name__ == "__main__":
keys = ["a", "b"]
values = [[1, 2], [3, 4]]

L = []
for v in values:
# v [1, 2]
d = dict()
for index, k in enumerate(keys):
d[k] = v[index]
L.append(d)
print("L =")
print(L)

L = []
for v in values:
d = dict(zip(keys, v))
L.append(d)
print("L =")
print(L)
0856デフォルトの名無しさん2015/11/04(水) 15:07:52.15ID:GRQA3RSV
[dict(zip(dictkeys, value)) for value in values]
0857デフォルトの名無しさん2015/11/05(木) 05:24:41.14ID:eUJR5oE/
ややこしいから、自分で変換したらダメ!(車輪の再発明)
ライブラリ・O/Rマッパーに変換させる

CSV, TSVでも、
文字列中に、" があれば、"" か \" とする

文字列中に改行があっても、行区切りとして扱わない。
文字列中に、カンマがあっても、列区切りとして扱わない
0858デフォルトの名無しさん2015/11/05(木) 09:11:13.17ID:JJ7nSOtG
車輪の再発明だかなんだか知らないけど
その辺に転がってる駄文の再記述は必要か?
おう駄人間君
0859デフォルトの名無しさん2015/11/05(木) 09:35:52.77ID:ei6H30jI
病気の人来た
0860デフォルトの名無しさん2015/11/05(木) 13:51:24.38ID:6sxJWh0m
来月の6日3.5.1がリリースされるけど
そろそろ3.2を切ってくれないかな
0861デフォルトの名無しさん2015/11/05(木) 17:06:48.32ID:+0qX7jvB
Ubuntu 16.04 LTS Will Try To Be Python-3-Only, No Python 2 By Default
https://www.phoronix.com/scan.php?page=news_item&;amp;px=Ubuntu-16.04-Python-3-Hopes
0862デフォルトの名無しさん2015/11/05(木) 21:56:07.96ID:2Sos2Ru/
マジでいち早く2系滅んで欲しいわ
ただでさえ言語仕様が汚いんだから、多少なりともマシな3系にさっさと移れ
2系使ってる下級旧猿人類どもが心臓発作で死ぬようなバグ見つからないかな
0863デフォルトの名無しさん2015/11/05(木) 22:17:25.93ID:ZoSoHeJ6
tkinterでフルスクリーンの表示ってできるの?
いろいろ調べても出てこない…
他にフルスクリーンの表示ができるものがあったら教えてください
0864デフォルトの名無しさん2015/11/05(木) 23:58:54.75ID:9I1HGcpx
残念だが2.7.11が予定されている
0865デフォルトの名無しさん2015/11/06(金) 00:11:40.98ID:B1D86SPp
>>864
カスみたいな言語仕様は直さない上に
レガシーにしがみつく老害の糞虫どもと慣れ合う蛆虫
こんなんだからいつまで経ってもシェアゼロコンマ代のドマイナー池沼言語なんだよ
開発はヴァカなのか?俺が足の指でコーディングしてやった方がまだマシなレベルだな
0866デフォルトの名無しさん2015/11/06(金) 02:12:26.59ID:IQJ89P+V
>>862>>865
いつもの病気の人ですね
0867デフォルトの名無しさん2015/11/06(金) 04:07:07.10ID:H5bwMtpa
マジで2系が滅びるには西暦3000年までかかるかもなあ
会社の1996年ものHP-UX(当然Pythonなし)が、このたびRHELに更新された
これでPyhtonが使える!と勇んで中身を見たら、2.4だった…
0868デフォルトの名無しさん2015/11/06(金) 09:17:29.97ID:lDi+bZZ1
貴重な体験ご苦労様です
そんな仕事絶対受けないわ
無能と違って仕事選べるって素晴らしい
0869デフォルトの名無しさん2015/11/06(金) 12:39:35.88ID:Q49rkf95
lambdaで複数行で書く方法を教えてください
これをlambdaで書いたコードを教えてください

def f():
__print(1)
__print(1)
0870デフォルトの名無しさん2015/11/06(金) 13:37:10.69ID:qqK0gbSQ
>>863
attributes("-fullscreen", True)
0871デフォルトの名無しさん2015/11/06(金) 17:04:18.62ID:F7EIvq3A
Cでpythonモジュール(*.pyd)作ろうと思って色々ためしてたら
PyString_FromFormatで%fとかについ最近まで対応してなかったんだなー
0872デフォルトの名無しさん2015/11/06(金) 17:05:20.79ID:F7EIvq3A
>>867
2.6じゃないのか
0873デフォルトの名無しさん2015/11/06(金) 17:06:57.33ID:F7EIvq3A
>>869
lambda: [print(1), print(1)]
0874デフォルトの名無しさん2015/11/06(金) 19:45:50.48ID:H8/mSBf4
RHEL5は2.4
0875デフォルトの名無しさん2015/11/06(金) 20:43:53.17ID:bL8oHt+C
RHELは7でも2系で7のEOLが2024年。Python2は2020年までの延長発表したけど、どうするんだろ。
Fedoraはもう3に変わってるんだけどね。
Debianは次の次ぐらいいけるかな?
0876デフォルトの名無しさん2015/11/06(金) 21:07:59.85ID:H8/mSBf4
そんなの何の問題もない
/usr/bin/pythonの保守はディストリビューションのメンテナの仕事だから
0877デフォルトの名無しさん2015/11/06(金) 22:12:57.42ID:lDi+bZZ1
RHELはpython3に移行する前にyumをdnfに移行しないと
yumがどういう状況にあり、なぜpython3への移行を妨げているかは
dnfの開発経緯を読めば分かる
0878デフォルトの名無しさん2015/11/06(金) 22:21:08.44ID:qoQoDq6D
隣の階層の.pyをインポートしようと思ってやりかた調べたら面倒すぎてわろた
流石に仕様がクソすぎやろ…
0879デフォルトの名無しさん2015/11/06(金) 22:21:32.36ID:lDi+bZZ1
まあFedoraの立ち位置を考えると
RHEL8か9では移行するんじゃないですかね
それでも低能君が使うPythonは2だけどね
0880デフォルトの名無しさん2015/11/06(金) 22:22:29.75ID:lDi+bZZ1
絶対インポート以外書くんじゃねえこのド低能が
0881デフォルトの名無しさん2015/11/06(金) 22:34:39.32ID:H8/mSBf4
そういうんじゃなくて、
PYTHONPATHに含まれてないとimport対象にならないことを言ってると思う。
某下品な言語なんかだと、どこからでもインポートできるせいで、
お漏らしの原因になってるでしょ。
汚物好きのマニアックな言語ユーザーが、
なぜPythonを使おうとしているのか、全く分からないけど。
0882デフォルトの名無しさん2015/11/06(金) 22:55:38.29ID:A8OcAOd1
PYTHONPATHやパッケージ階層を無視したら、
セキュリティが滅茶苦茶になる

chroot, DocumentRootなども効かなくなる

そんな危険なアプリは、商用では使えない
0883デフォルトの名無しさん2015/11/06(金) 22:55:58.24ID:3ce6Taxj
パッケージ内のモジュールはパッケージのトップからの絶対importを使う
そしてsetup.pyを書いてパッケージ化しpipで導入する
システム環境へのインストールを避けたいならvirtualenvなどを使う
0884デフォルトの名無しさん2015/11/07(土) 04:21:01.63ID:J5i3UOGI
>>877
> dnfの開発経緯を読めば分かる
探すの面倒だから説明して。
0885デフォルトの名無しさん2015/11/07(土) 06:17:43.27ID:zFF1fNmF
>>839
クォートもはずせるようだし、
こういうツールで、CSVを変換すれば?
自分で変換するより、安全かも

csvkit 0.9.1
ttp://csvkit.readthedocs.org/en/0.9.1/

日本人のサイトもあるよ
csvkit を使ってみる
ttp://kshigeru.blogspot.jp/2012/06/csvkit.html


他には、SQLAlchemyのような、O/Rマッパーを使うとか、
SQLObject, Django付属のライブラリとか
08868852015/11/07(土) 11:43:31.50ID:zFF1fNmF
この日本人のサイトが、わかりやすい

csvkitの使い方まとめ
ttp://qiita.com/gingi99/items/d5add3aa062bf4f10cad

csvclean で、正しいファイル形式かどうか、チェックする

csvformat -T a.csv で、タブ区切りに変換できる
0887デフォルトの名無しさん2015/11/07(土) 13:56:55.26ID:4yddep+9
3つ以上の積集合の結果を出力したいのですが

data = [{5, 6, 7, 9, 10, 11, 13, 14, 15}, {0, 2, 3, 8, 10, 11, 12, 14, 15}, {0, 1, 3, 4, 5, 7, 12, 13, 15}]

個数が固定の場合は
data[0] & data[1] & data[2]
とすればできるのですが

空のsetだと積集合できないのでいい方法ないでしょうか?
08888872015/11/07(土) 14:11:29.67ID:4yddep+9
>>887
すみませんできました。

data = [{5, 6, 7, 9, 10, 11, 13, 14, 15}, {0, 2, 3, 8, 10, 11, 12, 14, 15}, {0, 1, 3, 4, 5, 7, 12, 13, 15}]

if len(data) > 2:
ans = data[0]
for i in data[1:]:
ans &= i
else:
ans = data[0]
0889デフォルトの名無しさん2015/11/07(土) 14:15:11.47ID:4yddep+9
if len(data) > 1:
の間違えでした
0890デフォルトの名無しさん2015/11/07(土) 14:29:49.04ID:ys3xAbOv
>>887
import functools
import operator
it = iter(data)
ans = functools.reduce(operator.and_, it, next(it, set()))

標準ライブラリを使わない場合は
ans, *tail = data or [set()]
for s in tail:
 ans &= s
0891デフォルトの名無しさん2015/11/07(土) 16:06:19.43ID:vxghkHwR
pythonをうまく使うことって
って誰かがつくったアプリを組み合わせて使うやり方みたいなもの?
初心者です
0892デフォルトの名無しさん2015/11/07(土) 16:08:44.82ID:vxghkHwR
間違って送信してしまった

pythonをうまく使うって
誰かがつくったアプリをうまく組み合わせて使うってこと?
初心者です
0893デフォルトの名無しさん2015/11/07(土) 16:10:11.64ID:E6FLvPzh
あの計算ライブラリを使ってみたいから
と手を出すも糞すぎる言語仕様に苦しみのたうち回り
糞尿まみれの汚物パイチョナーの吐瀉物に沈むもののことです
パイチョン狂信者はパイソンこそが世界唯一の最強言語だと信じて疑わない基地害しかいないので
彼らの言葉に耳を傾けるのはやめましょう
08948872015/11/07(土) 16:32:21.23ID:4yddep+9
>>890
上の方はよくわからないので勉強します。

functoolsのreduceのサンプルを参考に
http://docs.python.jp/3/library/functools.html
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) は ((((1+2)+3)+4)+5)

functools.reduce(lambda x, y: x & y, data)

これでも同様の結果ができました。
ありがとうございます。
0895デフォルトの名無しさん2015/11/07(土) 16:33:27.12ID:vxghkHwR
ある言語の中で、いいライブラリが増えるか増えないか、というのは偶然で決まる?
0896デフォルトの名無しさん2015/11/07(土) 17:56:54.73ID:aWGmA87m
いいライブラリを書いてくれるプログラマの食指を動かすような言語仕様とか
使い勝手とかじゃない?
0897uy ◆Qawu9.2l1E 2015/11/07(土) 18:32:03.46ID:Rb6TxNfK
「お前の左食指の言語仕様スゲーな、剛毅木訥の効果アップとか合成?」

「うん、鉄帽団栗、大蝦蟇、猩猩、大井守の尾肉、鬼鮟鱇の肝臓で合成できる

それよりお前のライブラリとフレームワークもスゲーな」

「あーこれか、これは碩老樹瞑想窟で手に入るぞ、馬鳥免許取ったら馬鳥馬留から馬鳥乗ってスグいけるよ

刻苦勉励と天佑神助の効果アップだからマジオススメ」
0898デフォルトの名無しさん2015/11/07(土) 18:36:03.88ID:vxghkHwR
人間の問題かも。
人間の言語仕様とか使い勝手を
理解しやすい語彙で
他の言語よりも簡単に改善できる言語だと
よいライブラリが増える可能性が増える、
ということになるかも。
0899デフォルトの名無しさん2015/11/07(土) 18:36:56.26ID:vxghkHwR
訂正

人間の問題かも。
言語仕様とか使い勝手を
人間が理解しやすい語彙で
他の言語よりも簡単に改善できる言語だと
よいライブラリが増える可能性が増える、
ということになるかも。
0900デフォルトの名無しさん2015/11/07(土) 18:40:14.59ID:LOAJFMP+
訂正

人間の問題かも。
言語仕様とか鬼鮟鱇を
人間が理解しやすい語彙で
他の碩老樹瞑想窟よりも簡単に天佑神助できる言語だと
よいライブラリが増える可能性が増える、
刻苦勉励ということになるかも。
0901uy ◆Qawu9.2l1E 2015/11/07(土) 18:40:46.36ID:oj5NSdiM
パパパパパイソニスタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0902デフォルトの名無しさん2015/11/07(土) 18:49:25.03ID:vxghkHwR
コピペから変数をいじるのは
初心者からしたら役に立つ
主要なプログラミング技法
だとわかった
0903uy ◆Qawu9.2l1E 2015/11/07(土) 20:56:20.74ID:SyMt01Zb
>>902
SE音声の最初の1語だけをループさせるのも
ゲーム製作において初歩的な演出の技術
覚えておいて損はない


主にこれが敵を連続キルした時などに
最初の1語がキル数に応じて連続したりするので
特にゲーム関係スレでは煽りに使われる事が多い

このスレでは今
「パパパパパイソニスタwwwwwwwww」という書き込みがありましたね
これは
1パ2パ3パ4パ
5パイソニスタ kill streakという意味なのです
0904デフォルトの名無しさん2015/11/07(土) 22:26:03.03ID:7dMVr59b
>>870
863です
できました!
ありがとうございます!
0905デフォルトの名無しさん2015/11/07(土) 23:25:46.96ID:qRUcE/WB
このスレにコイルを置いたら発電できそうだゾ〜
0906デフォルトの名無しさん2015/11/08(日) 16:11:22.60ID:bzkojXZx
pandasについての質問です
値が特定の条件を満たす行を抽出し、その行のインデックスを取得したいのですが
どのようにすればいいでしょうか?
以下の例であれば101と102を取得したいです。

iris[iris['Species'] == 'virginica']
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 101 6.3 3.3 6.0 2.5 virginica
# 102 5.8 2.7 5.1 1.9 virginica
0907デフォルトの名無しさん2015/11/08(日) 17:23:36.71ID:1OA1jslN
ぱよぱよち〜ん(´・ω・`)

ぱよ?ぱよぉ〜〜
0908デフォルトの名無しさん2015/11/08(日) 17:36:35.67ID:gCsNpOay
>>906
初心者ですが力になりたいと思いますのでまず動くコードで貰えませんか?
0909デフォルトの名無しさん2015/11/08(日) 17:56:33.43ID:QZOkMdD8
>>906
iris.index[iris['Species'] == 'virginica']
0910デフォルトの名無しさん2015/11/08(日) 18:57:43.50ID:SrvFrSJP
ぱいぱいそ〜ん(笑)
0911デフォルトの名無しさん2015/11/08(日) 19:10:42.17ID:ia91nugD
ぱいそタン?
0912デフォルトの名無しさん2015/11/09(月) 07:49:41.66ID:+0craglA
逆引きの本かウェブサイトでいいのありませんでしょうか。
0913デフォルトの名無しさん2015/11/09(月) 07:54:50.62ID:eW5XCVAC
ないんだな、それが
0914デフォルトの名無しさん2015/11/09(月) 10:33:26.93ID:uso1536/
>>912
覚えたことを一つづつwikiに書いていけばいいじゃない
俺はそうやって覚えていったよ
0915デフォルトの名無しさん2015/11/09(月) 11:07:35.20ID:G9VzJ3Ey
いい方法なんて聞いてねえんだよ
有るか無いかを聞いてんだ
質問には適切に答えろ
Pythonやってると基本的な日本語能力も失われていくのか?
0916デフォルトの名無しさん2015/11/09(月) 11:19:25.44ID:3CasijgB
お前の思考だけで成り立ってる掲示板じゃないから
0917デフォルトの名無しさん2015/11/09(月) 12:28:06.78ID:eW5XCVAC
威勢はいいな
0918デフォルトの名無しさん2015/11/09(月) 12:57:42.65ID:xaDjTNLo
>>915
答えてるだろ、ボケ ⇒ >>913
基本的な日本語能力すらないのかよ w
0919デフォルトの名無しさん2015/11/09(月) 13:23:35.15ID:eW5XCVAC
俺を引き合いに出すな
殺すぞ
0920デフォルトの名無しさん2015/11/09(月) 13:52:30.13ID:wYunBSWO
>1 くらい読んでからレス書き込めカス
0921デフォルトの名無しさん2015/11/09(月) 19:58:50.95ID:IWnxWu8E
pythonを使っていると
糞みたいな言語仕様のせいで
心まで糞色の下級国民になる
このスレを読んでるとよく分かる
0922デフォルトの名無しさん2015/11/09(月) 20:47:09.91ID:XHl8ePvc
確かにニシキヘビがとぐろ巻いてる様子はまさに巻き糞ですわな
0923デフォルトの名無しさん2015/11/09(月) 23:51:55.64ID:2w0H6sf5
確かに逆引きないよな
Rubyは書籍もサイトもあるけど
だんだん使用者増えてるし今後出てくるでしょ
0924デフォルトの名無しさん2015/11/10(火) 06:02:51.47ID:7NcmQmNc
厶板の他言語のスレも見てるけども
他言語と比較してなんでpythonの入門者はこんなに質が悪いの?
0925デフォルトの名無しさん2015/11/10(火) 06:29:10.56ID:vvTaEHDB
前はこんなんじゃなかったんだよ
むしろRubyが酷かった
機械学習絡みで入ってくる人が多いんじゃないかな
Rubyの時はRails全盛期だった
0926デフォルトの名無しさん2015/11/10(火) 07:53:03.36ID:qtRGqLdH
rubyが下火になったからバカが流入してきてるのか
0927デフォルトの名無しさん2015/11/10(火) 11:53:12.11ID:YT7kbsA+
Rubyのコミュニティは近寄り難い雰囲気があるけど
Pythonはそれ以上
0928デフォルトの名無しさん2015/11/10(火) 12:08:49.93ID:mVStRMDa
ジャップログラマーみたいに英語ほとんど読めないなら
雰囲気なんて感じ取れないから大丈夫だと思うけどなあ
0929デフォルトの名無しさん2015/11/10(火) 12:43:17.14ID:DjP7y1Ap
>>924
2chで世界が判った気になり始めたら、色んな意味でヤバい。
0930デフォルトの名無しさん2015/11/10(火) 13:06:07.16ID:mVStRMDa
それはまあそうですね
0931デフォルトの名無しさん2015/11/10(火) 17:55:00.04ID:76sPbOPF
ある特定の文字列以降は削除するにはどうすればいいですか?
以下の文章であれば埼玉を指定することで大阪、奈良を削除したいです。

東京
神奈川
埼玉
大阪
奈良
0932デフォルトの名無しさん2015/11/10(火) 18:19:57.63ID:NawThMKT
>>> s = '東京\n神奈川\n埼玉\n大阪\n奈良'

方法1
>>> n = s.index('埼玉') + len('埼玉')
>>> s[:n]
'東京\n神奈川\n埼玉'

方法2
>>> ''.join(s.partition('埼玉')[:2])
'東京\n神奈川\n埼玉'
0933デフォルトの名無しさん2015/11/10(火) 18:57:09.26ID:76sPbOPF
ありがとうございます。
方法1を採用し、思い通りのことができました。

もう一つ質問なのですが文章中に埼玉がない場合の例外処理はどのようにしたらいいでしょうか?
0934デフォルトの名無しさん2015/11/10(火) 19:34:44.64ID:Qd1cQuvU
方法2を使うべきだと思ったけど

例外は自分で決めなよ
0935デフォルトの名無しさん2015/11/10(火) 19:58:18.89ID:qupILkXi
自分で考えずまるなげするだけのバカは4ね
0936デフォルトの名無しさん2015/11/10(火) 20:10:36.11ID:mVStRMDa
str.findだと例外じゃなく戻り値でエラー返すよ
ってことではなく?
0937デフォルトの名無しさん2015/11/10(火) 21:15:15.20ID:YT7kbsA+
for e in open('hoge.txt', 'rb').readlines():
(forの下)if e == '埼玉': break
(forの行頭)else:
raise Exception('hage')
0938デフォルトの名無しさん2015/11/11(水) 01:54:54.80ID:YoWmnP0i
>>933
俺が初心者の頃ならまず文章中に埼玉があるか調べて、あるなら処理続行する
調べ方はfindとかいくらでもある
0939デフォルトの名無しさん2015/11/11(水) 10:38:24.94ID:xDrXt5W4
00001〜99999までの数値を出す方法はありますか
for i in xrange(100000):などではi=1〜99999となってしまい困っています
0940デフォルトの名無しさん2015/11/11(水) 11:50:15.61ID:1POahPwI
"00001"という *文字列* は作れる
数値は無理

print map(lambda x:('%05d' % x), xrange(10000))
print(list(map(lambda x:'{:05}'.format(x), range(10000))))
0941デフォルトの名無しさん2015/11/11(水) 20:13:18.99ID:2zY5wKX6
Friends(({"a", "b"}, {"b", "c"}, {"c", "a"}, {"a", "c"}))
の{}ってどういう意味?
辞書でもないよね
functionのreturnで{"a", "b"}型で返すことを要求されてるんだけどdict()とかしてもエラーになるし
普通にa = {"a", "b"}とかしてもエラーになるし
どうすればいい?
0942デフォルトの名無しさん2015/11/11(水) 20:37:17.00ID:ZcY7VKQP
>>941
集合型じゃないかな
http://docs.python.jp/3.4/library/stdtypes.html#set-types-set-frozenset
0943デフォルトの名無しさん2015/11/11(水) 20:42:16.94ID:ZcY7VKQP
>>941
こっちのほうがよかったかな
http://docs.python.jp/3.4/tutorial/datastructures.html#sets
0944デフォルトの名無しさん2015/11/11(水) 20:45:27.47ID:2zY5wKX6
>>943
今から読んでみる
ありがとう
0945デフォルトの名無しさん2015/11/11(水) 20:48:00.37ID:2zY5wKX6
>>943
ごめん
これってPython3のみ?
自分のPython2.6でやったら
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
はSyntaxError: invalid syntaxが出るんだけど?
0946デフォルトの名無しさん2015/11/11(水) 20:55:05.50ID:2zY5wKX6
やっぱPython2ではダメなようだね
http://docs.python.jp/2/tutorial/datastructures.html#tut-sets
教えてくれてありがとう
0947デフォルトの名無しさん2015/11/11(水) 20:58:01.18ID:ZcY7VKQP
>>946
2.7なら使えるようだよ
http://docs.python.jp/2.7/library/stdtypes.html#set-set-frozenset
0948デフォルトの名無しさん2015/11/11(水) 20:58:34.78ID:o24YVROx
2.7からだよ…
2.6ってことはCentOS6か
0949デフォルトの名無しさん2015/11/11(水) 22:35:41.90ID:fNWMP0gm
2.4でも3の機能を使えるようにしろ!!
0950デフォルトの名無しさん2015/11/12(木) 02:12:32.41ID:Los5n9AY
馬鹿言ってないでさっさと死ね
0951デフォルトの名無しさん2015/11/12(木) 09:32:46.11ID:temb17Y9
2系は滅びろ
0952デフォルトの名無しさん2015/11/12(木) 11:56:24.53ID:RtfqPlY6
javascriptで\uxxxxみたいなunicodeを文字に相互変換する方法を教えてください
0953デフォルトの名無しさん2015/11/12(木) 13:32:05.58ID:VAIEdV8u
unicode_escapeだかってcodecを使う
0954デフォルトの名無しさん2015/11/12(木) 20:42:34.40ID:pgvdnRZv
お前らマジでPython3系使ってるの?
0955デフォルトの名無しさん2015/11/12(木) 20:57:07.42ID:VAIEdV8u
選べる立場にいるなら選ばない理由がないだろ
土方の下っ端の環境は知らないけど
0956デフォルトの名無しさん2015/11/12(木) 22:24:53.24ID:ek1zC/dA
webなら3.5を使う
それ以外なら2.7使わないと無駄にトラブルに遭遇する2.7オンリー
0957デフォルトの名無しさん2015/11/12(木) 22:26:24.62ID:pgvdnRZv
空辞書の判定ってどうすればいい?

a = {}
a is None # False
a is {} # False
a == None # False
a == {} # True

一番下でもいいのかもだけど、これでいいのかなと思って...
0958デフォルトの名無しさん2015/11/12(木) 22:36:13.57ID:xD3c0Nin
len(a)
0959デフォルトの名無しさん2015/11/12(木) 23:02:35.96ID:U/3XcmWu
>>957
if a:
0960デフォルトの名無しさん2015/11/12(木) 23:05:46.77ID:U/3XcmWu
ていうか、isと==の違いちゃんと理解しておいた方がええよ
0961デフォルトの名無しさん2015/11/12(木) 23:07:11.64ID:LaziVsQ5
>957
a={}
if a:
____print("empty")
else:
____print("not empty")

空の辞書やリストは、真偽評価のコンテクストでは False として扱われるよ。

len(a)とするのは冗長だけど、可読性は良くなるかもね。
0962デフォルトの名無しさん2015/11/12(木) 23:11:35.25ID:LaziVsQ5
>961
ごめん。プリント文の中身を間違えた。
if a:
__print("not empty")
else:
__print("empty")
とかきたかった。
混乱させたら失礼。
09639572015/11/12(木) 23:14:23.05ID:pgvdnRZv
皆、色々教えてくれてありがとう
0964デフォルトの名無しさん2015/11/13(金) 08:06:42.96ID:4OOsT4lg
len(a)が何で冗長?
0965デフォルトの名無しさん2015/11/13(金) 10:14:03.39ID:2p+ArX3V
if a: で済むものを if len(a): とするのは冗長でしょ
0966デフォルトの名無しさん2015/11/13(金) 10:44:57.02ID:Y7QLtqll
a = {}
print("{}" == str(a))

a = {"a":1}
print("{}" == str(a))
0967デフォルトの名無しさん2015/11/13(金) 11:54:49.21ID:SOgWzJHN
dict={}
ele1=("key", "apple")
ele2=("key", "orange")
ele3=("words", "hat")
などがあった際に
dict={"key":("apple", "orange", "tiger"), "words":("hat", "hot")}
のようにdictにkeyの値によって動的に加えていくにはどうすればいいですか?
0968デフォルトの名無しさん2015/11/13(金) 11:57:54.20ID:SOgWzJHN
dict={"key":["apple", "orange", "tiger"], "words":["hat", "hot"]} でした

dict={"key":"apple", "key":"orange"}
などはそんな難しくないですが
0969デフォルトの名無しさん2015/11/13(金) 12:27:22.95ID:umsjSeCw
collections.defaultdictを使うのが手っ取り早い

import collections
es = [('key', 'apple'), ('key', 'orange'), ('words', 'hat')]
dic = collections.defaultdict(list)

for key, value in es:
 dic[key].append(value)
0970デフォルトの名無しさん2015/11/13(金) 13:01:14.70ID:v5Sm1rWO
>964
PEP8 の公式スタイルガイドでも、
If seq:
が推奨されていて、
If len(seq):
は避けるべきとされているよ。
一度 PEP8 に目を通すといいんじゃないかな。
pep8というパッケージもあって、スタイルガイドにそっているか、チェックしてくれるよ。
0971デフォルトの名無しさん2015/11/13(金) 13:08:48.25ID:SOgWzJHN
>>969
助かりました
0972デフォルトの名無しさん2015/11/14(土) 01:21:00.91ID:yJ0THCOh
cd /d %~dp0
d:\Python27\python.exe test.py %1

このバッチファイルに?.txtというファイルをドロップすると
コマンドプロンプトには
>d:\Python27\python.exe test.py d:\?.txt
という風にちゃんと?.txtと表示されますが
バッチファイルを
d:\Python27\python.exe test.py ?.txt
と書き換えて保存しようとするとunicode文字列があると表示されて
unicodeで保存するかの選択肢が出ます
保存して実行すると
>d:\Python27\python.exe test.py d:\ 笑、.txt
こんな感じで文字化けします
コマンドプロンプトのコードページはshift-jisなのに
unicodeである?が表示されるのはなぜでしょうか?
最終的にはバッチで取得したファイルをpythonで取得して
ファイルの存在チェックをしたいんですが
print sys.argv[1]
とすると?.txtと表示されます
文字コードで躓いてしまって混乱してます
どなたかお助けください

vs2015+python2.7.3
0973デフォルトの名無しさん2015/11/14(土) 01:25:36.97ID:yJ0THCOh
すみません。こちらでも文字化けした
(ハート)の部分はハートの機種依存文字です
cd /d %~dp0
d:\Python27\python.exe test.py %1

このバッチファイルに(ハート).txtというファイルをドロップすると
コマンドプロンプトには
>d:\Python27\python.exe test.py d:\(ハート).txt
という風に(ハート).txtと表示されますが
バッチファイルを
d:\Python27\python.exe test.py (ハート).txt
と書き換えて保存しようとするとunicode文字列があると表示されて
unicodeで保存するかの選択肢が出ます
保存して実行すると
>d:\Python27\python.exe test.py d:\ 笑、.txt
こんな感じで文字化けします
コマンドプロンプトのコードページはshift-jisなのに
unicodeである?が表示されるのはなぜでしょうか?
最終的にはバッチで取得したファイルをpythonで取得して
ファイルの存在チェックをしたいんですが
print sys.argv[1]
とすると?.txtとなりうまく表示されません
文字コードで躓いてしまって混乱してます
どなたかお助けください

vs2015+python2.7.3
0974デフォルトの名無しさん2015/11/14(土) 06:23:05.33ID:3qZz0Yz4
コマンドプロンプトのコードページがShift_JISだから
Shift_JISの範囲に無いUnicode文字を出力するときに文字化け("?"に変換)する

コマンドプロンプト上で動くバッチファイルやソフトはコードページの影響を受ける

以下投げやりなツッコミ
ファイル名はASCII文字を使え
コマンドプロンプトではShift_JISで保存したファイルを使え
Unicode文字(例えば♥)を使いたいならコマンドプロンプトはやめとけ
0975デフォルトの名無しさん2015/11/14(土) 06:49:27.34ID:OtdRrL2O
機種依存文字をファイル名に使うとかすごい時代になったな
日本語ファイル名すら滅多に使わないのに…
0976デフォルトの名無しさん2015/11/14(土) 08:08:55.11ID:Hu5fAc9a
ASCII文字は、Shift_JIS系のCP932・UTF-8で共通だから、
? は、たぶんASCII内にある文字かも?

仕事ではファイル名は、半角英数字と、_ のみを使う

半角空白・ハイフンなども使っちゃダメ!
0977デフォルトの名無しさん2015/11/14(土) 12:10:28.77ID:kYx4kaK6
>>> a = {}
>>> a = {'a': a}
>>> a = {'a': a}
>>> a = {'a': a}
>>> a = {'a': a}
>>> a = {'a': a}
>>> a
{'a': {'a': {'a': {'a': {'a': {}}}}}}

エラーにならんのかこれ
0978デフォルトの名無しさん2015/11/14(土) 12:21:32.79ID:eCyNFUOR
nest してるだけじゃん

>>> L = []
>>> L = [L]
>>> L = [L]
>>> L = [L]
>>> L = [L]
>>> L = [L]
>>> L
[[[[[[]]]]]]
0979デフォルトの名無しさん2015/11/14(土) 13:57:20.69ID:POuVuGhz
>>977
当たり前だろ

a = {}
a = {'a': {}}
a = {'a': {'a': {}}}
09809732015/11/14(土) 14:51:46.82ID:yJ0THCOh
解決策はないということなんでしょうか?
これから作るファイルなど、変更可能ならもちろん機種依存文字は使いませんが
既存のファイル名を変更せずにwindows上で使えるファイル名なら
どれでも読めるようにしたいんですが、不可能ですか?
コマンドプロンプトを使うなとのことですが
pythonにファイル名を引数で渡す場合、他に方法があるのでしょうか?
0981デフォルトの名無しさん2015/11/14(土) 14:55:22.21ID:kYx4kaK6
argv を codecs 通して読めばいい
0982デフォルトの名無しさん2015/11/14(土) 15:45:10.68ID:l5Uj6Um+
>>980
Shift_JISのWindowsで範囲外の文字を使うのが間違い
0983デフォルトの名無しさん2015/11/14(土) 16:08:44.41ID:eCyNFUOR
>>980
> 既存のファイル名を変更せずに
ここを諦めたら?変更しよう

> pythonにファイル名を引数で渡す場合、他に方法があるのでしょうか?
a.txt の各行にファイル名を書いておいて、
pythonから一行ずつ読めばいいじゃない。
with open("a.txt") as f:
 for line in f:
  filename = line.strip()
  f2 = open(filename)
  print(f2.read())
  f2.close()
0984デフォルトの名無しさん2015/11/14(土) 16:13:21.90ID:yJ0THCOh
>>981
reload(sys)
sys.setdefaultencoding('cp932')
enc = 'shift-jis'
sys.stdin = codecs.getreader(enc)(sys.stdin)
sys.stdout = codecs.getwriter(enc)(sys.stdout)
sys.stderr = codecs.getwriter(enc)(sys.stdout)

if __name__ == "__main__":
str=sys.argv[1]
if(os.path.exists(str)):
print "true"
else:
print "false"
print type(str)
print str

このようにしても、printした文字列は?.txtになって文字化けしますし
ファイルの存在もfalseになります
どうすればいいでしょうか?

>>982
コードページがshift-jisのコマンドプロンプトでも
バッチファイルでの出力に対しては正しくハートが表示されていますが
これはなぜですか?
0985デフォルトの名無しさん2015/11/14(土) 16:25:17.15ID:yJ0THCOh
>>983
変更は無理です。商品名なので。

テキストファイル経由するにしても
結局別の言語なりでD&Dしたファイルパスをテキストに
出力する必要があるわけで…

IPythonならいけるのかなぁ…

概要見た限りpythonは記述が簡単でいいなって思ったんだけど
実践すると、まさか、こんなところで躓くとは
今後Webページの情報も取得したいと思ってたけど
また文字コードに悩まされそうだし、やめとこうかな
0986デフォルトの名無しさん2015/11/14(土) 16:35:01.68ID:eCyNFUOR
python自体は簡単だよ、開発効率良いよ
業務で使うんだったら金払って仕事として誰かに依頼するんだね

これで表示されるファイル名を足掛かりに頑張るんだね

import fnmatch
import os

for filename in os.listdir('.'):
 if fnmatch.fnmatch(filename, '*'):
  print filename

駄目だったら諦めろ
0987デフォルトの名無しさん2015/11/14(土) 16:36:20.91ID:EX5Vv4Gf
コマンドプロンプトも内部的にはUnicodeなんでね…コードページは入出力時に使われるだけじゃない?
Python2はマルチバイト文字セットなんでsys.argvからはエンコード失敗後しか取れない
Unicode文字セット対応のPython3を使うか、2ならctypesからGetCommandLineWとCommandLineToArgvWを使うとかかな
0988デフォルトの名無しさん2015/11/14(土) 18:10:26.12ID:yJ0THCOh
>>986
それも文字化けしてます
意図的には文字化け以外をマッチで取得して…的なことですか?
正確性に欠けると思うんだけど
この文字列問題さえなければなぁ、確かに色々手軽なのに

f = codecs.open('pyfilename.txt', 'w',enc2) # 書き込みモードで開く
  for filename in os.listdir('.'):
  if fnmatch.fnmatch(filename, "*"):
  f.write(filename) # 引数の文字列をファイルに書き込む
   f.close()
これもUnicodeDecodeError
なんで?内部でUnicode使っているんじゃないの?
もうね、訳わかりません。文字列使うとどれもこんな感じ

>>987
コードページに関係なく臨機応変にunicode文字も出力してる感じなんですかね

結局sys.argvでも上記のでもやっぱり文字化け
あらゆるデコード、エンコード試したけど、ハート文字だけ文字化け
もうpythonで取得している時点で文字コードが壊れてるとしか思えんわ

半日ずっとこんなつまらんところで足踏みしててイライラするわ
とりあえず、3かIPython試してみる
2はもう2度と使わない
0989デフォルトの名無しさん2015/11/14(土) 18:24:13.20ID:3qZz0Yz4
文字化けの回避方法はある
PYTHONIOENCODING環境変数にUnicodeを指定して出力はファイルへリダイレクトする
argvがどうなるかは分からん

set PYTHONIOENCODING="utf-16"
c\:python34\python.exe -c "print('\u2665')" >out.txt
notepad out.txt
0990デフォルトの名無しさん2015/11/14(土) 18:24:19.89ID:OtdRrL2O
ハートを商品名に使ってる会社もクソだが、構成してる社員もクソみたいだな
0991デフォルトの名無しさん2015/11/14(土) 19:05:46.61ID:yJ0THCOh
いやもう2はアンインストールして3.5いれたわ
コマンドライン引数の問題もあっさりクリア
これは楽ちん、最初からこっちにしとけばよかったわ
0992デフォルトの名無しさん2015/11/14(土) 20:12:05.26ID:eCyNFUOR
えらいっ。
0993デフォルトの名無しさん2015/11/14(土) 20:33:56.54ID:yJ0THCOh
やりたかったことがやっとできた
zip解凍>画像処理>zip圧縮
しかも3.5-64bitにしてPillowで画像処理やったら
2と同じコードなのに4倍も速くなった!
4k画像なのに0.1秒もかからない
なんでこんなに違うんだ?
未だに2を勧める意味がわからんわ
ほんと騙された

C#と比べたらかなり簡潔でわかりやすいコーディングができるなあこれ
DB操作はEFが圧倒的に楽だからC#でやるとして
あとはスクレイピングツールとファイル仕分けツールだなー
0994デフォルトの名無しさん2015/11/14(土) 20:34:51.64ID:Jkl9KIFo
茶番劇やないかw
0995デフォルトの名無しさん2015/11/14(土) 22:25:54.61ID:duU50ZfM
unicodeファイル名でオレも昔かなりはまったな
解決したようでよかった
0996デフォルトの名無しさん2015/11/14(土) 22:55:21.87ID:0kN6s8T8
全部C#でやりゃいいじゃん…文字コードの問題に引っかかることなんかないぞ
0997デフォルトの名無しさん2015/11/14(土) 23:18:05.48ID:duU50ZfM
そりゃ分かるけど
おまえはもっかいスレタイ読んどけよw
0998デフォルトの名無しさん2015/11/14(土) 23:22:13.37ID:hqNg22Fn
numbers=[1,2,3,4,5]
def foo(*args):
for i in args:
print(i)
結果:[1,2,3,4,5]
これを
結果:1
2
3
4
5
にするにはどうすればいいですか?
0999デフォルトの名無しさん2015/11/14(土) 23:34:08.80ID:/ADqMz2d
>998
def f(*args)
を
def f(args)
にすればいい。
1000デフォルトの名無しさん2015/11/15(日) 00:45:09.16ID:D/e506/x
次スレは?
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
10021002Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
http://pink-chan-store.myshopify.com/
レス数が1000を超えています。これ以上書き込みはできません。