くだすれPython(超初心者用) その45【Ruby禁止】

レス数が950を超えています。1000を超えると書き込みができなくなります。
2019/10/16(水) 10:17:12.96ID:dCHq3Ix4
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。
へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

◆エラーを解決したい場合は、表示されてるエラー全文(勝手に省略禁止)と
  実行環境(Pythonのバージョン・OS名・IDEの種類とバージョン)をシッカリ書くこと。

◇Python公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その44【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1563969768/
2019/12/22(日) 18:51:55.19ID:Ens8Pa2w
>>850
そのへんは考えてるのですが、質問の仕方が良くなかったですね。

***実験条件データ***
年齢:
性別:
特性A:
特性B:


***配列データ***
時間 回数 色 〜
0.11 3 R 〜
0.20 1 B 〜

みたいなデータが100件ぐらい1ファイルに記述したとして、
をpandasで配列データだけ切り出してくるってかんたんにできるものでしょうか?
2019/12/22(日) 19:03:33.08ID:4GpMlcpo
>>849
特別な要件がない限り
> 100件のデータを全て一つのファイルに保存。
しかないと思うが
2019/12/22(日) 19:15:06.28ID:OE5DN1cz
pygameって3?が頓挫して別のに開発リソースまわってるんじゃなかったっけ?

あとcsvはデータ形式によるから具体的なカタチがわからないとなんとも…
2019/12/22(日) 19:59:30.18ID:u+b66RrE
>>851
まず、データだけを抽出する、コンバーターを作る!

そのためには、まず、データだけを抽出しやすいように、
よく考えて作っておかなければならない

JSON とか。
他には、XML, YAML もある

データとデータ以外の切れ目が、分かるようになってれば良いけど

まあ、ファイルを分割している方が簡単で、
後でファイルが増えた時に、融通が利く
855デフォルトの名無しさん
垢版 |
2019/12/22(日) 20:28:35.39ID:MAO/zmGQ
>>848
ゲームはUnity、データ処理はPythonってのがいいよ
どうせゲームの記録は一旦保存して、後で処理するのだから、
ゲームを作るのに得意な言語、データの処理に得意な言語で使い分けたほうが良い。
一つにまとめる必要があるのは、アプリケーションパッケージとして売ったり誰かに納品したりする必要があるときだけだと思う。
856デフォルトの名無しさん
垢版 |
2019/12/22(日) 20:33:44.52ID:MAO/zmGQ
>>849 >>851
見逃したけど、
100条件なら100ファイルの方が取り扱いが簡単だよ。1ファイルにするメリットはないと思う。
1000を超えてくるとOSの方での取り扱いが面倒になってきたりするけど。

1ファイルにする場合、条件データと配列データを切り出すのはPandasでも出来るけど、素のPythonでまず切り分けておいて、
切り出したCSV部分をPandasに渡すのが普通かな。
2019/12/22(日) 22:03:29.64ID:Ens8Pa2w
>>853
情報ありがとう。
開発終了してるし、後継のライブラリもなんか評判良くないね。

ゲーム部分は素直にUnityで開発します。
2019/12/22(日) 22:07:05.30ID:Ens8Pa2w
みなさんいろいろありがとうございます。
ファイル分割して、データ統合するコンバータを作るのが良さそうですね。
少し勉強が必要そうだけど、方向が見えてきました。
ありがとう。
2019/12/22(日) 22:08:24.35ID:Ens8Pa2w
>>855
シンプルにUnityからテキストファイルに書き出して、
パイソンでデータ処理するようにします。

Unityからパイソンのファイルを実行するだけなら、自分でもすぐできそうだし。
2019/12/23(月) 00:46:17.73ID:i+2w2qhs
本当にくだらないんだけど、
風俗板とこのスレに常駐すると
パイソンがパイパンに見えてくるな。
861デフォルトの名無しさん
垢版 |
2019/12/23(月) 02:12:53.28ID:Z89NhxHR
test_str = 'aaaisaisaihuursstestiisaojyewysa'
というような文字列があったときに
文字列の中に'test'が含まれるかどうかの判定ってどうすればよいですか?
先頭でも末尾でも中間でもどこに含まれていても、print('含まれてるよ')と表示したいです。
2019/12/23(月) 07:39:10.34ID:i17ydcb/
>>861
'test' in test_str
で判定
いっちゃん簡単なやつ
863デフォルトの名無しさん
垢版 |
2019/12/23(月) 08:50:45.33ID:G1ER7e+F
>>861
test_str = 'aaaisaisaihuursstestiisaojyewysa'
if 'test' in test_str :
  print('含まれてるよ')
else:
  print('無いよ')
2019/12/23(月) 09:22:23.85ID:cv9cp49U
正規表現
865デフォルトの名無しさん
垢版 |
2019/12/23(月) 15:25:25.14ID:sEnpgkKc
>>835-836
うbyはidが偶数か奇数かでも動作が違う
866デフォルトの名無しさん
垢版 |
2019/12/23(月) 17:05:29.34ID:Z89NhxHR
>>862>>863
ありがとうございます!
2019/12/23(月) 20:12:29.62ID:Pi1/7Ubv
アップルが従業員に遺伝子検査サービス無料提供。「治療」から「予防」へ

https://japanese.engadget.com/2019/12/14/apple-clinic/
2019/12/23(月) 20:16:11.23ID:Pi1/7Ubv
943
半島人は長い歴史で虐待され続けたため、人間不信に陥っており、
又医学的には拷問を受けたため、遺伝的に脳の前頭葉(脳の30%の部分)が傷ついて萎縮していると判明しています
だから豊かな感情に欠け、キレやすく、倫理的なことにあきらめ感が強く、無感動です
今後前頭葉を拡張復元していくことがよい結果を生むことになると思います
アメリカを中心に、高気圧酸素治療法というのがあります
カプセルに入って寝て、気圧を高めて高濃度の酸素を、人の血中に送りこむ療法です
損傷した脳の復元にかなり効果があることが、わかっていています


284
そこで提案だ
先ほど述べた、Paul Harch 医師達がやっているような、高気圧酸素治療(HBOT)の技術を生かしてみたら、いかがかな
つまり、代々前頭葉萎縮で悩んでいる半島人達の脳に、この治療法を応用するのだ
酸素を効率的に沢山供給することで、エデンちゃんの萎縮していた脳がほぼ通常に広がって戻ったのだから、
うまく考えて根よくやれば、半島人達の遺伝的に萎縮した前頭葉をふくらませられるかもしれない
そうしたら、彼らに失われていた人間的な感情も、わきやすく、育みやすくなるというものだ
半島人も他の民族と同じように気持ちが安定し、前向きになり、責任を持って自分の国作りをするようになるだろう
他に良い方法があればそれでもよいのだがね、1つの案として提示しておく
全世界の皆さんは、真剣に考えてやってほしい
特に、脳科学の研究者達はね
2019/12/23(月) 20:16:37.34ID:Pi1/7Ubv
276
その方法というのは、

『高気圧酸素治療(HBOT)』と言う

縦長のカプセルの中に患者が仰向けに寝ていて、カプセル内に高濃度の酸素を沢山満たし、吸い込ませ血管に送り込む
又、その際に高めた気圧で酸素を濃縮して、血管に溶け込みやすくする、という仕組みだ
これにより女児は損傷して萎縮していた脳が、酸素の補給により急激に回復し始め、まもなく感情を表し言葉を発したり、母を認識し以前の記憶がよみがえった
又自分で食べられるようになり、運動能力も徐々につき、驚異的な速さで機能が回復して行ったのだ
五才になった今では、多少歩く時に平衡感覚がまだ足りなくて、左右にぐらつくのを矯正中だが、ほぼ普通に元気に歩き、遊べるようになった


278
私が言いたいのは、これを応用できるのではないかということだ

この女の子、エデン・カールソンちゃんを治療したのは、ルイジアナ州立大学医学部のPaul Harch医師だ
彼は、エデンちゃんに主に高気圧酸素治療を行い、1回45分、週5日、計40回で終了した
治療を始めて10回目で、ほぼ正常に見えるほどになったという
その後も40回(8週間か)まで治療を続け、最終的にMRI検査では、エデンちゃんの萎縮してすき間のあった脳が、ほぼ完全に回復していた
脳の回復が速い幼児だからということも幸いしたが、
最近では急性脳損傷のある成人でも効果があることがわかってきた
成人にHBOTを1回実施しただけでも、脳の組織回復に必要な複数の遺伝子の活性に変化が見られたという
(日本では、病院で脳梗塞の治療等に使われている)
2019/12/23(月) 20:16:54.72ID:Pi1/7Ubv
280
朝鮮半島民というのは、医学的に研究された結果、
昔から先祖代々貴族等に虐待や拷問を受けてきたために、おびえて脳の前頭葉(脳の30%を占める)に沢山の傷が見られ、そこの部分が萎縮しているそうだ
前頭葉の前半部は、思考、自発性、感情、性格、理性等を司る

前頭葉が損なわれるとどうなるか
例えば、
忘れっぽい
思いつきで動き、不注意
自発性がなく、すぐ人を頼る
大変おしゃべりか、反対に抑うつ的
すぐ怒ったり笑ったり、感情を爆発させる
人を思いやるのが苦手
危険に鈍感になる
規則を守らない
1つのことにこだわり、同時に2つのことができない
過食や浪費

又、もしもその一部である眼窩前頭皮質が損傷すると、
過度に悪態をつく
性欲過多
社会的対話の欠如
共感能力の欠如
アルコール、薬物の摂取過多
等が見られるという

どれも困ったことだ
必ず全てが現れるわけではないし、個人差もあるだろうが

943
半島人は長い歴史で虐待され続けたため、人間不信に陥っており、
又医学的には拷問を受けたため、遺伝的に脳の前頭葉(脳の30%の部分)が傷ついて萎縮していると判明しています
だから豊かな感情に欠け、キレやすく、倫理的なことにあきらめ感が強く、無感動です
今後前頭葉を拡張復元していくことがよい結果を生むことになると思います
アメリカを中心に、高気圧酸素治療法というのがあります
カプセルに入って寝て、気圧を高めて高濃度の酸素を、人の血中に送りこむ療法です
損傷した脳の復元にかなり効果があることが、わかっていています
2019/12/24(火) 11:21:49.38ID:DWLgg12E
pythonにテキストファイルでデータを渡して統計処理しようとして、
初めて整然表現というものを学びました。
2019/12/24(火) 11:25:36.07ID:DWLgg12E
実験情報

氏名:
性別:
年齢:
実験日時:
実験場所:
実験タイプ:

実験データ
時刻 X Y 色
002 20 14 b


というデータで今まで実験情報と実験データを一つのファイルに記述していたのですが、
SatouTarou20191224DESCR.txt
SatouTarou20191224DATA.csv
と2つのファイルに分けて記述するべきなのでしょうか?
873デフォルトの名無しさん
垢版 |
2019/12/24(火) 11:34:40.49ID:oSAz7Duc
Philip N. Kleinという人の書いたベクトルを表すクラスに、以下の記述があります。

__add__ = add

左辺はインターネットで調べた結果、特殊メソッドであることが分かりました。

右辺の「add」は一体なんなんでしょうか?

そして、特殊メソッドである「__add__」を定義せずに、「__add__ = add」と代入していますが、これは文法的にどういうことなのでしょうか?
2019/12/24(火) 11:40:09.88ID:DWLgg12E
氏名 性別 年齢 ・・・ 時刻  X  Y 色
Sato Tarou 21     002 20 14 B
                004 22 10 R
               010  1  9  Y

みたいに一つのファイルのほうがいいのかな。
実験条件のデータは項目ひとつに1データでみづらいけど、
これがコンピュータにとって扱いやすい整然データということでしょうか?
875デフォルトの名無しさん
垢版 |
2019/12/24(火) 12:06:36.04ID:oSAz7Duc
>>873

def add(u, v):

class Vec:
__add__ = add

となっています。

これはクラス Vec の外で定義された「add」と同じ関数として「__add__」を定義するという意味ですか?
876デフォルトの名無しさん
垢版 |
2019/12/24(火) 12:16:14.86ID:Ww2BU2Ri
実行ファイルのあるディレクトリのパスを取得するのに
os.path.dirname(sys.argv[0])
という記述があるのですが
sys.argv[0]というのは何故必要なんでしょうか?

また、その1つ上のディレクトリのパスを取得するにはどうしたら良いですか?
2019/12/24(火) 12:35:53.65ID:3XzgnZW7
>>873-875
add と言う名前から想像すると、加算演算子「+」の再定義(オーバーライド・上書き)かも

例えば、Ruby で、カスタムクラスA を定義して、そのインスタンス同士を足す際、

class A
end

a_1 = A.new
a_2 = A.new

p a_1 + a_2 #=> エラー!

クラスA には、+演算子(メソッド)は、存在しないというエラーになる。
そこで、クラスA に、+演算子を再定義すると、好きな処理ができる。
a_1 + a_2 の場合、レシーバー(self)は、a_1で、other は、a_2 を表す

def +(other)
p self, other
end
2019/12/24(火) 12:41:33.48ID:8/3Ibfsl
>>876
sys.argv[0]が実行ファイルそのもの。
os.path.dirname(f)はfのディレクトリ。
os.path.dirname(os.path.dirname(f))でさらに一つ上の階層。
sys.argv[0]の代わりにos.path.abspath(__file__)も使える。

python 3.4以降?なら下の様な方法でも。
from pathlib import Path
Path(os.path.abspath(__file__)).parent.parent
879デフォルトの名無しさん
垢版 |
2019/12/24(火) 13:02:43.62ID:Ww2BU2Ri
>>878
ありがとうございます!
2019/12/24(火) 13:07:42.57ID:3XzgnZW7
>>876
Ruby では、シェルで「ruby オプション script.rb 引数」と入力するけど、
このスクリプトファイル名は、$0 という変数で参照できる

引数部分が、ARGV の[ 0 ]から順番に参照できる。
ARGV[ 0 ]には、スクリプトファイル名が入ってこない

そこが、Python とは異なる!

親のディレクトリは、parent で、祖父なら、parent.parent で。
たぶん、python にも、ファイルパスを扱うモジュールがあるはず

require "pathname"

path = Pathname("foo/bar") # 相対パス
path.parent # => #<Pathname:foo>
path.parent.parent # => #<Pathname:.>
881デフォルトの名無しさん
垢版 |
2019/12/24(火) 15:24:57.39ID:L1tHoweE
ふーん帰っていいよ
2019/12/24(火) 15:52:08.62ID:9irKuexe
>>873
class Vec:
__add__ = add

class Vec:
____pass
Vec.__add__ = add
と同じ
2019/12/24(火) 15:57:23.19ID:9irKuexe
Vec.__add__ = add がどういうことかわからなければ
↓これを参考に
https://ideone.com/Z5nLWW
2019/12/24(火) 16:04:24.92ID:4c603ABM
Rubyバカはスレタイを100回復唱してから書き込めよ
2019/12/24(火) 17:46:49.50ID:9irKuexe
>>872
RDBであれば別のテーブルで管理すべき内容

ただ一連の質問を見る限り他人がメンテする必要性が低そうなので1ファイルの場合と2ファイルにした場合のメリット・デメリットを考えてみて好きに決めればいいと思う

ファイルの分割に関係なく実験情報と実験データの1つの組をユニークに識別できるIDを定義しておくのが無難
2019/12/24(火) 17:57:21.54ID:9irKuexe
>>874
違う
基本はRDBで言う第三正規形
2019/12/24(火) 18:15:54.74ID:WqUdRB3h
人名単位のcsvに実験データを追記していく
必要なら名簿を作成してI/Oを平易にする

これではいかんのけ?
2019/12/24(火) 18:31:25.90ID:mGB04tXH
日本語ファイル名は災いの元なので、学籍番号やローマ字表記などに変えるべき。
2019/12/24(火) 19:46:37.28ID:CDAmWs4U
日本語かどうかよりはファイルシステムでファイル名としては取り扱えない文字かどうかを気にした方が良いような
まあ、結果としてアルファベットと数字とハイフン、アンダースコアにしておくのが無難だという結論になるけれど
2019/12/24(火) 19:59:36.01ID:l0GCh4fC
>>886
主キーで管理して実験情報テーブルと実験データテーブルを別個に作るということですか。なるほど。
2019/12/24(火) 20:01:19.05ID:l0GCh4fC
ってアクセスでならできるけど、パイソンでRDB的なことってできるんでしたっけ?
2019/12/24(火) 20:02:50.70ID:l0GCh4fC
>>889
ファイル名は氏名と生年月日と記録日にしようかと思っています。
検索しやすいので
2019/12/24(火) 20:04:11.90ID:l0GCh4fC
>>887
同一人物でも異なる実験条件で複数回検査するので。
2019/12/24(火) 20:12:16.08ID:l0GCh4fC
あああ、確かに100件以上の実験データを扱うことを考えるとDBにデータ移行できるようにした方が良いですね。盲点だった。
2019/12/24(火) 20:27:01.45ID:s2lutymo
>>407にもある通り数億とか数千万のオーダーを考えるのは普通
ファイルでも数万は簡単に行く
盲点でも何でもない
2019/12/24(火) 21:24:52.74ID:r8fNCPuj
参照系なら必ずしも正規形にこだわる必要もないよ。
統計処理はjoinされた形でやるわけだろうし。
2019/12/24(火) 21:43:30.63ID:9irKuexe
>>892
その3つで一意性を完全に保証できる前提ならいいんだけど
同じ人が複数タイプの実験を1日で実施したりすれば対応できなくなるよ

一意性を保証できない状況が発生しうるなら
識別IDに人間の見やすさのための情報を付加する形がいいかも

0011228_SatoTaro_20191224.csv
0011235_SatoTaro_20191224.csv
2019/12/25(水) 08:33:26.59ID:iqbdwPlo
>>897
スタンドアロンで別施設でデータ取得も考えると
年月日_実験開始時刻_氏名_生年月日
ですかね。
ファイル名は長いですが、
人間が判別するときもこれらのデータがあるとわかりやすいし。


20191224_120122_SatouTarou_19820912

ファイル名長いな・・・。
2019/12/25(水) 09:08:39.56ID:iqbdwPlo
正規形勉強してきました。
アクセス使ってたけど主キーとかユニークナンバーとしか理解してなかった。。。
2019/12/25(水) 09:12:06.97ID:iqbdwPlo
>>874
は第一正規形ってことですね。
python上で第三正規形のデータ取り扱うってどうすればいいんだろう???

pythonやRで統計処理をするときは、
第一正規形であれば問題なさそうな気がするんですが、
間違っていますでしょうか?
2019/12/25(水) 11:07:21.89ID:2sisjRdM
ちょっと論文読んできました。整然データ=第三正規形ではないんだね。

1. 実験情報と実験データでcsvファイルを分ける
2. 1のファイルから要約データを計算し、要約データファイルに実験情報と要約データを順次上書き
3. 要約データを実験条件で分割して有意差検定する

が良いのかなぁ。
902デフォルトの名無しさん
垢版 |
2019/12/25(水) 11:33:04.71ID:MC7jTCCf
>>974
間違ってない。
第三正規形は、更新時の書き込み箇所を一本化したり、保守性を上げる(スキーマ改変の範囲を限定する)というようなことが目的だから。
参照オンリーの場合は、むしろパフォーマンス面でマイナスになったりする。
けれど、非正規化するかどうかは別問題。
マテビューなどの解決策もあるからね。
2019/12/25(水) 12:01:08.00ID:ZI663GBY
Ruby on Rails では、
多重度、1 : N は、has_mamy, belongs_to とか

参照、references
外部キー、foreign_key
2019/12/25(水) 12:06:28.68ID:DT9LgkyT
>>903
https://spectrum.ieee.org/computing/software/the-top-programming-languages-2019
もはや存在すら忘れられたマイナー言語
2019/12/25(水) 12:38:43.88ID:wOKia0YU
>>891
sqlite3とか入れてPythonからそれを叩くのが定番
2019/12/25(水) 12:40:43.60ID:wOKia0YU
>>892
生年月日みたいな個人情報入れるとか大丈夫?
てか企業とか学校なら社員番号とか学籍番号とかあるんじゃないの?
2019/12/25(水) 16:27:06.73ID:l8QWpMeL
python3.8でコードをexe化する方法ありますか?
908デフォルトの名無しさん
垢版 |
2019/12/25(水) 17:05:31.75ID:2ymVLaRc
exe + dll で良いならあるよ
909デフォルトの名無しさん
垢版 |
2019/12/25(水) 17:18:42.78ID:urIrQtmF
Python習いたての初心者です。

Pandasでデータフレーム作って
Scikitlearnで標準化をする際に
一旦数字のみ抽出して、標準化、
またデータフレーム化という手順で習ったのですが
回りくどい気がしてなりません。

Pandasのまま標準化するには
計算コード直入力するしかないものですか?

理解不足があったらすみません。
2019/12/25(水) 17:41:48.67ID:owbFz3od
>>891
実験データをSQLiteとかで管理するのはお勧めできない
間違ってデータ飛ばしたりとかがSQLに慣れてないころには容易に起こる
データの結合とかはpandasでSQLで出来ることはほぼ同レベルの手間でCSVファイルに対してできるから、とにかくCSVファイルに保存していく形にするのが良いと思う
実務ではないのだから、最悪ちょっと機械的な手作業を頑張ったらなんとかなりそうという、見通しが立っている状態を維持し続けるべきだと思う
SQLとかRDBMSにめちゃくちゃ慣れていて、pandasなんか覚えたくないよというのならpandasじゃなくて良いけど

あと、データをあれこれするときはjupyter notebookを使うと履歴が残せるし、うまくいかないところだけ試行錯誤でコードの修正がしやすいので本当にオススメ
2019/12/25(水) 18:02:29.31ID:iqbdwPlo
>>902
ありがとう。
>>901
のパターンでやってみる。
データ構造どうするかって、きちんとしておかないと後で地獄見るってよく勉強になりました。
2019/12/25(水) 18:13:59.86ID:iqbdwPlo
>>910
pandasでデータ成型(スクレイピングって言うのかな?)
も学ばなきゃ。

新しく学ばなきゃいけないことたくさんだけど、
プログラミングは試行錯誤できることと、
お金があまりかからないのがいいことですね。
がんばります。
2019/12/25(水) 18:17:00.04ID:JNywgUPx
北海道のグラサンスーパーハゲザーはここにはこないのー?
2019/12/25(水) 21:34:44.21ID:qDbmzL4T
>>900
>pythonやRで統計処理をするときは、第一正規形であれば問題なさそうな気がするんですが、間違っていますでしょうか?
あってる間違ってるの話ではなく整然データにしておけばデータをこねくり回すときに楽になるよって話
現状困ってないなら無理して整然化する必要はないと思う

>>901
論文にも明記されてるけど整然データ(=tidy data)は第三正規形と基本同じだよ
原典か日本語訳を読むといいと思う
https://vita.had.co.nz/papers/tidy-data.pdf

>>902
一般的に特定の非正規形は特定の分析用途には使いやすくても
違う観点で分析しようとすると正規形からデータ変形するよりも多くの手間がかかる
参照オンリーの場合でもデータの利用方法が定型化していない場合は正規形から考えるメリットは大きい

特にRDBで分析用途のDBを用意する場合は参照オンリーでも正規形から考えとかないと手間が異常に増える
2019/12/25(水) 22:03:00.14ID:hPmVmQm/
質問でつ
このコードの4行目で print(combsを表示) しちゃうと
最後の return ta_combs の中身が空になるんだけど 何で?

import itertools
def twoSum(nums, target):
・・・combs = itertools.combinations(nums, 2)
・・・#print(list(combs))
・・・ta_combs = set()
・・・for comb in combs:
・・・・・if sum(comb) == target:
・・・・・・・ta_combs.add(comb)
・・・return ta_combs

print(twoSum((10, 20, 10, 40, 50, 60, 70), 50 ))
916デフォルトの名無しさん
垢版 |
2019/12/25(水) 22:05:12.83ID:ycC2pkbE
bigtable使ってるから正規化なんてないわ。
SQLもシンプルだし。
速度は言わずもがな。
2019/12/25(水) 22:10:39.36ID:rtgRmFxx
複数の表をjoinするのとそれらの直積からselect/uniqueをとるのは等価だから
非正規形だと手間がかかるってのは当たらないと思う。
パフォーマンスや容量は別として、必要な変数を選んでuniqueをとるだけという
操作に統一できるから、いちいちどう結合するか考えるより手間が省けるくらい。
918デフォルトの名無しさん
垢版 |
2019/12/25(水) 22:12:36.33ID:7FLhFvMk
以下のようなテスト用の記述があるとします。
vecというモジュールからクラスVecをインポートしています。
vecモジュール内でも同様のテスト用の記述があるとします。
↓のコードを実行した場合、vec内のテストも行ってしまうようです。
vec内のテストは完了しているので、テストされないようにすることはできるのでしょうか?


from vec import Vec



"""
Returns the value of entry k in M, where k is a 2-tuple
>>> M = Mat(({1,3,5}, {'a'}), {(1,'a'):4, (5,'a'): 2})
>>> M[1,'a']
4
>>> M[3,'a']
0
"""


if __name__ == '__main__':
import doctest
doctest.testmod()
2019/12/25(水) 22:34:33.78ID:qDbmzL4T
>>915
list(combs)でイテレータを消費してるから
for comb in combs:のところではもう次のアイテムはない
2019/12/25(水) 22:37:11.85ID:owbFz3od
>>917
一理ある
DBを正規形にしておくのは必ず非正規化されたデータが正規形の直積から取り出せて、不整合なデータはありませんという保証を担保する側面があるってことだね
2019/12/25(水) 23:00:58.32ID:qDbmzL4T
>>917
それは一番単純なパターンで
キレイに非正規化されてるケースだけにしか当てはまらないよ
2019/12/25(水) 23:08:03.95ID:hPmVmQm/
>>919
アドバイス ありがとうございます
イテレータを理解してなかった

import copy 追加して
a = copy.copy(combs) を print の前に入れたら上手くいきました
2019/12/25(水) 23:17:51.74ID:rtgRmFxx
キレイじゃない非正規化ってどういうのを想定してるのかな。
データとして等価じゃないならそりゃまずいが。
2019/12/26(木) 10:44:02.91ID:g3TV29VW
そもそも第一正規形以外の正規形って更新時異常を避けるために考えられたものであって
検索のことは考慮外なわけで。
2019/12/26(木) 11:09:55.46ID:Wx+k6Oqq
>>924
そりゃjoinのパフォーマンスなんかDBMSの実装の問題なんだから考慮外で当たり前だろう
レイヤの異なる関心事をごっちゃにしている典型例だな
2019/12/26(木) 14:05:50.96ID:g3TV29VW
パフォーマンスの話なんてどこから出てきたのやら。

>レイヤの異なる関心事をごっちゃにしている典型例だな

そうだね。
927907
垢版 |
2019/12/26(木) 14:45:46.65ID:FL6xOFYS
すなおにpyinstallerのみ3.7で動かすことにしようと思います

オフライン環境にインストールしたかったので、先にオンライン環境で
pip download -d <保存先> --no-binary :all: pyinstaller
で関係ファイルをすべてDLし、オフライン環境にてpip installを試みました

ところがそれぞれのファイルをインストールし、
最後にPyInstaller-3.5.tar.gzをpip installするところでエラーになってしまいます

エラー内容を見るに、PyInstaller-3.5.tar.gzのpip installの中に
setuptoolsのオンラインでのpip installが含まれているように見えます
もちろんsetuptoolsは先にpip installしているにも関わらずです
何か方法ありますでしょうか

エラーメッセージ↓
ERROR: Command errored out with exit status 1:
command: <Python.exeのパス> <pipのパス> install --ignore-installed --no-user --prefix <overlayのパス> --no-warn-script-location --no-bina
ry :none: --only-binary :none: -i https://pypi.org/simple -- 'setuptools>=40.8.0
' wheel
cwd: None
Complete output (8 lines):
Collecting setuptools>=40.8.0
WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, st
atus=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3
.connection.VerifiedHTTPSConnection object at 0x02F322D0>: Failed to establish a
new connection: [Errno 11004] getaddrinfo failed')': /simple/setuptools/
(以下繰り返し)
2019/12/26(木) 15:57:44.27ID:vMTIIs6I
自分もひと月ほど前にオフラインでのpip installをやろうとして
行き詰まった
pipは何かとPyPIに接続しにいくからね

結局linuxサーバでプロキシーサーバーとファイヤーウォールを建てて
オンラインでできるようにしてからインストールしたよ
2019/12/26(木) 19:24:43.15ID:FaxhM6Zn
北海道のグラサンスーパーハゲザーはここにはこないのー?
930907
垢版 |
2019/12/27(金) 18:52:51.35ID:Qsz5HXwu
.tar.gz展開して中のsetup.py直接起動させたらいけました
自己解決ですみません
2019/12/28(土) 02:08:30.85ID:RMes1jy6
こういうデータがあります 外側のカッコはタプルでも可 要素は重複してないので集合でも可
data = [00, 01, 10, 11, 12, 22]
要素から 1桁目が0のみ抽出・・00,01 2桁目が1のみ抽出・・01,11 という処理をしたいです
今はforで回し正規表現で判断してるのですが、簡単に記述出来るモジュールのような物はあるんでしょうか?
2019/12/28(土) 02:22:55.46ID:0wxaCoE9
>>931
条件が簡単ならリスト内包表記で抽出するやり方があるけど
forで回して正規表現で検索する方が何かと汎用性があると思うよ

左1桁めが0のデータを抜き出す場合
[ x for x in data if x[0] == '0' ]

左2桁めが1のデータを抜き出す場合
[ x for x in data if x[1] == '1' ]
933デフォルトの名無しさん
垢版 |
2019/12/28(土) 02:24:08.22ID:CljHkVQA
rubyだと?
2019/12/28(土) 02:30:35.60ID:r7V1DpIq
>>931
十分簡単な記述だと思うけど、俺ならタダの数値計算にする。
切り捨てで1
10倍して10で割ったあまりが1
2019/12/28(土) 02:31:06.65ID:r7V1DpIq
切り捨て1じゃないなw
2019/12/28(土) 06:00:15.29ID:iMlStgtR
yokokara
937931
垢版 |
2019/12/28(土) 08:39:10.00ID:RMes1jy6
要素は文字列でした 間違ってました
data = ["00", "01", "10", "11", "12", "22"]

>>932
"2"を抽出時も簡単ですね 全く思いつかなかったです 
3行の記述が1行に収まるので、こちらでいきたいと思います

>>934
10倍後10で割る方法もレスされて思い出しました

>>932  >>934 ありがとうございました
938デフォルトの名無しさん
垢版 |
2019/12/28(土) 10:40:09.14ID:glKwkKz6
>>931
ある言語では

p data.select{|x| x[0] == '0'}
2019/12/28(土) 11:22:22.26ID:b3ohKRMf
[ x for x in data if re.search(r'1$', x)]
[ x for x in data if re.search(r'1.$', x)]

とある言語では
data.filter{|x| x.match? /1$/}
data.filter{|x| x.match? /1.$/}

またとある言語では
data.filter(x=> /1$/.test(x))
data.filter(x=> /1.$/.test(x))
2019/12/28(土) 12:02:33.66ID:vnZXJluZ
Ruby では、select でフィルターする

data = %w(00 01 10 11 12 22)

p res_1 = data.select{ |x| x[ 0 ] == '0' }
p res_2 = data.select{ |x| x[ 1 ] == '1' }

出力
["00", "01"]
["01", "11"]
941デフォルトの名無しさん
垢版 |
2019/12/28(土) 13:03:02.30ID:CljHkVQA
♪───O(≧∇≦)Oキタ────♪
942デフォルトの名無しさん
垢版 |
2019/12/28(土) 15:28:51.07ID:+sYlgNhA
>>929
ハゲは北神雄太。
943931
垢版 |
2019/12/28(土) 16:42:14.01ID:RMes1jy6
>>939
別の正規表現で書いてました (r'1$', x) (r'1.$', x) の方が簡単なので使わせて頂きます

参考にします >>938 >>940
944デフォルトの名無しさん
垢版 |
2019/12/28(土) 16:48:18.35ID:9o1guVgp
Macで、このプログラムをPyinstallerで実行ファイルにすると動きません。
MacってPythonと相性悪いんでしょうか?

import os
import sys
path_w = os.path.dirname(sys.argv[0])+'/testWrite.txt'
with open(path_w, mode='w') as f:
f.write('testWrite')
2019/12/28(土) 16:51:10.81ID:EYxHjYjG
>>944
Macには最初からPython2.7系が入っているので
3系を、ケンカしないようにうまいことインスコするのが基本。

でもってpyinstallerって
Windows用じゃなかったっけっか
946デフォルトの名無しさん
垢版 |
2019/12/28(土) 17:25:15.16ID:9o1guVgp
>>945
いいえ、Pyinstaller自体はWindows/Mac両方で動くように設計されているもののようで
Pyinstallerでアプリケーション化した後もGUIの作成やソケット通信などの部分は正常に動くのですが
ファイルの参照やファイルを作成のようなコマンドが内部に含まれていると何故か動かなくて困っています。
2019/12/28(土) 17:51:26.10ID:EYxHjYjG
>>946
pathの書き方がLinux系とWin系で異なるから とかもないなら

Macの「システム設定」てきな歯車アイコンの奥底にある
「出どころがあやしいアプリは動かないようにブロックする」デフォルト設定のせいじゃなかろか
(この機能の正式名称 ルートレス とかなんとかいったような)
2019/12/28(土) 18:34:55.94ID:FoArgV87
>>944
Macのターミナルから実行した場合は動くの?
949デフォルトの名無しさん
垢版 |
2019/12/28(土) 18:48:26.90ID:9o1guVgp
>>948
はい、ターミナル(正確にはAnaconda Prompt)から、素の状態のPythonを実行すると動きます。
しかし、Pyinstallerを使ってアプリ化することによってファイル作成コマンドが使えなくなります。
Windowsの方ではPyinstallerを使っても正常に動きます。

>>947さんの指摘が近そうな気がするので調べてみます。
950デフォルトの名無しさん
垢版 |
2019/12/28(土) 18:53:49.75ID:9o1guVgp
あと、もう1つ情報を付け加えると、PyinstallerによってMacアプリ化すると
アプリが作成されるのと同時に、サブフォルダに「Unix実行ファイル」というのも作成されています。
何故かアプリでは動かないのに、サブフォルダ内の「Unix実行ファイル」の方をクリックするとファイル生成などのコマンドも正常に動いています。
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。