くだすれPython(超初心者用) その34 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/05/28(日) 20:34:15.87ID:7AoJbiyO
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

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

前スレ
くだすれPython(超初心者用) その33
http://echo.2ch.net/test/read.cgi/tech/1490424742/
2017/05/28(日) 20:35:12.02ID:bw/VOywX
>>1
2017/05/28(日) 20:35:27.98ID:7AoJbiyO
関連スレ
Pythonのお勉強 Part53
http://echo.2ch.net/test/read.cgi/tech/1494683284/
◆関連リンク Python の Home Page
ttp://www.python.org/
◆長いコードはこういうところにはってください
ttp://ideone.com/
ttp://codepad.org/
ttp://pastebin.com/
ttp://dpaste.com/
ttps://try.jupyter.org/
◆まとめwiki
ttp://python.rdy.jp/

ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
2017/05/28(日) 20:40:30.00ID:7AoJbiyO
関連スレ

Matplotlib でグラフプログラミング【Python】
http://echo.2ch.net/test/read.cgi/tech/1256385982/
ディープラーニング
http://echo.2ch.net/test/read.cgi/tech/1457792560/(DAT落ち)
人工知能ディープラーニング機械学習のための数学
http://echo.2ch.net/test/read.cgi/tech/1482808144/
【統計分析】機械学習・データマイニング15
http://echo.2ch.net/test/read.cgi/tech/1492344216/

【Python】Python Webフレームワーク総合スレ
http://tamae.2ch.net/test/read.cgi/php/1329996601/
【Python】TurboGearsスレ Part 1【Framework】
http://tamae.2ch.net/test/read.cgi/php/1176022606/
Google App Engine for Python 6アプ目
http://tamae.2ch.net/test/read.cgi/php/1358570953/
Python CGI
http://tamae.2ch.net/test/read.cgi/php/1163513344/
5デフォルトの名無しさん
垢版 |
2017/05/29(月) 13:26:13.77ID:gnWdEBVU
5年以上前の過去ログへのレスですw

http://toro.2ch.net/test/read.cgi/tech/1322115727/
> 113 :デフォルトの名無しさん:2011/12/07(水) 15:17:31.93
> ある本に書いてあったのですが、
> from math import sqrt
> psqrt(pow(4.5-4.2,2)+pow(1-1,2))
> のようにすると、
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> NameError: name 'psqrt' is not defined
> のようなエラーが出ます
> これはどのようにすればいいのでしょうか?

この書籍はオライリーの『集合知プログラミング』(初版)だと思われますが、
同じエラーを経験しましたが、これは見ての通り
文脈からしてpsqrtをsqrtに直せばいいだけだと思いますが、
そもそもpow関数の引数に入れる値が間違っているようです。
この書籍の正誤表がネット上にあります。
https://sites.google.com/site/prgclctintelligence/errata
この正誤表の訂正前の記述もこの初版とは異なりますので要注意。
6デフォルトの名無しさん
垢版 |
2017/05/29(月) 22:29:35.86ID:5gJ1PeLc
条件がTrueの時はABC、条件がFalseのときはBCのように
(A)BCの(A)の部分を条件で追加したいのですが


test = [['あいうえお', 'アイウエオ', 'ア'], ['かきくけこ', 'カキクケコ', ''],
['さしすせそ', 'サシスセソ', 'サ'], ['たちつてと', 'タチツテト', '']]

result = []

for i in test:

x = ''

if i[2]:
x += '【{0[2]}】\n'.format(i)

result.append(x + '{0[0]}\n{0[1]}'.format(i))

print('\n\n'.join(result))

これを内包表記で作成したいのですが

result = ['【{0[2]}】\n{0[0]}\n{0[1]}'.format(i) if i[2] else '{0[0]}\n{0[1]}'.format(i) for i in test]

条件でformatを切り替える以外に方法ありますでしょうか?
7デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:49:29.89ID:gxWnkgCC
おまえ向いてない
8デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:59:08.01ID:ItunGfv1
>>6
result = ['\n'.join(( '【' + i[2] + '】', i[0], i[1])) if i[2] else '\n'.join((i[0], i[1])) for i in test]
print('\n\n'.join(result))
2017/05/30(火) 11:14:07.76ID:C9qHY4kc
>>7
最終的な目的がわからんのだが、他の方法でやりたい理由は?
単にスマートに書きたいってだけ?
2017/05/30(火) 11:14:43.87ID:C9qHY4kc
アンカ違ってた。>>6ね。
11デフォルトの名無しさん
垢版 |
2017/05/30(火) 11:46:52.81ID:ItunGfv1
>>6
def trans(s):
if s[2]: return '【' + s[2] + '】', s[0], s[1]
return s[0], s[1]

result = ['\n'.join(trans(i)) for i in test]
print(*result, sep='\n\n')
2017/05/30(火) 14:23:14.01ID:6yum6/wf
>>8,11
ありがとうございます。
参考にさせていただきます。

>>9
条件で文字を表示あり・なしみたいなのができたらいいなと思って

最初に内包表記で作ったのが
result = ['【{0[2]}】\n'.format(i) if i[2] else '' + '{0[0]}\n{0[1]}'.format(i) for i in test]
うまくいかなくて

いま試しにかっこつけてみたら思った通りになったんだけどかっこって大丈夫なのか?
result = [('【{0[2]}】\n'.format(i) if i[2] else '') + '{0[0]}\n{0[1]}'.format(i) for i in test]
2017/05/30(火) 14:30:48.01ID:6yum6/wf
リストにしなくてもこれでいけそう

flag = True
test = 'あいうえお' + ('かきくけこ' if flag else '') + 'さしすせそ'
print(test)


どうもありがとうございました。
2017/05/30(火) 15:33:34.98ID:C9qHY4kc
そこにこそformat()だろ。
test ='あいうえお{}さしすせそ' .format('かきくけこ' if flag else '')
2017/05/30(火) 17:10:33.37ID:6yum6/wf
>>14
ありがとう
確かにこっちのほうがきれいだ
2017/05/30(火) 17:27:38.44ID:8uTEYK+9
きれいだ
17age
垢版 |
2017/05/30(火) 18:54:13.25ID:cPI0fzDZ
実行完了後に端末を閉じたい
exit()で終了すると思ったのですが終了しませんでした。

https://ideone.com/wTEMeN
18age
垢版 |
2017/05/30(火) 20:36:57.55ID:cPI0fzDZ
どなたか、解決法を知りませんか?
2017/05/30(火) 20:38:35.97ID:kWERrntF
多分無理
20age
垢版 |
2017/05/30(火) 21:14:57.92ID:cPI0fzDZ
そこを何とかお願いします

最初の1秒の間にエンター押したら起動後に消えてくれます
2017/05/30(火) 21:21:20.61ID:Oby1Oa62
端末のプロセスをキルしたらいけるか?
2017/05/30(火) 21:30:38.96ID:sm3ZD28q
>17
tesut
じゃなくて、
test
って書いてほしい。
import os
import signal
input("hit Enter to close the console")
is.kill(os.getppid(), signal.SIG_DFL)
これでターミナル閉じたよ。wundows
2017/05/30(火) 21:32:13.67ID:sm3ZD28q
>22
is.kill
じゃなくて、
os.kill
誤字すいません。
2017/05/30(火) 21:48:21.02ID:Oby1Oa62
wundows
2017/05/30(火) 21:55:40.69ID:sm3ZD28q
重ね重ね、誤字ばかりで、申し訳ない
26デフォルトの名無しさん
垢版 |
2017/05/30(火) 22:43:31.29ID:f/2fyGyA
d を辞書としたとき、

for k in d.keys():



for k in d:

は等価ですか?

等価だとして、どちらが早いですか?
2017/05/30(火) 22:47:46.61ID:Eop9uX5M
そこの速度差は誤差でしょ
2017/05/30(火) 22:53:39.93ID:kWERrntF
>>26
dからkeysを探して呼び出す手間が入るから等価ではない、速度差は上にも書いてある通り誤差だろうが
2017/05/30(火) 23:03:14.12ID:WkZkNXY5
>26
disっていう標準モジュールで、バイトコードを逆アセンブルした結果を見れるよ。
既に指摘のある通り、
d.keys()だと
LOAD_ATTR
CALL_FUNCTION
が余計に入る。
実行時間は、誤差の範囲と思う。
2017/05/30(火) 23:06:38.21ID:f/2fyGyA
>>27-29

ありがとうございました。

for k in d:

のほうが速いというのは意外でした。
2017/05/30(火) 23:28:27.47ID:f/2fyGyA
D1, D2 は集合。
D = (D1, D2) は M のインスタンス変数。
d は辞書で、 M のインスタンス変数。

for r in M.D[0]:
■■for c in M.D[1]:
■■■■if (r, c) in M.d:

というようなコードを↓のようなコードに置き換えると、
for ループのループ回数が多いとき、少しは速くなる
でしょうか?

ケースバイケースだとは思いますが、↓のような方法で
少しは速くしようなどと考える人はあまりいないでしょうか?


D1 = M.D[0]
D2 = M.D[1]
M_d = M.d
for r in D1:
■■for c in D2:
■■■■if (r, c) in M_d:
2017/05/30(火) 23:30:27.91ID:kWERrntF
>>31
俺ならitertools使う
2017/05/30(火) 23:34:04.54ID:/DgUh2Dj
>>31
やってみりゃいいじゃん
2017/05/30(火) 23:36:14.34ID:f/2fyGyA
>>32

ありがとうございます。
調べてみます。

>>33

実際に計算して計算時間を計るというのは思いつきませんでした。
やってみます。
2017/05/30(火) 23:48:47.28ID:ah0rBcm0
冗談きついぜ
2017/05/30(火) 23:50:27.27ID:wCTc2Yir
大差ないと予想
2017/05/31(水) 00:06:13.82ID:gBIsA548
>>31
for name in expr:のexprは最初の一度だけ評価されてイテレーターになるので
ローカル変数にexprの結果を割り当てても、その手間分コストが増えるだけじゃないかな
http://docs.python.jp/3/reference/compound_stmts.html#the-for-statement
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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