Pythonのお勉強 Part54 at TECH
[2ch|▼Menu]
[前50を表示]
950:デフォルトの名無しさん
17/12/17 19:11:04.86 VH1yLn0n.net
>>873
csv_normal.pyがバージョン2.7.7にバージョンアップしたよ(URLリンク(ux.getuploader.com)
もう追加機能も思いつかないので、たぶんこれがファイナルバージョンとなるよ
 Version: 2.7.7
  ・使用例の説明を改善
  ・冗長性の改善(>>887のご指摘を受けて)
     ・冗長な関数名、メソッド名、引数名などを簡潔に改名
     ・ヘッダー情報を更に便利に簡単にアクセスできるように改善
  ・メソッド追加
     ・shapeメソッド - 行列のサイズを表示(pandasからパクった)
     ・print2メソッド - printメソッドよりさらに見やすい(罫線で囲むから)
     ・inquire_field_valueメソッド(>>906もこれで解決)
     などなど

あとがき:
 csv_normalは配列を配列のまま扱うことでPythonの強力な配列操作をそのまま利用でき
 簡潔で直感的、習得も簡単ですぐに使用できる優れたモジュールとなりました
 特にデータを罫線で囲んで表示する機能は秀逸で他に類をみない可読性を提供します
 これはpandas越えたわ・・ 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)


951:デフォルトの名無しさん
17/12/17 19:17:52.67 XxtCNzg/.net
test
なんか専ブラの動きが変だな
また仕様かわったか

952:デフォルトの名無しさん
17/12/18 10:05:45.20 vfjnbjyE.net
ライブラリをインストールしてチュートリアルのプログラムを一通り動かすまでに結構時間を消費しちゃう
バージョンによってチュートリアルを結構改変しないと動かないのが多いし
魅力的なライブラリが多いけどそこまで直ぐに使えるようにはならないと思いましたまる

953:デフォルトの名無しさん
17/12/18 10:44:13.32 qOhnl7Wk.net
バージョン変わる毎にメソッド名とかコロコロ変えすぎだよなRubyかよ

954:デフォルトの名無しさん
17/12/18 12:12:04.90 AybSMTWc.net
改変したチュートリアルをアップでアフリエイトがはかどるな

955:デフォルトの名無しさん
17/12/18 12:30:50.45 MRRIpNjB.net
>>911
どうせ書くなら、組み込みメソッドの Enumerable#inject と Hash#merge を
使った関数型プログラミングのスタイルが Ruby らしいのではないかと思われ
URLリンク(ideone.com)
for文のループをゴリゴリ回す手続き型プログラミングのスタイル(>>913)とは対照的だね

956:デフォルトの名無しさん
17/12/18 13:49:20.75 qOhnl7Wk.net
l=[['id0', 'pyt'], ['id0', 'hon'], ['id1', 'aiu'], ['id1', 'eo']]
from itertools import groupby
for r in [(k, ''.join([item[1] for item in i])) for k,i in groupby(l, key=lambda x:x[0])]: print(*r)
はい、オレが優勝

957:デフォルトの名無しさん
17/12/18 13:54:52.52 kA+4TLLO.net
operator.itemgetterくらい使え

958:デフォルトの名無しさん
17/12/18 14:15:11.80 qOhnl7Wk.net
┐(´- ` )┌ ハッ、イテレータが欲しいのだよ、これだからググっただけの奴はw

959:デフォルトの名無しさん
17/12/18 14:23:14.65 kA+4TLLO.net
それはひょっとしてギャグで言ってるのか!?

960:デフォルトの名無しさん
17/12/18 14:32:10.96 qOhnl7Wk.net
あ、これ何も考えてない奴の常套句だわ 回答書けないならレス汚さないでくれる?

961:デフォルトの名無しさん
17/12/18 14:50:33.65 kA+4TLLO.net
え?真面目に言ってるの?どのみちイテレータ返るでしょ、ジェネレータを言ってるにしてもジェネレータ式はないし
リストが欲しいというならギリギリ分からなくもないが、それでもコールバックを与えるgroupbyには関係ないよね

962:デフォルトの名無しさん
17/12/18 15:01:14.41 qOhnl7Wk.net
ブヒョヒョヒョヒョッw operator.itemgetter使った例書いてみろよバーカ
オレのより良くなるわけねーんだよバーカ 知ったかバカがww

963:デフォルトの名無しさん
17/12/18 15:03:03.28 ucgqtJiU.net
流れぶった切って初心者の質問3つめすまん
pipで暗号化だかなんだかのパッケージをインストールするのに
pip install pycrypto って入力したんだがエラーになった
赤文字が言うにはimport setuptools,tokenize;_
file_ってことらしい(たぶん)んだけどどうすればいい?パソコン自体にも明るくないんで初歩的な質問だったらすまん

964:デフォルトの名無しさん
17/12/18 15:04:12.98 ucgqtJiU.net
Anacondaってのはインストールした
たぶん出来てると思う

965:デフォルトの名無しさん
17/12/18 15:15:46.03 iOib+Cu3.net
>>913
>>935
そのまま、ソートできたりしますか?

966:デフォルトの名無しさん
17/12/18 15:29:33.59 qOhnl7Wk.net
マジで君の葛藤
 そんなに言うなら書いてやらぁ、import operator ・・はっ!?
 あいつのより一行増えちまうぅぅ・・operatorをimportするだけで負けちまうぅぅ
 どーすればいいんだあぁ  マジで負けちまう、マジでマジでぇぇええ

967:デフォルトの名無しさん
17/12/18 19:35:06.39 uz+0MMm5.net
Scipy lecture notes は難しいなあ

968:デフォルトの名無しさん
17/12/18 20:23:19.81 nEpzfrhn.net
>944
911 は、
lst = sorted(dic.items())
でキーの昇順のリストlstを作ることができるよ。

969:デフォルトの名無しさん
17/12/18 20:56:07.22 ZPQd2a6K.net
>>912英語読める人って憧れるわぁ
気が向けば、気力が続けば読破してみる♪

970:デフォルトの名無しさん
17/12/18 21:31:04.85 80YjRLEJ.net
Excelに「Python」搭載検討 Microsoftがアンケート実施中
(ITmedia NEWS)
[続きを読む]

971:デフォルトの名無しさん
17/12/18 21:31:19.95 iOib+Cu3.net
>>947
なるほど。
どうもです。

972:デフォルトの名無しさん
17/12/18 22:41:16.62 HvuqWaT5.net
>>949
matplotlibが使えるってことですかね。

973:デフォルトの名無しさん
17/12/18 22:50:47.06 ORJoreTk.net
vbaで充分です

974:デフォルトの名無しさん
17/12/19 00:50:47.14 DaMOUzIl.net
Microsoftの事だから、独自の実装てんこ盛りとかしそう

975:デフォルトの名無しさん
17/12/19 01:50:12.54 zg2/LW0i.net
同じタブで開くにはどうしたら良いのでしょうか?
実行すると、同じウィンドウで開いてしまいます。
URLリンク(ideone.com)

976:デフォルトの名無しさん
17/12/19 06:46:50.41 eFD5MKDs.net
VB.NETかC#にすればいいのに

977:デフォルトの名無しさん
17/12/19 07:05:30.29 YlLsk3YD.net
Pythonでサーバー系の勉強をしたいんだけれども分かりやすい書籍知りませんか?

978:デフォルトの名無しさん
17/12/19 07:59:13.13 LIEbtk9I.net
プロフェッショナルのやつ

979:デフォルトの名無しさん
17/12/19 08:36:34.83 lTMrJ03e.net
>>955
俺もそう思ったけど、イミディエートウィンドでちょっと試しに実行したりするのはスクリプト言語の方がいいのかも
スクリプト言語の中ではPythonは悪い選択じゃない

980:デフォルトの名無しさん
17/12/19 09:02:13.56 I9cB5PBv.net
>>954
webbrowserのopen_new, open_new_tabは可能であれば新しいウィンドウ、新しいタブで開くという仕様
動作が同じということは不可能ということなのでsubprocessで直接ブラウザの実行ファイルを叩きましょう
chromeなら(参考: URLリンク(blogs.yahoo.co.jp))
>>> 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='URLリンク(ideone.com)'
>>>
>>> subprocess.call(open_new + [url])
0
>>> subprocess.call(open_new_tab + [url])
0
>>>

981:デフォルトの名無しさん
17/12/19 11:38:37.78 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版よりも遅いのかな?と心配でしたが爆速でした
内包表記爆速でした(URLリンク(ideone.com)

982:デフォルトの名無しさん
17/12/19 12:24:14.54 R9z7S8/c.net
>>957
ありがとうございます
Pythonプロフェッショナルプログラミング-第2版-株式会社ビープラウド
ってやつでしょうか

983:デフォルトの名無しさん
17/12/19 13:40:41.77 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:デフォルトの名無しさん
17/12/19 22:15:34.47 DaMOUzIl.net
>>898これなんてどうかな?
URLリンク(www.amazon.co.jp)

985:952
17/12/20 02:35:33.39 TssXo4IA.net
>>959
遅れながら、ありがとうございます

986:デフォルトの名無しさん
17/12/20 12:35:28.42 TssXo4IA.net
こういう処理は一行で書けますか?
for i in range(2):
__if i==j:
____print('end')
__for j in range(2):
____print(i,j,'',end='')

987:デフォルトの名無しさん
17/12/20 13:02:27.07 oZWzOzRe.net
2行目jが未定義でエラーになると思う

988:デフォルトの名無しさん
17/12/20 13:03:05.99 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:デフォルトの名無しさん
17/12/20 13:05:58.39 TssXo4IA.net
jは0と言う事でお願いします

990:デフォルトの名無しさん
17/12/20 13:15:05.63 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:デフォルトの名無しさん
17/12/20 14:07:50.11 TssXo4IA.net
>>967
>>969
ありがとうございます。
exec("a = 5; b = 7; print(a+b)")
と言う既述方法は知ってましたが、
 制御分などの盛り込み方が不明だったので助かりました。
これで、制御分の横にコメント文を
 スペースで埋めて揃える作業をしなく良くなりました。

992:デフォルトの名無しさん
17/12/20 19:46:38.16 SIAJ3GJG.net
インクリメントできないのがよくわからん

993:デフォルトの名無しさん
17/12/21 00:07:07.98 d67IHLei.net
グラフ描画についてbokehとplotlyが気になるのですが,使っている方いらっしゃいますか?

994:デフォルトの名無しさん
17/12/21 00:17:01.47 0vv650Fk.net
リスト内の要素を部分一致で検索したいのですが、どう書けば良いのでしょうか?
完全一致ならば上手くいくのですが…

995:デフォルトの名無しさん
17/12/21 00:33:32.51 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:雪風,遊園地
17/12/21 00:52:50.09 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:デフォルトの名無しさん
17/12/21 00:54:34.31 1OazE8Sd.net
部分一致は正規表現しか思いつかない。

998:デフォルトの名無しさん
17/12/21 00:54:55.56 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:雪風,遊園地
17/12/21 01:06:20.96 1OazE8Sd.net
>>977
個人的に両方 欲しいです。

1000:雪風,遊園地
17/12/21 02:43:34.99 1OazE8Sd.net
どうして、誰も作ってくれないのか?
 URLリンク(ideone.com)

1001:デフォルトの名無しさん
17/12/21 05:16:27.79 tu5xSbQ7.net
>>979
結構やってること滅茶苦茶だねw

1002:デフォルトの名無しさん
17/12/21 08:50:58.63 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:デフォルトの名無しさん
17/12/21 08:52:28.59 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:雪風,遊園地
17/12/21 10:03:44.67 1OazE8Sd.net
>>981
>>982
こっちの方がシンプルで良いですね。
ありがとうです ( ゚д゚ )クワッ!!

1005:デフォルトの名無しさん
17/12/21 12:40:18.22 MXajmGMH.net
うんこしたいよー
もう漏れそうだ

1006:デフォルトの名無しさん
17/12/21 21:48:50.35 WjYU61tx.net
Pythonってプログラミング言語として難しいほう?

1007:デフォルトの名無しさん
17/12/21 21:52:19.91 788cmMG6.net
とても簡単なほう

1008:デフォルトの名無しさん
17/12/21 21:53:39.57 MavrGicq.net
簡単というか平易

1009:デフォルトの名無しさん
17/12/21 22:08:16.93 812iswiX.net
平易というか簡単

1010:デフォルトの名無しさん
17/12/22 00:45:25.25 7leJrkq3.net
言語だけでも自分の3割り増しの実力のプログラムが作れる感じのノリが好き

1011:デフォルトの名無しさん
17/12/22 04:10:33.70 pVzUn8R6.net
動作
トランプデッキから5枚引いて、引いたカードをデッキから削除
手持ちのカードのマークをカウントする

もっと、スタイリッシュに書き直してくれる人居ませんか?
 URLリンク(ideone.com)

1012:デフォルトの名無しさん
17/12/22 05:39:58.07 RZt5N+k9.net
スペードの1〜13・ハートの1〜13・クローバーの1〜13・ダイアの1〜13の順で、
1〜52のカードID をつけているから、
カードID を13で割って、その商と余りで、スートと数がわかる

1013:デフォルトの名無しさん
17/12/22 10:33:03.12 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 でやった
URLリンク(paiza.io)
結果を並び替えたもの
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:デフォルトの名無しさん
17/12/22 11:00:21.87 2CqGXpCv.net
>>992
わざわざ通し番号から数字やスートを算出している合理性がない
テクニカルな雰囲気な方法を思い付いて嬉しいのはわかるが、効率が悪く分かりにくいだけだから素直に別々に分けなさい

1015:デフォルトの名無しさん
17/12/22 11:08:48.16 u2VnRzIy.net
>>998
イッツ スタイリッシュ
URLリンク(ideone.com)

1016:デフォルトの名無しさん
17/12/22 11:09:46.97 u2VnRzIy.net
>>990
イッツ スタイリッシュ
URLリンク(ideone.com)

1017:990
17/12/22 12:03:54.91 RZt5N+k9.net
>>993
カードクラスを作って、インスタンス毎に、カードの画像を持たせたりしても良いけど、
インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
ID から簡単に計算できるのだから、それらを計算値で返しても良いのじゃないか?

1018:デフォルトの名無しさん
17/12/22 12:09:53.68 u7gWVCbQ.net
普通は「わかりやすい」が正義だな

1019:デフォルトの名無しさん
17/12/22 12:42:42.17 cZv5wUGB.net
画像はflyweightになるだろ。
いちいちコピーすんのか?

1020:デフォルトの名無しさん
17/12/22 12:46:03.11 sp7ymsVp.net
>>996
> インスタンス毎に、スート・数を持たせるのは、メモリの無駄だろ
おじいさま今時はそう言うことを気にしなくてもよくなったのよ

1021:デフォルトの名無しさん
17/12/22 13:33:46.30 u2VnRzIy.net
ふぅー 落ち着いたか、、大興奮・・あれ? ワイのもイジれや、ワイのもイジれや

1022:988
17/12/22 14:02:56.88 pVzUn8R6.net
テラテイルでも聞いて来ましたが、色々有るようです。
 URLリンク(ideone.com)
次スレは>>1000が建てて下さい。

1023:デフォルトの名無しさん
17/12/22 14:21:38.28 8mUBEZUB.net
>>1001
何故たてぬ
次スレ
スレリンク(tech板)

1024:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 111日 21時間 36分 51秒

1025:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

2196日前に更新/231 KB
担当:undef