Pythonのお勉強 Part66

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 9f02-4fXk)
垢版 |
2021/11/15(月) 18:59:43.37ID:f2uNQEAt0
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに補充すること。

・当スレにRubyのソースコード類を書くことを禁ず
・Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
・「Ruby では」「Rubyでは」「Rails」正規表現→「^クソチョンw$」をNGワード登録推奨
・エラーを解決したいときは、かならず
 エラー文(勝手に省略orスクショうp等の横着禁止)と
 おま環(Pythonのバージョン番号+OS名とバージョン+IDE名)を書け。

★Pythonのソースコードを5ちゃんに直貼はインデントが崩壊するので、
  ↓等のコードうp用サイトに貼ってきてくだしあ。(スクリーンショットをうpる「横着」禁止)
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/

●関連スレ● 自称初心者は↓へ
【まず1嫁】くだすれPython(超初心者用) その55
https://mevius.5ch.net/test/read.cgi/tech/1633070807/

〇前スレ〇 Pythonのお勉強 Part65
https://mevius.5ch.net/test/read.cgi/tech/1621749112/

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ###
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/04/28(木) 16:16:26.63ID:vi5k4+uL0
そんな変なのはpython2に置いてきた
684デフォルトの名無しさん (ワッチョイ 9101-/zPW)
垢版 |
2022/04/28(木) 16:23:24.74ID:7fcK0MfL0
>>682

srt1="xe3"
srt2="x81"
srt3="x82"

です。失礼しました。

とある状況下で、上のような文字列3つを
b'\xe3\x81\x82'
みたいにbytearray化させてデコードしなければならないのですが、
それができず・・・
2022/04/28(木) 16:48:58.45ID:CB8RhFnM0
int(str1[1:], 16)とかで数値にしてbytes([227, 129, 130])
2022/04/28(木) 16:57:16.91ID:7NZvEQkTa
足せば良い
bytes=a+b
2022/04/28(木) 17:01:47.22ID:CB8RhFnM0
bytes.fromhex(str1[1:] + str2[1:] + str3[1:])でもいい
688デフォルトの名無しさん (ワッチョイ 9101-/zPW)
垢版 |
2022/04/28(木) 17:02:14.41ID:7fcK0MfL0
>>685

わあああああああああああ。。。。。いけた・・・・!!!
ありがとうございました。助かりました 涙
2022/04/28(木) 17:04:46.38ID:CB8RhFnM0
ドキュメントをよく読んで自分で調べるんだよ
https://docs.python.org/ja/3/library/stdtypes.html#bytes
690デフォルトの名無しさん (ワッチョイ 9101-/zPW)
垢版 |
2022/04/28(木) 17:06:46.64ID:7fcK0MfL0
>>689

はいっ!勉強します。リンクまでご丁寧にありがとうございます・・・!
2022/04/28(木) 17:15:23.95ID:hPMohmUF0
b'\xe3\x81\x82'

srt1="xe3"
srt2="x81"
srt3="x82"

xe3, x81, x82 など、x だけは付かない。
16進数表示は普通、0x

例えば、Ruby で、
"あ".each_byte { |byte| p byte, byte.to_s( 16 ) }

出力
227, "e3"
129, "81"
130, "82"

単に、10進数の129 は、16進数の81 と言うだけ
2022/04/29(金) 05:19:00.84ID:1KLK/zAN
https://techiedelight.com/compiler/?Whtw
ラジオボタン0-1
ラジオボタン0-2
が選択状態にならないのですがなぜなんでしょう?
マウスオーバーでようやく選択状態になります
2022/04/29(金) 05:20:29.34ID:1KLK/zAN
訂正
ラジオボタン0-0
ラジオボタン0-1
でした >>692
2022/04/29(金) 05:45:28.60ID:1KLK/zAN
さらに関数の中に入れると
ラジオボタン1-0
ラジオボタン1-1
も選択状態が解除されました
https://techiedelight.com/compiler/?BHer
2022/04/29(金) 05:49:44.90ID:9YqnfbQUd
ちんちんシュッ!シュッ!シュッ!
2022/04/29(金) 12:10:15.61ID:PBd2dG0G0
>>694
int_vがGCされてしまうから生存期間が長いどこかに保存しておく必要がある
2022/04/29(金) 12:39:42.91ID:1KLK/zAN
>>696
そうなんですね
コード総書き換えレベルの面倒なことになりそうだったのでpysimpleguiに代えました
ありがとうございました
2022/04/29(金) 12:51:26.18ID:founf1iZ0
GUIっつっても、設定を変更したり入力を指定したり、
みたいなことはconfigファイルとかでやった方が便利で楽なんだよな

スライダーで値をアナログ的に変えたいとか、
モジュールとモジュールをマウスで線で繋ぐと構成がグラフィカルに表示されるとか、
本質的にGUIである必要があるもの以外はむしろGUI面倒なだけ
2022/04/29(金) 14:01:05.14ID:1KLK/zAN
そうなんですよね
私も少なくともpythonではGUIはほとんどやりませんね
API前提でwebアプリ化した方が後々メンテナンスしやすいし
そもそもGUIいるかどうかを後回しにできますしね
今回は友人にちょっとしたツールを作るために配布含めて最適かなと思い手を出しました
dockerでもいいですがやはり極力お手頃な手段となると
ランチャー+pythonかな、と
「これをダブルクリックすれば普通のアプリのように使える」
みたいな
2022/04/30(土) 01:50:41.94ID:64v4nlhT0
あるオブジェクトのプロパティを使いたい時にそのプロパティがNoneだった場合に例外が発生する
この問題を解決する場合どうすればいいか?
プロパティを呼び出す前にifでNoneかチェックすればいいのか?
2022/04/30(土) 02:08:18.23ID:X9Bb5Kqda
例外を拾う
702デフォルトの名無しさん (ワッチョイ df0c-Nh0L)
垢版 |
2022/04/30(土) 07:52:07.66ID:tF/VvMGW0
try~exceptで例外処理を加えるか、if ~ == Noneでチェック。
2022/04/30(土) 08:05:06.08ID:X9Bb5Kqda
駄目条件と比較して抜けるのはpython的にはちょっとダサく見えるかもね
2022/04/30(土) 08:19:30.91ID:RBLOnO9Wa
tryの方が他の隠れたエラーも回避できるからとりあえずいいんじゃね?
例外要因がNone以外なら何らかの爪痕残して動作し続けると。
2022/04/30(土) 08:31:53.31ID:r/ZKILRd0
因みにNone判定は==よりもis使うほうがpythonicらしい
どっちでも同じだけど
2022/04/30(土) 08:54:03.70ID:sUE68ZYJ0
ここだけでも考え方固定しとこうよ
If 〇〇 is Noneで
2022/04/30(土) 10:21:03.74ID:wiaMGPVaH
tensorflowでGPU計算してるんですが、
タスクマネージャー見ると4GBの専用GPUメモリしか使ってくれません
共有GPUメモリのほうが24GBあるのでそっちも使ってほしいのですが、
どうすれば共有のほうも使ってもらえるんでしょうか?
2022/04/30(土) 10:26:35.39ID:3TsZhUq60
UnifiedMemoryが使えるGPUにする。
2022/04/30(土) 10:32:01.67ID:yMKkpkM10
Noneは使わない方向で考えた方がいいらしい
エラー用の戻り値と正常で0や空文字列を返す場合を厳密に区別するのを忘れていつかバグる
2022/04/30(土) 10:51:16.61ID:ymkt03N20
ページロックすればホストのメモリも使えるけど上限があった気がする
2022/04/30(土) 11:14:15.89ID:XZrd/bpX0
tupleあるから成否と返り値返すのは素直に書けるけど
他みたいに標準化されてないから導入するのは躊躇する
クラスにするのもなんか野暮ったいし
2022/04/30(土) 12:02:23.95ID:25RDc2CyM
>>709
それはNoneと比較することの説明じゃなくてNoneを使わずに直接ifの条件に突っ込んだ場合の説明では
713デフォルトの名無しさん (ワッチョイ c72c-u3tg)
垢版 |
2022/04/30(土) 12:08:52.82ID:46aR4GCy0
>>700
例えばpilのimageオブジェクトにn_framesっていうプロパティがあったりなかったりする。通常はない
フォーマットを問わず静止画像だけ対象としたいとき

if hasattr(im, 'n_frames') and im.n_frames == 1:
__対象処理
else:
__非対象処理

などとする
いきなりim.n_framesを触ろうとするとあとりびゅーとゑらーにぬる
2022/04/30(土) 14:03:39.34ID:Vilh5bg10
もしかしてPythonの文字列型って\rも\r\nも内部的に全部\nに変換してしまうのか?
改行コードが混在しているテキストファイルをバイナリで処理しなきゃいけないとか勘弁してほしいんだが
2022/04/30(土) 14:20:31.21ID:XZrd/bpX0
>>714
ioが標準動作がそうなだけでstringは各改行コードを保持する
https://docs.python.org/ja/3/library/io.html
の特にnewlineのあたり読んでみて
2022/04/30(土) 14:33:26.14ID:Vilh5bg10
>>715
とりあえずopen()が良かれと思って悪さしているって事はわかった
thx
717デフォルトの名無しさん
垢版 |
2022/04/30(土) 14:37:18.51ID:FKqPSOQO
class Hoge: pass
def hoge(): pass
ary=["string","",123,0,[1,2,3],[],{"a":1,"b":2},{},None,hoge,Hoge]
for n in ary: print(type(n),type(n).__name__)

こういうので条件分岐するとき何か罠あるかな
718デフォルトの名無しさん
垢版 |
2022/04/30(土) 14:56:33.01ID:FKqPSOQO
class Hoge: pass
def hoge(): pass
ary=["string","",123,0,[1,2,3],[],{"a":1,"b":2},{},None,hoge,Hoge()]
res=["str","str","int","int","list","list","dict","dict","NoneType","function","Hoge"]
print([ (type(a),b,type(a).__name__==b) for a,b in zip(ary,res) if type(a).__name__==b ])

改めてやってみたらclassはtype(Hoge)で<class 'type'>を返した
条件分岐で使う多くの場合はインスタンスの方だった
719デフォルトの名無しさん (ワッチョイ dfb1-mddC)
垢版 |
2022/04/30(土) 20:37:14.85ID:9rE3Ygx80
アンドロイドスマホにtermux入れてpythonダウンロードした。
これでスマホでpython使える。




さてぇ何しようか?w
720デフォルトの名無しさん (ワッチョイ 2701-Ap7g)
垢版 |
2022/05/01(日) 15:28:04.16ID:VZ3UC19t0
質問です。グーグルコラボで、ファイルをアップロード・ダウンロードして
IPYNB ファイル (.ipynb)は無事ダウンロードしたけど
IPYNB ファイル がひらけません。
教えてえらいひと!
2022/05/01(日) 16:46:01.72ID:Qa1o7mjl0
>>720
jupyter notebookをインストールするしかない

そしてjupyterのインストールはanacondaを入れたら一緒に付いてくるが
公式のpythonだけだとpipインストール
2022/05/01(日) 16:49:46.04ID:gTYMk0Yb0
jupyter notebookって便利か?
使いかけたけど思ってたのと違うからやめた
2022/05/01(日) 17:00:52.50ID:9SHXjw1Br
jupyter labの方が見た目がいいよ
なんか設定がおかしいみたいでf文字列閉じるときとかにクオーテーションが3つになってアアアアアアアア(怒)
2022/05/01(日) 18:17:11.39ID:zLsUFjCyH
2022-05-01 18:14:51.136506: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.

これは何を意味していますか?
毎回出るのですが不具合ないので放置してます
2022/05/01(日) 18:24:13.28ID:/FY9XBISr
集合は、シークエンスと考慮されている電流ではありません
しかし未来でわ変化する可能性があります、ですのでそれらを使うことは避けることを考えておいてください
726デフォルトの名無しさん (ワッチョイ bf2d-VGkv)
垢版 |
2022/05/01(日) 19:06:32.91ID:0ggTu6P00
>>720
VSCodeで開ける
727デフォルトの名無しさん (ワッチョイ bf2d-VGkv)
垢版 |
2022/05/01(日) 19:14:34.49ID:0ggTu6P00
>>724
set型(集合)は現状sequence(listとかtensorとか:[i]で中身参照できるヤツ)と見做されないが、これは将来変わる可能性あるから直したほうがいいゾ、と言っている

バージョンアップで不具合が出るかもしれない
2022/05/01(日) 19:19:07.90ID:SE1vC0S9H
>>727
どれのことだかわかんないんですよ
ソースコード貼るわけにもいかないし
セット型を[i]で参照してるってことなのかな?
つまり[i]を使ってるやつの書き方を見直せってこと?
2022/05/01(日) 22:11:45.77ID:S5MUx0uW0
多くの言語では、辞書・集合は順序不定なので、
順序アクセスはできないか、その度に変わる

だから、キー・値のみのインターフェースにしている
2022/05/01(日) 22:24:31.09ID:tQAUcym90
Python3.7以上の辞書なら順序は保証される
2022/05/01(日) 22:31:54.05ID:gTYMk0Yb0
順序が推測できることが脆弱性になってなかったっけ
2022/05/01(日) 23:07:38.45ID:n5o6XFHLa
保証されるけど、集合でそんなもん期待するのはちよっと心が貧しい
2022/05/02(月) 00:17:27.20ID:zZIONtog0
>>731
hashdosと混同してない?
あれ順序の問題じゃないよ
2022/05/02(月) 07:43:06.25ID:QBTh3ay3
プロセスの実行中、
辞書もしくは配列に値を入れて消してを繰り返しするのって
プロセス実行時間が長くなろうがメモリって増えていきませんよね?

items=[1つ100バイト未満の文字列を1000個、数秒置きに入れ替え]
items=[]で初期化したりitems.pop(),item.append()で追加したりで更新
一応24時間実行しっぱで確認してみたのですが、そこまで変わりませんでした
勝手に開放してくれるのでしょうか
2022/05/02(月) 08:20:31.28ID:utX47pRC0
>>734
値が参照されなくなった時点で開放されるはず。実際のタイミングはGC次第?
2022/05/02(月) 08:50:01.10ID:fxcianp60
>>732
それ
たとえ実装が見透けてても
2022/05/02(月) 09:05:28.53ID:QBTh3ay3
>>735
なるほど
なにか明示的に開放するようなコードがあるのかなと思いました
とりあえず実測で問題ないっぽいので現状ヨシとしてあとで調べてみることにします
ありがとうございました
2022/05/02(月) 09:24:15.36ID:8dvAAWOXa
>>732
そもそも保証されるのは辞書で集合は保証されないでしょ
そのためにordered-setパッケージなんてものがあったりするんだし
2022/05/02(月) 10:19:27.63ID:fxcianp60
ordered-setって勝手に大小並ぶんじゃなくてエントリ順維持なんだ
なんかうれしくない
2022/05/02(月) 10:23:15.15ID:2DpQa6LB0
'りんご'と'みかん'はどうやって大小区別するんだ
2022/05/02(月) 11:07:53.86ID:8dvAAWOXa
>>739
そう言うのはSortedSetとかの名前になるかと
https://grantjenks.com/docs/sortedcontainers/
2022/05/02(月) 11:15:17.59ID:gz0EbZLn0
哲学
2022/05/02(月) 11:24:39.08ID:2DpQa6LB0
global order
2022/05/02(月) 11:42:17.68ID:fxcianp60
>>740
そういうケースには適用しない(つかわない)

>>741
別物だったかありがとう
2022/05/02(月) 11:55:01.66ID:2DpQa6LB0
集合は値を持たない辞書

集合の無い言語で、値は要らないけどとりあえず1とか入れてkeyだけで管理する、
みたいなことをやることが結構あるので、値なし版も用意された
存在しないkeyを指定するとエラーになるめんどくささは辞書と同じ
2022/05/02(月) 12:12:58.18ID:8dvAAWOXa
>>740
そういうのは文字コード順なり比較関数を与えるなりすればいいだけかと
747デフォルトの名無しさん (ワッチョイ dff7-TUWr)
垢版 |
2022/05/02(月) 13:07:09.36ID:ZthOcqCz0
在日は自分に不都合なことは
全て差別と言う。

だったら半島へ帰れよクズども!
極悪非道の在日どもは皆殺しにすべき!
2022/05/02(月) 17:26:08.70ID:t8liBSRX0
クズなネトウヨには帰る場所もない
殺処分してやるのがせめてもの慈悲
2022/05/02(月) 20:07:27.95ID:tq0eJ7pv0
日本人が韓国に住みながら韓国マジクソ、韓国人死ねばいいのにって言ってたらお前なんて言うの?
750デフォルトの名無しさん (ワッチョイ 2701-I+xZ)
垢版 |
2022/05/02(月) 21:20:52.22ID:srM4fb0r0
>>749
「スレタイ読めよ」って言うだろうね。
2022/05/02(月) 21:24:19.62ID:wJauN5Uz0
>>750
一票❤
2022/05/03(火) 02:00:07.03ID:P2nTfFou0
cssセレクターでspanタグに囲まれているかどうかを問わないってどうやって指定すんの?

最悪xpathでもいいけど
2022/05/03(火) 03:46:30.15ID:P2nTfFou0
テーブルのスクレイピングをしててtrをforループで回しながらその中のtdの中にあるbr入りのtextを取りたいけどそのtrのうちの一つだけtdの中が直接textじゃなくてspan > dになってて、そのdタグの中にtextがある

それでどんなコードを書くかで詰んでる
beautifusoup4
誰か分かる?
2022/05/03(火) 05:03:35.73ID:UnZpzFGu0
tr > td で、ループ処理する

そこで、もし、tr > td が、span > div を内包していたら、そこからテキストを取得する
2022/05/03(火) 09:18:26.12ID:IxHOa5QLH
俺はいつもテキスト取得からfind位置取得で切り出しだなあ
2022/05/03(火) 11:52:36.28ID:P2nTfFou0
ごめん分からなかったんでtryでcss selectorで'td b'検索してAttributeError出たらexceptで単に'td'で検索かけるようにしたわ

それで得られたTagオブジェクトに.get_text(',').strip(',')してようするに</br>で区切ってlistにした

例外処理の多用は良くないと聞いたような気がするけどまぁいいよね
2022/05/03(火) 12:09:25.14ID:PFPUtHlZ0
>>753
brを改行にしたいということなら手動で改行入れる必要がある(pタグとかも)
for x in soup.select('tr td'):
 for node in x.select('br'):
 node.insert_before('\n')
 print(x.text.strip())

brタグが入ったままのinnerHTMLが欲しいのなら
for x in soup.select('tr td:not(:has(span d)), tr td span d'):
  print(x.decode_contents())
2022/05/03(火) 12:18:27.54ID:2dvea2Ox0
テーブルはちゃんと規則通りに書かれてることが多いし、テーブルの中身にしか興味ないから、
いきなりpandasにしてもうまくいく

問題はずらずら書かれてるケースで、特徴的なタグを見つけようにもうまく行かない
人間があれこれ考えて駄目なんだから何かのモジュールで対応できる訳もない
専用にきっちり書いてもマイナーチェンジされるとメンテ必要になるし、
余分に出力される程度にしておいて人間の判断を入れる、に倒す
2022/05/03(火) 12:59:02.27ID:P2nTfFou0
>>757
なるほどdecode_contents()で内側のhtmlをstring型で取れるのか
そしてhasとかnotや,の使い方も学べた
これで文字列処理するのが簡単で良さそうだね

brは改行にしたいわけじゃなくて単にbr区切りで関係性の薄い情報が書かれていたから前後で分裂させたかっただけ

最初の例が難しいな
クラスオブジェクトがミュータブルだからnodeに対しての操作がxにも影響を及ぼしてる?
2022/05/03(火) 15:07:34.95ID:PFPUtHlZ0
>>759
ツリーを変更するメソッドは元のBeautifulSoupオブジェクト(soup)が直接変更される
xもsoupオブジェクトへの参照なので変更が反映される
反映したくなければ部分的にコピーするか新しくsoupオブジェクトを生成するか

↓インデントが間違ってたので修正
for x in soup.select('tr td'):
 for node in x.select('br'):
  node.insert_before('\n')
 print(x.text.strip())
761デフォルトの名無しさん (JP 0Hcf-PwpY)
垢版 |
2022/05/04(水) 10:23:15.33ID:pkoGSX5+H
質問です。

macOSを使っています・

pythonのバージョンを調べるために、
「python -v」
を入力すると
/Users/xxxxxxx/.pyenv/shims/python: line 8: /usr/local/opt/pyenv/bin/pyenv: No such file or directory
と表示されます。

それで
「type python」
を入力すると
python is /Users/xxxxxxx/.pyenv/shims/python
と表示されますので、pythonは在ります。

なぜ、「python -v」が
No such file or directory
になるのでしょうか?

どうすれば良いのでしょうか?
2022/05/04(水) 10:46:01.03ID:8Q1g3mAXD
/usr/local/opt/pyenv/bin/pyenv
がないから
2022/05/04(水) 11:12:58.06ID:GAB8HZoP0
2^17179869183って計算できる?
2022/05/04(水) 11:39:04.52ID:KgzdHtkKa
>>763
マルチすんな、ハゲ
2022/05/04(水) 14:53:35.01ID:272uYDtq
エンドポイントを考えるとき
(1)http://hogehoge.com/items

(2)http://hogehoge.com/items/
末尾のスラッシュ有り無しどちらでもいいと思ってた

けどパスパラメータにパス(例/path/my/dir)を与えたい(こんなケースあるのかは知らないが)場合
(2)は
http://hogehoge.com/items//path/my/dir
(1)は
http://hogehoge.com/items/path/my/dir
パースできたとしても視認性落ちる

なので(2)の"/items/"が正しいとすると
http://hogehoge.com
のみのurlであってもスラッシュで閉じた方がいいのか
webフレームワーク側とかでスラッシュ有りに統一してた場合に野暮になりそうな気が
2022/05/04(水) 15:49:59.91ID:h7+OiRil0
>>765考え方がおかしい
普通urlに部分パスを追加する時はパラメータが/で始まるならルートからの絶対パス、そうでなければカレントの相対パスって意図になる
../path~みたいな親を遡る相対パスが与えられた場合も考慮すると文字列の追加に留まらずパスを正規化せざるを得ない
視認性とかの問題ではない
2022/05/04(水) 16:30:47.72ID:272uYDtq
>>766
部分パスがちょっとわからないからあれだけど
ルーティングによるのでは?と思う

例えばクエリパラメータで
http://hogehoge.com/items?path=/path/my/dir
とした場合は
http://hogehoge.com/items/?path=/path/my/dir
でも問題ないけどパスパラメータ>>765だと
どっち?ってならないかな(もちろんドキュメントに準じればいいだけだが。)
そういうことではなくて?
2022/05/04(水) 20:50:47.03ID:mmwxiGlBM
柏野雄太は名を挙げたね
2022/05/04(水) 23:36:56.20ID:AJMM67e40
>>761
漏れは、Windows 10, WSL2, Ubuntu 18.04 に、
日本人が作った、多言語バージョンマネージャーのanyenv で、
ruby, node.js を入れているけど、

ruby -v
ruby 2.6.6

node -v
v14.18.1

which ruby
/home/ユーザー名/.anyenv/envs/rbenv/shims/ruby

which node
/home/ユーザー名/.anyenv/envs/nodenv/shims/node

anyenv と同様のツールに、asdf もある
2022/05/04(水) 23:39:37.70ID:8rho1RVna
2**21 = 2**3 * 2**9 * 2**9
2022/05/05(木) 02:32:35.30ID:FeY8iOM40
高度IT人材、富士通は最大年収3500万円へ

AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へ

【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材

来年度から副業解禁 人材多様化へ―大同生命次期社長

第一生命HD、副業解禁 約1万5000人対象

第一生命HD、副業解禁 1万5000人対象―大手生保初

IHI、国内8000人の副業解禁 重厚長大企業も転機

IHI、社外兼業を解禁 社内副業もルール化
2022/05/05(木) 13:57:31.01ID:oa9SITA90
sorted(list, key=lambda x: x.val)

sorted(list, key=attrgetter('val'))
と書いた方が見やすいけど、importが要るのがなあ
2022/05/05(木) 20:34:57.56ID:Bc4kCDNA
行が増えるのが嫌って感じではないなら
普通にlambda x: x.valの部分を置き換えてしまえばいいのでは

import pandas as pd
class X:
 def __init__(self,val):
  self.x=11
  self.val=val

_getattr=lambda n:lambda x:getattr(x,n)

ary=[X(6),X(3),X(2),X(7)]
print([ n.val for n in ary ])
ary=sorted(ary, key=_getattr('val'))
print([ n.val for n in ary ])

#[6, 3, 2, 7]
#[2, 3, 6, 7]
2022/05/05(木) 20:40:43.19ID:oa9SITA90
lambdaは強力です
lambdaを使うとこんなこともできる

的な記事はよく見るけど、結局lambda以外の方法の方が綺麗で、
lambdaは苦し紛れ感がある
2022/05/05(木) 21:05:02.85ID:Rtfrs1Kx0
lambdaでちょっと書くだけでもPythonicじゃなくなる
無いものと扱った方がシンプル
基本どこでもdefは書けるから困らんし
2022/05/05(木) 21:18:45.73ID:oa9SITA90
mapとかfilterも使わずに済ませた方がいいことが多い
折角パワフルそうなものがあるのに、と勿体ない気もするけど、
存在を忘れた方がいいかもしれない
2022/05/05(木) 23:03:05.31ID:Nv9wUOG5H
ある計算の結果をarr[0]から順番にarr[i]に入れていきます。
計算結果が重複していたら入れません。
iは数千万以上まで行きます。
計算を進めていくと、重複判定にものすごく時間がかかってきます。
高速でできるPythonモジュールみたいなのはありますか?
2022/05/05(木) 23:04:55.42ID:cat7h5UO0
数千万を超えるデータ数なら、DB使うのが楽だろう
2022/05/05(木) 23:09:30.99ID:/WvxkOMY0
とりあえずsetに入れてやってみて
だめならよく考えないと
2022/05/05(木) 23:12:35.56ID:oa9SITA90
いちいち判定せずに重複してても全部入れて、
重複判定は最後にまとめてやる
2022/05/05(木) 23:13:57.78ID:4AFuDqVB0
巨大データだと
まずはメモリの使用状況を調べないと
メモリを使い切ってスワッピングを始めると
言語に関係なく遅くなる
2022/05/05(木) 23:16:40.62ID:oa9SITA90
numpy.unique が使えれば、C言語の速度で計算できる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況