■ このスレッドは過去ログ倉庫に格納されています
Pythonのお勉強 Part54
- 1 :デフォルトの名無しさん:2017/09/01(金) 16:44:47.30 ID:igIE9hK/.net
- Pythonオフィシャルサイト
http://www.python.org/
テンプレ等は2以降で
■前スレ
Pythonのお勉強 Part53
http://mevius.2ch.net/test/read.cgi/tech/1494683284/
- 954 :デフォルトの名無しさん:2017/12/19(火) 01:50:12.54 ID:zg2/LW0i.net
- 同じタブで開くにはどうしたら良いのでしょうか?
実行すると、同じウィンドウで開いてしまいます。
https://ideone.com/Rb3ecO
- 955 :デフォルトの名無しさん:2017/12/19(火) 06:46:50.41 ID:eFD5MKDs.net
- VB.NETかC#にすればいいのに
- 956 :デフォルトの名無しさん:2017/12/19(火) 07:05:30.29 ID:YlLsk3YD.net
- Pythonでサーバー系の勉強をしたいんだけれども分かりやすい書籍知りませんか?
- 957 :デフォルトの名無しさん:2017/12/19(火) 07:59:13.13 ID:LIEbtk9I.net
- プロフェッショナルのやつ
- 958 :デフォルトの名無しさん:2017/12/19(火) 08:36:34.83 ID:lTMrJ03e.net
- >>955
俺もそう思ったけど、イミディエートウィンドでちょっと試しに実行したりするのはスクリプト言語の方がいいのかも
スクリプト言語の中ではPythonは悪い選択じゃない
- 959 :デフォルトの名無しさん:2017/12/19(火) 09:02:13.56 ID:I9cB5PBv.net
- >>954
webbrowserのopen_new, open_new_tabは可能であれば新しいウィンドウ、新しいタブで開くという仕様
動作が同じということは不可能ということなのでsubprocessで直接ブラウザの実行ファイルを叩きましょう
chromeなら(参考: ttps://blogs.yahoo.co.jp/kerupani/15783349.html)
>>> import subprocess
>>> open_new = [r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe', '--new-window']
>>> open_new_tab =[r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe']
>>> url='https://ideone.com/Rb3ecO'
>>>
>>> subprocess.call(open_new + [url])
0
>>> subprocess.call(open_new_tab + [url])
0
>>>
- 960 :デフォルトの名無しさん:2017/12/19(火) 11:38:37.78 ID:I9cB5PBv.net
- >>906
>>> l = [['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
>>> for k,v in {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}.items(): print(k, ''.join(v))
id0 python
id1 aiueo
>>>
リストlをidの数ぶんなめるからdefaultdict版よりも遅いのかな?と心配でしたが爆速でした
内包表記爆速でした(https://ideone.com/CQmM0C)
- 961 :デフォルトの名無しさん:2017/12/19(火) 12:24:14.54 ID:R9z7S8/c.net
- >>957
ありがとうございます
Pythonプロフェッショナルプログラミング-第2版-株式会社ビープラウド
ってやつでしょうか
- 962 :デフォルトの名無しさん:2017/12/19(火) 13:40:41.77 ID:I9cB5PBv.net
- >>960
もうちょっと速度評価してみた結果、idの種類が5で内包表記版とdefaultdict(list)版が同じくらいの処理速度になる
idの種類が増える毎にdefaultdict(list)版の方が速くなる、defaultdictの方が優れているね、分かりやすいし
Ruby版はどのくらい速いのかな?
>>> l=[[f'id{i}', 'hoge'] for i in range(5)]*10000
>>> with get_time():
d = {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}
0.014081239700317383
>>> with get_time():
d = defaultdict(list)
for k,v in l: d[k].append(v)
0.014064788818359375
>>>
>>> l=[[f'id{i}', 'hoge'] for i in range(50)]*10000
>>> with get_time():
d = {id:[i[1] for i in l if i[0]==id] for id in dict(l).keys()}
1.0660841464996338
>>> with get_time():
d = defaultdict(list)
for k,v in l: d[k].append(v)
0.14391684532165527
>>>
- 963 :デフォルトの名無しさん:2017/12/19(火) 22:15:34.47 ID:DaMOUzIl.net
- >>898これなんてどうかな?
ttp://www.amazon.co.jp/gp/product/B074CZNCM9/
- 964 :952:2017/12/20(水) 02:35:33.39 ID:TssXo4IA.net
- >>959
遅れながら、ありがとうございます
- 965 :デフォルトの名無しさん:2017/12/20(水) 12:35:28.42 ID:TssXo4IA.net
- こういう処理は一行で書けますか?
for i in range(2):
__if i==j:
____print('end')
__for j in range(2):
____print(i,j,'',end='')
- 966 :デフォルトの名無しさん:2017/12/20(水) 13:02:27.07 ID:oZWzOzRe.net
- 2行目jが未定義でエラーになると思う
- 967 :デフォルトの名無しさん:2017/12/20(水) 13:03:05.99 ID:NDzik5IP.net
- 造作もなきこと!Pythonのテクニックを使えば多重ループを1行で書くことなど造作もなきこと!
exec("""j=None\nfor i in range(2):\n if i==j:\n print('end')\n for j in range(2):\n print(i,j,'',end='')""")
- 968 :デフォルトの名無しさん:2017/12/20(水) 13:05:58.39 ID:TssXo4IA.net
- jは0と言う事でお願いします
- 969 :デフォルトの名無しさん:2017/12/20(水) 13:15:05.63 ID:NDzik5IP.net
- 空白が潰れちゃったよから\tに変更
exec("""j=0\nfor i in range(2):\n\tif i==j:\n\t\tprint('end')\n\tfor j in range(2):\n\t\tprint(i,j,'',end='')""")
- 970 :デフォルトの名無しさん:2017/12/20(水) 14:07:50.11 ID:TssXo4IA.net
- >>967
>>969
ありがとうございます。
exec("a = 5; b = 7; print(a+b)")
と言う既述方法は知ってましたが、
制御分などの盛り込み方が不明だったので助かりました。
これで、制御分の横にコメント文を
スペースで埋めて揃える作業をしなく良くなりました。
- 971 :デフォルトの名無しさん:2017/12/20(水) 19:46:38.16 ID:SIAJ3GJG.net
- インクリメントできないのがよくわからん
- 972 :デフォルトの名無しさん:2017/12/21(木) 00:07:07.98 ID:d67IHLei.net
- グラフ描画についてbokehとplotlyが気になるのですが,使っている方いらっしゃいますか?
- 973 :デフォルトの名無しさん:2017/12/21(木) 00:17:01.47 ID:0vv650Fk.net
- リスト内の要素を部分一致で検索したいのですが、どう書けば良いのでしょうか?
完全一致ならば上手くいくのですが…
- 974 :デフォルトの名無しさん:2017/12/21(木) 00:33:32.51 ID:1OazE8Sd.net
- # コメント コメント
[[l.append(i) for i in range(1,6)] for j in range(int(input()))]
exec("""print(l)\nfor i in l:\n\tif i==2:\n\t continue\n\tr.append(i)\nprint(i,'',end='')""")
exec("""def Sample0(x):\n\treturn x**2\nfor i in r:\n\tprint(Sample0(i))""")
- 975 :雪風,遊園地 :2017/12/21(木) 00:52:50.09 ID:1OazE8Sd.net
- >>973
import re
l=['I']
r=['ABCDEFGHIJKLMNOPQRSTUVWXYZ']
#[print (match.group()) for match in re.finditer(l[0],r[0])]
for match in re.finditer(l[0],r[0]):
____print (match.group())
ゆっきーは、頭が可笑しいので他の人に聞いて下さい。
- 976 :デフォルトの名無しさん:2017/12/21(木) 00:54:34.31 ID:1OazE8Sd.net
- 部分一致は正規表現しか思いつかない。
- 977 :デフォルトの名無しさん:2017/12/21(木) 00:54:55.56 ID:sOyGlBrQ.net
- >973
リスト内の要素を部分一致で検索する、というのが曖昧な表現なので、具体例で説明して欲しい
["abc", "bcd", "xyz"]
があった時に、
"bc"を検索して、
["abc", "bcd"]
を返すような関数を作りたいの?
[1, 2, 3]と[2, 3, 4]と[9, 5, 19, 7, 9] があった時に、
[0, 1, 2, 3] を検索して、
[1, 2, 3] と[2, 3, 4] を返すような関数を作りたいの?
- 978 :雪風,遊園地:2017/12/21(木) 01:06:20.96 ID:1OazE8Sd.net
- >>977
個人的に両方 欲しいです。
- 979 :雪風,遊園地:2017/12/21(木) 02:43:34.99 ID:1OazE8Sd.net
- どうして、誰も作ってくれないのか?
https://ideone.com/VOrwu8
- 980 :デフォルトの名無しさん:2017/12/21(木) 05:16:27.79 ID:tu5xSbQ7.net
- >>979
結構やってること滅茶苦茶だねw
- 981 :デフォルトの名無しさん:2017/12/21(木) 08:50:58.63 ID:NvhGrRKb.net
- >>973, >>978
>>> list_1 = ["abc", "bcd", "xyz"]
>>> list_2 = [[1,2,3], [2,3,4], [9,5,19,7,9]]
>>>
>>> import re
>>> [i for i in list_1 if re.search(r'bc', i)]
['abc', 'bcd']
>>>
>>> [i for i in list_2 if all(j in [0,1,2,3,4] for j in i)]
[[1, 2, 3], [2, 3, 4]]
>>>
- 982 :デフォルトの名無しさん:2017/12/21(木) 08:52:28.59 ID:NvhGrRKb.net
- >>> [i for i in list_2 if any(j in [0,1,2,3] for j in i)]
[[1, 2, 3], [2, 3, 4]]
>>>
- 983 :雪風,遊園地:2017/12/21(木) 10:03:44.67 ID:1OazE8Sd.net
- >>981
>>982
こっちの方がシンプルで良いですね。
ありがとうです ( ゚д゚ )クワッ!!
- 984 :デフォルトの名無しさん:2017/12/21(木) 12:40:18.22 ID:MXajmGMH.net
- うんこしたいよー
もう漏れそうだ
- 985 :デフォルトの名無しさん:2017/12/21(木) 21:48:50.35 ID:WjYU61tx.net
- Pythonってプログラミング言語として難しいほう?
- 986 :デフォルトの名無しさん:2017/12/21(木) 21:52:19.91 ID:788cmMG6.net
- とても簡単なほう
- 987 :デフォルトの名無しさん:2017/12/21(木) 21:53:39.57 ID:MavrGicq.net
- 簡単というか平易
- 988 :デフォルトの名無しさん:2017/12/21(木) 22:08:16.93 ID:812iswiX.net
- 平易というか簡単
- 989 :デフォルトの名無しさん:2017/12/22(金) 00:45:25.25 ID:7leJrkq3.net
- 言語だけでも自分の3割り増しの実力のプログラムが作れる感じのノリが好き
- 990 :デフォルトの名無しさん:2017/12/22(金) 04:10:33.70 ID:pVzUn8R6.net
- 動作
トランプデッキから5枚引いて、引いたカードをデッキから削除
手持ちのカードのマークをカウントする
もっと、スタイリッシュに書き直してくれる人居ませんか?
https://ideone.com/0bukfh
- 991 :デフォルトの名無しさん:2017/12/22(金) 05:39:58.07 ID:RZt5N+k9.net
- スペードの1〜13・ハートの1〜13・クローバーの1〜13・ダイアの1〜13の順で、
1〜52のカードID をつけているから、
カードID を13で割って、その商と余りで、スートと数がわかる
- 992 :デフォルトの名無しさん:2017/12/22(金) 10:33:03.12 ID:RZt5N+k9.net
- def suit_and_number (card_id)
suit = card_id / 13
num = card_id % 13
if num == 0 then
num = 13
suit -= 1
end
return suit, num
end
ary = (1..52).to_a.shuffle!
(0..10).each do |i|
suit, num = suit_and_number (ary[i])
puts "id : #{ary[i]}, suit : #{suit}, num : #{num}"
end
Ruby でやった
https://paiza.io/projects/sJs_Ge5be9uq44J6SHoJdw
結果を並び替えたもの
id : 1, suit : 0, num : 1
id : 14, suit : 1, num : 1
id : 27, suit : 2, num : 1
id : 40, suit : 3, num : 1
id : 13, suit : 0, num : 13
id : 26, suit : 1, num : 13
id : 39, suit : 2, num : 13
id : 52, suit : 3, num : 13
- 993 :デフォルトの名無しさん:2017/12/22(金) 11:00:21.87 ID:2CqGXpCv.net
- >>992
わざわざ通し番号から数字やスートを算出している合理性がない
テクニカルな雰囲気な方法を思い付いて嬉しいのはわかるが、効率が悪く分かりにくいだけだから素直に別々に分けなさい
- 994 :デフォルトの名無しさん:2017/12/22(金) 11:08:48.16 ID:u2VnRzIy.net
- >>998
イッツ スタイリッシュ
https://ideone.com/8wE3TR
- 995 :デフォルトの名無しさん:2017/12/22(金) 11:09:46.97 ID:u2VnRzIy.net
- >>990
イッツ スタイリッシュ
https://ideone.com/8wE3TR
- 996 :990:2017/12/22(金) 12:03:54.91 ID:RZt5N+k9.net
- >>993
カードクラスを作って、インスタンス毎に、カードの画像を持たせたりしても良いけど、
インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
ID から簡単に計算できるのだから、それらを計算値で返しても良いのじゃないか?
- 997 :デフォルトの名無しさん:2017/12/22(金) 12:09:53.68 ID:u7gWVCbQ.net
- 普通は「わかりやすい」が正義だな
- 998 :デフォルトの名無しさん:2017/12/22(金) 12:42:42.17 ID:cZv5wUGB.net
- 画像はflyweightになるだろ。
いちいちコピーすんのか?
- 999 :デフォルトの名無しさん:2017/12/22(金) 12:46:03.11 ID:sp7ymsVp.net
- >>996
> インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
おじいさま今時はそう言うことを気にしなくてもよくなったのよ
- 1000 :デフォルトの名無しさん:2017/12/22(金) 13:33:46.30 ID:u2VnRzIy.net
- ふぅー 落ち着いたか、、大興奮・・あれ? ワイのもイジれや、ワイのもイジれや
- 1001 :988:2017/12/22(金) 14:02:56.88 ID:pVzUn8R6.net
- テラテイルでも聞いて来ましたが、色々有るようです。
https://ideone.com/Mg9oG7
次スレは>>1000が建てて下さい。
- 1002 :デフォルトの名無しさん:2017/12/22(金) 14:21:38.28 ID:8mUBEZUB.net
- >>1001
何故たてぬ
次スレ
http://mevius.5ch.net/test/read.cgi/tech/1513919747/
- 1003 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1003
232 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★