1 名前:デフォルトの名無しさん [2018/08/24(金) 07:50:35.97 ID:VD4/++xS.net] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その38 https://mevius.5ch.net/test/read.cgi/tech/1526522954/
784 名前:724 mailto:sage [2018/11/06(火) 20:28:42.52 ID:QHiQfJwC.net] >>744 どうもありがとうございます! 試してみます! 今のところ分かったのはこの3つなんですが、記号類をまとめてちゃんと表示する仕組みってありますか? 今ちょっとググってたら xml.sax.saxutilsのescapeだと<>はエスケープしてくれそうな感じでした。
785 名前:デフォルトの名無しさん [2018/11/06(火) 20:31:38.28 ID:0p0MEBcD.net] "mrkdwn": false
786 名前:724 mailto:sage [2018/11/06(火) 20:32:44.30 ID:QHiQfJwC.net] あと、混乱してしまってるんですが、変数textの中にもし<、>、*、~のいずれかが含まれてたら、<、>、&#126;、&#42;に置き換えるには、if文でどう書くんでしょうか?
787 名前:724 mailto:sage [2018/11/06(火) 20:36:27.93 ID:QHiQfJwC.net] 何度もすみません import xml.sax.saxutils from escape と import htmlのhtml.escape はどう使い分けるんでしょうか?
788 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 20:51:13.02 ID:B9fQWZZ6.net] >>747 findを使ってtextを検索し、-1よりでかい数が帰ってくるかどうかためす。 if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略)
789 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 20:56:52.27 ID:B9fQWZZ6.net] (つづき) でもってif文のインデントの中に text=text.replace('before','after').replace('before','after').replace('before','after').replace('before','after') beforeにはそれぞれ<、>、*、~を入れて aterには&#42;
790 名前:とかそういうのを書いておく [] [ここ壊れてます]
791 名前:724 mailto:sage [2018/11/06(火) 20:58:43.90 ID:QHiQfJwC.net] >>749 なるほど!ありがとうございます! > if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略) を途中で改行したい場合はどうやるんでしょうか? バックスラッシュ付けるっぽいんですが、以下だとエラーになります if text.find(’<’) > -1 or text.find(’>’) > -1 \ or....(略)
792 名前:724 mailto:sage [2018/11/06(火) 20:59:35.67 ID:QHiQfJwC.net] >>750 ありがとうございます!!
793 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:00:46.35 ID:B9fQWZZ6.net] >>748 前者は基本的に & 、 < 、および > が対象 だが 他の文字もエスケープ汁と命令することが可能 後者は & 、 < 、および > が対象
794 名前:デフォルトの名無しさん [2018/11/06(火) 21:08:58.42 ID:0p0MEBcD.net] 特殊な記号たち https://api.slack.com/docs/messages/builder?msg=%7B%22text%22%3A%22%60%60%60pre%60%60%60%20*bold*%20%60code%60%20_italic_%20~strike~%22%2C%22username%22%3A%22markdownbot%22%2C%22mrkdwn%22%3Atrue%7D
795 名前:724 mailto:sage [2018/11/06(火) 21:12:17.61 ID:QHiQfJwC.net] >>753 どうもありがとうございます。 例えば、今回みたいに*や~も含めたいって場合なら前者で指定したらよいって事ですね。
796 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:13:16.40 ID:B9fQWZZ6.net] >>751 途中で\入れるのって pyrhon上で直接コマンド打ってるときだけじゃね? pyファイルに書いたのを実行させるときはイラネ
797 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:15:03.75 ID:B9fQWZZ6.net] >>755 んだな 詳しくは>>754 と https://docs.python.jp/3/library/xml.sax.utils.html あたりをよんでくれ
798 名前:724 mailto:sage [2018/11/06(火) 21:15:09.62 ID:QHiQfJwC.net] >>754 どうもありがとうございます! 他にもいくつかあったんですね。 それらの記号を >>749-750 や>>748 の前者の方で試してみます
799 名前:724 mailto:sage [2018/11/06(火) 21:21:01.58 ID:QHiQfJwC.net] >>756 if text.find(’<’) > -1 or text.find(’>’) > -1 or....(略) だと、エラーになってしまいました。
800 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:21:04.81 ID:B9fQWZZ6.net] >>756 >pyファイルに書いたのを実行させるときはイラネ oh オレ無意識に条件文のif以降を()でくくって最後に:付ける癖があるわ ↓ if (text.find(’<’) > -1 or text.find(’>’) > -1 or ....(略) ...): ↑ みたいに()でかこってやれば何行にわけてもおk
801 名前:724 mailto:sage [2018/11/06(火) 21:28:34.65 ID:QHiQfJwC.net] >>760 へぇ〜 こんな方法もあるんですか!今試したら動いたけれど、 flask8だとW503 line break before binary operator って言うエラーが出てました
802 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:33:57.41 ID:B9fQWZZ6.net] >>761 アッハイ or は 行の最後に書かずに 先頭にかけやこのデコスケ野郎 っていうエラーすね。 つまり推奨は if (text.find(’<’) > -1 or text.find(’>’) > -1 or ....(略) ...): 汚いソースコードの書き方しててすみまそん。。。
803 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 21:37:10.20 ID:B9fQWZZ6.net] 詳しい解説は https://github.com/PyCQA/pycodestyle/issues/513 あたりかな
804 名前:724 mailto:sage [2018/11/06(火) 21:46:50.14 ID:QHiQfJwC.net] >>762 いや、ありがとうございます。。。 2行目を or から始めてもW503でした。あと、E129も出でます。 E129は2行目の or を if の i から数えて8文字インデントしたら消えました。
805 名前:デフォルトの名無しさん mailto:sage [2018/11/06(火) 22:02:51.74 ID:B9fQWZZ6.net] >>764 検証してくれるやつのバージョンによって推奨される書き方がちガッ獲るようだ… https://lintlyci.github.io/Flake8Rules/rules/W503.html 今どきはどーするのが一番正しくてグッドなのか、 誰か他の回答者を待とう (´・ω・`)
806 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 00:09:47.09 ID:kPzZvNDI.net] >>741 beautifulsoupとurllibっす
807 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 00:53:42.51 ID:QtFDoqkC.net] >>766 beautifulsoupなら soup.a['href'] soupはBeautifulSoupオブジェクトな
808 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 01:15:28.23 ID:+978RLDn.net] >>747
809 名前:Ruby の、CGI.escapeHTML みたいな、HTML エスケープだろ Python にも、そういう関数があるはず。 ライブラリを探せ 全言語にある! Google に「html escape」と入れれば、補完で全言語が出てくる。 php, javascript, java, ruby, python ズラズラっと そういう一般的な関数を、自作したらダメ。 自作したものは、ライブラリよりも品質が低いから [] [ここ壊れてます]
810 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 01:23:13.15 ID:mTAgM1WN.net] キチガイ避けには「ruby」でNGワード登録が簡単・便利
811 名前:724 mailto:sage [2018/11/07(水) 10:31:30.88 ID:eBlvm3p7.net] >>757 from xml.sax.saxutils import escape text = 'あいうえお' text = f'~{text}~' text = escape(text, {'*': '&#42;', '~': '&#126;', '': '', '': ''}) 上は実際には半角です。 textをSlackに送信すると、Slackでは、~あいうえお~と表示して欲しいんですが、 &#126;あいうえお&#126; と、表示されてしまいます。 どこが間違えてますか? あと、 * を置き換える文字列は&#42;(半角で)のように、 ` を置き換える文字列 _ を置き換える文字列 ってどうやって調べたらよいんでしょうか? >>765 自分のバージョンはPython 3.6.4、flake8 3.6.0でした
812 名前:デフォルトの名無しさん mailto:sage [2018/11/07(水) 12:02:53.55 ID:gi2gLu8r.net] 最低限↓に目を通してからslackの話を続けて貰えるか? https://api.slack.com/docs/message-formatting#how_to_escape_characters
813 名前:デフォルトの名無しさん [2018/11/07(水) 13:51:51.54 ID:A06G1xNF.net] https://docs.python.jp/3/library/html.html
814 名前:デフォルトの名無しさん [2018/11/07(水) 18:19:51.85 ID:aDO62va+.net] https://dotup.org/uploda/dotup.org1686239.png >>> import numpy as np >>> from PIL import Image >>> im = Image.open('dotup.org1686239.png') >>> np.array(im) >>> np.array(im)[:,-1::-1,:] >>> Image.fromarray(np.array(im)[:,-1::-1,:]).save('dotup.org1686239_rev.png') 便利やね python だぁぃすき
815 名前:デフォルトの名無しさん [2018/11/07(水) 18:32:37.21 ID:fvfWV4IU.net] conveert dotup.org1686239.png -flop dotup.org1686239_rev.png ImageMagickのが簡単だよ チンポ だぁいすき
816 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 17:18:54.41 ID:vDDK8kog.net] if random.randint(0,1): step=1 else: step=-1 この場合のrandom.randintってどういう意味? 乱数で0か1が発生した場合に1、その他の数字のときelseって意味じゃないよね? よくわからん
817 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 17:21:04.79 ID:/8FytPr/.net] スクレイピングなんですがjava?でコンテンツが作られている動的なページはSeleniumのようなwebBrowserをさわって値を取るしか無いんでしょうか vbaで似たようなのを作ったんですが読み込み等が遅く、処理の高速化を考えていたのですがSeleniumだと実現できないでしょうか
818 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 17:44:25.17 ID:AFbSMZjK.net] random.randintで0がでたらfalse 1が出たらtrueじゃない?
819 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 18:13:45.79 ID:KFTKKYEO.net] >>777 コード読むとその解釈で合ってると思うけど、そのプロセスが理解できない randint(a,b)ってa~bの中で整数を生成するんだよね? randint(0,1)なら0か1のどちらかを生成する つまりわからん
820 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 18:30:34.85 ID:AFbSMZjK.net] 多分わからないのはbool型についてかな ちょっと検索して出てきたから読んだらいいかも https://note.nkmk.me/python-bool-true-false-usage/
821 名前:デフォルトの名無しさん [2018/11/08(木) 18:47:09.00 ID:5iWhW6P3.net] >>778 PyhonのTrue, Falseは
822 名前:0, 1と等価 実際True+Trueを評価すると2になる [] [ここ壊れてます]
823 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 19:50:06.88 ID:KFTKKYEO.net] TrueとFalseがランダムに生成されるんだろ つまりif節の中にTrueもFalseも入ってることになんね?
824 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 19:51:27.62 ID:UKor1bXF.net] ならんよ>>781
825 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 19:54:09.65 ID:KFTKKYEO.net] 俺がアホなのか 全くスッキリと理解できないw
826 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:06:42.76 ID:AFbSMZjK.net] if random.choice([True, False]) こう書き換えれば少しはわかりやすいかな
827 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:21:32.77 ID:KFTKKYEO.net] if random.randint(0,1)==True: と同じ意味だよね? これなら簡単に理解できるけど、==Trueがなくても文法として成立するのがよくわからない
828 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:23:05.84 ID:UKor1bXF.net] 暗黙の了解で省略されてるだけ 英語の関係代名詞的なさむしん
829 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:30:18.68 ID:KFTKKYEO.net] >>786 マジかよ 人に優しくない言語やんけ! 何時間悩んだと思ってんや
830 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 20:32:58.15 ID:UKor1bXF.net] もう忘れないだろうから 悩んだことはむだではない タブンネ
831 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 21:02:16.60 ID:dNW1RU/q.net] 主流言語はみんなそんな感じなんだけどPythonは比較演算子強制でも良かった気もしないでもない。 でも、 bool値を返すisBigメソッドを実装したクラスChinkoがあったとして… myChinko = new Chinko(16) if myChinko.isBig(): と自然な英文風に書けるというスゴイ利点もある! ちなみに12以下だとFalseを返します
832 名前:デフォルトの名無しさん [2018/11/08(木) 21:03:49.60 ID:JRn9O86F.net] >>781 1とTrue、0とFalseを同一として認識するのは明らかに間違っている
833 名前:デフォルトの名無しさん [2018/11/08(木) 21:04:47.54 ID:j6Jh7/pK.net] 自然言語風に書けるのはデメリットやぞ
834 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 21:15:17.71 ID:dNW1RU/q.net] 冗談やで。俺は比較演算強制がよかった
835 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 21:16:04.42 ID:fqxKHZms.net] ネェ、チンコダッテ?( ´д)オクサン(д` )アラヤダワァ
836 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 21:53:09.37 ID:QbjXdk8c.net] >>785 ==trueとか言うゴミコード書くなよ
837 名前:デフォルトの名無しさん [2018/11/08(木) 22:07:08.42 ID:j6Jh7/pK.net] ゴミって些末な事ばかり気にしてゴミコードってゆうよねw
838 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:09:00.10 ID:Sh+rXr23.net] 言うをゆうって書く人は初等教育を受けてるのかしら
839 名前:デフォルトの名無しさん [2018/11/08(木) 22:14:43.87 ID:j6Jh7/pK.net] 言うはゆうて読むんやで
840 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:24:11.22 ID:lbifDjkh.net] 誰も読み方について話してないぞ。相当な馬鹿だな
841 名前:デフォルトの名無しさん [2018/11/08(木) 22:30:06.41 ID:j6Jh7/pK.net] バカのくせに人の事バカってゆうの恥ずかしいよバカw
842 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:32:56.23 ID:KFTKKYEO.net] ちなみにこういう省略って他にどんなのある? 他の文法で省略あったらまた騙されるなー
843 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 22:53:42.09 ID:PhR3Qfyw.net] perlはエゲツナイぞー
844 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:07:43.11 ID:QbjXdk8c.net] ==Trueが必要だと思う奴はその戻り値に対しても==Trueしとけw
845 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:17:51.55 ID:yMIHOz65.net] the reason why ~ みたいなもんだな
846 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:20:05.30 ID:QHwNiY6E.net] >>776 5ch みたいな動的または、ajax などの非同期処理で、ページの内容を取得しているものは、 その内容が読み込まれるまで、その要素や内容は存在しない 5ch なら、まず空のHTML を送ってくるから、ajax で読み込まれるまで、内容が存在しない 漏れはRuby で、Selenium WebDriver を使って読み込んでいる。 その要素が出現するまで、wait される。 簡単なのは10秒ぐらい、sleep すればよい 5ch なんか、バグが多いから、JavaScript が無限ループしたりして、 30秒待っても、Selenium WebDriverから、そのページへアタッチ出来ないこともある
847 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:22:35.59 ID:a5prroZo.net] 「Ruby」でNGワード登録が簡単・便利
848 名前:デフォルトの名無しさん mailto:sage [2018/11/08(木) 23:44:41.94 ID:mrd9U+a3.net] 50%の確率で2つの処理を選択したい場合によりスマートな書き方はありますか?今はべたべたにこう書いてます if np.random.rand() > .5: do1() else: do2()
849 名前:デフォルトの名無しさん [2018/11/09(金) 02:19:40.37 ID:19dRG8QF.net] (do1 if np.random.rand() > .5 else do2)()
850 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 04:00:11.42 ID:bq31MDXV.net] すごい!そんな書き方があるのですね。 よければ何という記述方法か教えてもらえますか?(どうやって調べたら出ますか)
851 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 04:18:51.46 ID:Je0vwCJT.net] np使う理由はあるの?
852 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 08:30:00.34 ID:0hfWLYYN.net] pycharmでshadows name xxx from outer scopeっていうwarningが出るんだけど、これは何が問題なんや
853 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 09:42:26.78 ID:VXODTqLC.net] 同じ名前の変数が定義されたことで 外のスコープの変数が隠されている という警告
854 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 09:43:04.08 ID:VXODTqLC.net] Warningに書いてある通りだな
855 名前:デフォルトの名無しさん [2018/11/09(金) 10:18:23.10 ID:19dRG8QF.net] >>808 三項演算子 可読性下がるから使い過ぎはお勧めしない
856 名前:デフォルトの名無しさん [2018/11/09(金) 11:58:21.04 ID:p9aTnaT/.net] ちょうど1/2の確率が欲しいとき if random.rand(0, 1) > .5: が正解? それとも if random.rand(0, 1) >= .5: が正解? どっちも間違い?
857 名前:デフォルトの名無しさん [2018/11/09(金) 12:04:45.46 ID:mwKVhTqG.net] どっちも間違い だが少なくとも random.rand() > .5 では偏りが生じる
858 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 12:40:54.60 ID:0q7AG6jo.net] >>814 0×1の配列?
859 名前:デフォルトの名無しさん [2018/11/09(金) 12:41:31.35 ID:ZavMgXDP.net] Openpyxlでエクセルシートをリスト化した後 シート名を条件に抽出することはできますか? すみません、調べてもわかりませんでした。
860 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 13:11:43.28 ID:XhL65g6u.net] >>814 俺だったらこうする if random.randrange(2): 「一定回数抽選すると、AとBの出現率が必ず1:1になる」ことを求めているならシャッフルを使う a=[0]*50+[1]*50 random.shuffle(a)
861 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 13:44:15.88 ID:lOOqdq/Y.net] deapのbase.Fitnssでweightsの動き方がよくわからないんですが 仕様を説明したサイトはありますか?
862 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 13:47:08.53 ID:iep8j/69.net] >>817 シート名は .get_sheet_names()でリストでとってこれるから とってきたあと 1つ1つのシート名でifすればいいだろ
863 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 13:49:25.70 ID:iep8j/69.net] >>819 https://deap.readthedocs.io/en/master/api/base.html はもう読んでる?
864 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 14:27:01.20 ID:D1KL18mO.net] python2.7 pandasのto_csvでの出力、文字コードについてです utf8のdfがありコレをsjis(sjisで表現出来ない文字は無視や?置き換えで良い)にしてcsvにしたいです 調べると with codecs.openでencoding='cp932' errors='ignore'で出力ファイルを開き df.to_csv(ファイルオブジェクト, encoding='cp932') で出来ると書いてあったのですが普通にUnicodeエラー出ます 何が原因でうまくいかないんでしょうか、また他の解決法なにかありませんかね
865 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 15:23:15.00 ID:iep8j/69.net] >>822 ソースコードの文字コードは何で書いてる OSは何よ Unicodeエラーの内容は略さず書いて
866 名前:デフォルトの名無しさん [2018/11/09(金) 16:18:25.51 ID:aAkZVDrn.net] PythonがWEBで
867 名前:覇権取れば最強のスクリプト言語になるのにな Djangoとかいうゴミはいいから早くRailsとかLaravel並みにいいフレームワーク作ってくんね? [] [ここ壊れてます]
868 名前:デフォルトの名無しさん [2018/11/09(金) 17:36:50.37 ID:rwK1ciOK.net] GoogleってWEB開発にPython使ってるらしいけどフレームワークはDjangoなのかな? 社内で別のフレームワーク使ってんだったら公開してほしいな
869 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:22:48.23 ID:lOOqdq/Y.net] >>821 それは読んだんですが多目的最適化で10倍や100倍に設定したら具体的にどう評価を変えているのかが書いていなかったので
870 名前:デフォルトの名無しさん mailto:sage [2018/11/09(金) 19:31:33.70 ID:iep8j/69.net] >>826 weights って重み付けだから、 いっぱいのときも逐一自分で指定するもんじゃないの >多目的最適化で10倍や100倍に設定したら具体的にどう評価を変えているのか 俺にはちょっとなにいってるのかよくわかんない(´・ω・`) 各重みの最適値さがしなら プロジェクト・しらみつぶし が たぶん一番いい・・・
871 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 12:15:02.20 ID:seRmY1tJ.net] https://stackoverflow.com/questions/42866743/lambda-function-explanation/42867119 repeating_data = reduce(lambda l, x: l.append(x) or l if x not in l else l, columns['Hello'], []) Columns["Hello"] has [1,1,2,3,4,5,6,6,7,8,9,9,10,0] このlambda式のl.appned(x) or lの"or l"と if x nor in l else lの"else l"がよくわからないんですが、 つけないとエラーになるので必要なのでしょうが、どのような意味なのでしょうか?
872 名前:825 mailto:sage [2018/11/10(土) 12:26:13.87 ID:seRmY1tJ.net] 質問ばかりで申し訳ないのですが、なぜこの式でreduceを使っているのかもよくわかりません。 reduceでぐぐるとすべて畳み込んで計算すると書いてあるところが多いのですが、関数がl.append(x) or lなので違うのでしょうか?
873 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 13:07:05.83 ID:u9Es1usX.net] >>828-829 条件式(他言語のいわゆる三項演算子や条件演算子と呼ばれる物の代替) https://docs.python.org/ja/3/reference/expressions.html#conditional-expressions そしてlist.appendの戻り値はNoneなので常にorの右辺が評価され返される つまり新しいリストに含まれていなければ追加し、さもなければそのまま あとは先方のレスにもset使えと書かれてると思うけど。reduceの動作は以下 https://docs.python.org/ja/3/library/functools.html#functools.reduce
874 名前:826 mailto:sage [2018/11/10(土) 13:46:44.78 ID:seRmY1tJ.net] >>830 丁寧なレスありがとうございます。list.appendの戻り値がNoneだなんて意識しないで使ってました。 破壊的メソッドだからなんだそうですが、自分でもうちょっと勉強してみます。
875 名前:826 mailto:sage [2018/11/10(土) 15:23:32.40 ID:seRmY1tJ.net] if x not in l else lの"else l"を省略すると SyntaxError: invalid syntax が出るんですが、通常のif文の場合はelse以下がなくても問題ないと思うのですが、 なぜこの場合はだめなのでしょうか?
876 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 15:39:38.87 ID:hLxIIZfE.net] >>832 それは > if x not in l else l じゃなくて > l if x not in l else l なの >>830 が言う条件式って奴 式1 if 条件 else 式2 で、条件が真と評価されるなら 式1 条件が偽に評価されるなら 式2 を返す なので else 式2 がないと困っちゃう (None を返すという選択肢もあったとは思うけど)
877 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 15:48:08.55 ID:seRmY1tJ.net] >>833 else lのlをNoneにしてみたら、 TypeError: argument of type 'NoneType' is not iterable とでてしまいました。 でもなんとなく前よりはこの式がわかったような気がします。 どうもレスありがとうございました。
878 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 17:30:59.29 ID:16GnFLu/.net] >>832 >>830 が条件式(他言語に倣って三項演算子と呼ばれることも)だって教えてくれてるじゃん 値1 if 条件 else 値2 条件が真と評価されたら値1を、偽と評価されたら値2を返す
879 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 18:12:02.74 ID:hLxIIZfE.net] >>828 そもそもこのラムダ式がちょっとトリッキーなんだよね lambda l, x: l.append(x) or l if x not in l else l 俺なら def f(l,x): __if x not in l: ____l.append(x) __return l を定義して repeating_data = reduce(f, columns['Hello'], []) ってやると思う
880 名前:デフォルトの名無しさん [2018/11/10(土) 18:14:37.23 ID:GvdPZ72d.net] >>834 lをNoneにするってのは830の間違い
881 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 18:59:26.03 ID:8RKiULCU.net] >>833 偽の時は空値返す二項版条件演算子みたいな糞を実装してる言語って何? 有効な使い道が思いつかん
882 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 19:30:23.53 ID:hLxIIZfE.net] >>838 もっと用途限定だけどC#のnull条件演算子が近いかな
883 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 19:41:48.00 ID:LcpJu9SU.net] >>839 用途限定どころか目的からして完全に別物
884 名前:デフォルトの名無しさん mailto:sage [2018/11/10(土) 20:21:45.94 ID:hLxIIZfE.net] はいはい w