1 名前:デフォルトの名無しさん [2017/09/01(金) 16:44:47.30 ID:igIE9hK/.net] Pythonオフィシャルサイト www.python.org/ テンプレ等は2以降で ■前スレ Pythonのお勉強 Part53 mevius.2ch.net/test/read.cgi/tech/1494683284/
977 名前:デフォルトの名無しさん [2017/12/19(火) 07:05:30.29 ID:YlLsk3YD.net] Pythonでサーバー系の勉強をしたいんだけれども分かりやすい書籍知りませんか?
978 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 07:59:13.13 ID:LIEbtk9I.net] プロフェッショナルのやつ
979 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 08:36:34.83 ID:lTMrJ03e.net] >>955 俺もそう思ったけど、イミディエートウィンドでちょっと試しに実行したりするのはスクリプト言語の方がいいのかも スクリプト言語の中ではPythonは悪い選択じゃない
980 名前:デフォルトの名無しさん mailto:sage [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 >>>
981 名前:デフォルトの名無しさん mailto:sage [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)
982 名前:デフォルトの名無しさん [2017/12/19(火) 12:24:14.54 ID:R9z7S8/c.net] >>957 ありがとうございます Pythonプロフェッショナルプログラミング-第2版-株式会社ビープラウド ってやつでしょうか
983 名前:デフォルトの名無しさん mailto:sage [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 >>>
984 名前:デフォルトの名無しさん mailto:sage [2017/12/19(火) 22:15:34.47 ID:DaMOUzIl.net] >>898 これなんてどうかな? ttp://www.amazon.co.jp/gp/product/B074CZNCM9/
985 名前:952 mailto:sage [2017/12/20(水) 02:35:33.39 ID:TssXo4IA.net] >>959 遅れながら、ありがとうございます
986 名前:デフォルトの名無しさん [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='')
987 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 13:02:27.07 ID:oZWzOzRe.net] 2行目jが未定義でエラーになると思う
988 名前:デフォルトの名無しさん mailto:sage [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='')""")
989 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 13:05:58.39 ID:TssXo4IA.net] jは0と言う事でお願いします
990 名前:デフォルトの名無しさん mailto:sage [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='')""")
991 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 14:07:50.11 ID:TssXo4IA.net] >>967 >>969 ありがとうございます。 exec("a = 5; b = 7; print(a+b)") と言う既述方法は知ってましたが、 制御分などの盛り込み方が不明だったので助かりました。 これで、制御分の横にコメント文を スペースで埋めて揃える作業をしなく良くなりました。
992 名前:デフォルトの名無しさん mailto:sage [2017/12/20(水) 19:46:38.16 ID:SIAJ3GJG.net] インクリメントできないのがよくわからん
993 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 00:07:07.98 ID:d67IHLei.net] グラフ描画についてbokehとplotlyが気になるのですが,使っている方いらっしゃいますか?
994 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 00:17:01.47 ID:0vv650Fk.net] リスト内の要素を部分一致で検索したいのですが、どう書けば良いのでしょうか? 完全一致ならば上手くいくのですが…
995 名前:デフォルトの名無しさん mailto:sage [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))""")
996 名前:雪風,遊園地 mailto:sage [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()) ゆっきーは、頭が可笑しいので他の人に聞いて下さい。
997 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 00:54:34.31 ID:1OazE8Sd.net] 部分一致は正規表現しか思いつかない。
998 名前:デフォルトの名無しさん mailto:sage [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] を返すような関数を作りたいの?
999 名前:雪風,遊園地 mailto:sage [2017/12/21(木) 01:06:20.96 ID:1OazE8Sd.net] >>977 個人的に両方 欲しいです。
1000 名前:雪風,遊園地 mailto:sage [2017/12/21(木) 02:43:34.99 ID:1OazE8Sd.net] どうして、誰も作ってくれないのか? https://ideone.com/VOrwu8
1001 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 05:16:27.79 ID:tu5xSbQ7.net] >>979 結構やってること滅茶苦茶だねw
1002 名前:デフォルトの名無しさん mailto:sage [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]] >>>
1003 名前:デフォルトの名無しさん mailto:sage [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]] >>>
1004 名前:雪風,遊園地 mailto:sage [2017/12/21(木) 10:03:44.67 ID:1OazE8Sd.net] >>981 >>982 こっちの方がシンプルで良いですね。 ありがとうです ( ゚д゚ )クワッ!!
1005 名前:デフォルトの名無しさん [2017/12/21(木) 12:40:18.22 ID:MXajmGMH.net] うんこしたいよー もう漏れそうだ
1006 名前:デフォルトの名無しさん [2017/12/21(木) 21:48:50.35 ID:WjYU61tx.net] Pythonってプログラミング言語として難しいほう?
1007 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 21:52:19.91 ID:788cmMG6.net] とても簡単なほう
1008 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 21:53:39.57 ID:MavrGicq.net] 簡単というか平易
1009 名前:デフォルトの名無しさん mailto:sage [2017/12/21(木) 22:08:16.93 ID:812iswiX.net] 平易というか簡単
1010 名前:デフォルトの名無しさん [2017/12/22(金) 00:45:25.25 ID:7leJrkq3.net] 言語だけでも自分の3割り増しの実力のプログラムが作れる感じのノリが好き
1011 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 04:10:33.70 ID:pVzUn8R6.net] 動作 トランプデッキから5枚引いて、引いたカードをデッキから削除 手持ちのカードのマークをカウントする もっと、スタイリッシュに書き直してくれる人居ませんか? https://ideone.com/0bukfh
1012 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 05:39:58.07 ID:RZt5N+k9.net] スペードの1〜13・ハートの1〜13・クローバーの1〜13・ダイアの1〜13の順で、 1〜52のカードID をつけているから、 カードID を13で割って、その商と余りで、スートと数がわかる
1013 名前:デフォルトの名無しさん mailto:sage [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
1014 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 11:00:21.87 ID:2CqGXpCv.net] >>992 わざわざ通し番号から数字やスートを算出している合理性がない テクニカルな雰囲気な方法を思い付いて嬉しいのはわかるが、効率が悪く分かりにくいだけだから素直に別々に分けなさい
1015 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 11:08:48.16 ID:u2VnRzIy.net] >>998 イッツ スタイリッシュ https://ideone.com/8wE3TR
1016 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 11:09:46.97 ID:u2VnRzIy.net] >>990 イッツ スタイリッシュ https://ideone.com/8wE3TR
1017 名前:990 mailto:sage [2017/12/22(金) 12:03:54.91 ID:RZt5N+k9.net] >>993 カードクラスを作って、インスタンス毎に、カードの画像を持たせたりしても良いけど、 インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ ID から簡単に計算できるのだから、それらを計算値で返しても良いのじゃないか?
1018 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 12:09:53.68 ID:u7gWVCbQ.net] 普通は「わかりやすい」が正義だな
1019 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 12:42:42.17 ID:cZv5wUGB.net] 画像はflyweightになるだろ。 いちいちコピーすんのか?
1020 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 12:46:03.11 ID:sp7ymsVp.net] >>996 > インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ おじいさま今時はそう言うことを気にしなくてもよくなったのよ
1021 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 13:33:46.30 ID:u2VnRzIy.net] ふぅー 落ち着いたか、、大興奮・・あれ? ワイのもイジれや、ワイのもイジれや
1022 名前:988 mailto:sage [2017/12/22(金) 14:02:56.88 ID:pVzUn8R6.net] テラテイルでも聞いて来ましたが、色々有るようです。 https://ideone.com/Mg9oG7 次スレは>>1000 が建てて下さい。
1023 名前:デフォルトの名無しさん mailto:sage [2017/12/22(金) 14:21:38.28 ID:8mUBEZUB.net] >>1001 何故たてぬ 次スレ mevius.5ch.net/test/read.cgi/tech/1513919747/
1024 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 111日 21時間 36分 51秒
1025 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています