【まず1嫁】くだすれPython(超初心者用) その58

■ このスレッドは過去ログ倉庫に格納されています
2022/09/07(水) 10:33:53.50ID:RjZl78eW
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがある(この板にあるとは限らない)ので、そっち池。
「Ruby」「Rails」「某言語では」「クソチョンw」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

★エラーを解決したい場合★は、
  表示されたエラーの全文(勝手に省略やスクショうp等の横着クソ行為禁止)と、
  実行環境(Pythonのバージョン・OSとIDEの種類およびバージョン)をシッカリ書くこと。

Pythonの★ソースコードをそのまま5ちゃんに貼るとインデントが崩れてチヌ★
【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】掲示板の仕様なので、
プログラム文は↓等の、いわゆるコードうp用サイトに貼ってこいください。
ttps://techiedelight.com/compiler/  Run Code機能あり。
ttp://ideone.com/      デフォ設定はC用のため、言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

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

〇前スレ〇
【まず1嫁】くだすれPython(超初心者用) その57
https://mevius.5ch.net/test/read.cgi/tech/1653225908/

次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
2023/03/18(土) 22:48:53.68ID:krkKeZ41
ありがとうございます
ChatGPTを使って進めているのですが、これだけ理解できずこちらで聞いてみました。
自動化は皆がやっていることなのですね。参考になりました
2023/03/19(日) 10:17:11.46ID:fPDrKYk/
jupyter使ってる人まだいたんか
2023/03/19(日) 10:30:43.41ID:0QGYVmFU
ならスクラッチパッド的に試行錯誤したいとき何つかってるの?
vscode用拡張をMS自身が用意してくるほどにはみんな使ってるよ
2023/03/19(日) 10:37:00.56ID:fPDrKYk/
みんな(ω)
2023/03/19(日) 10:56:34.11ID:0QGYVmFU
そんな綾みたいなとこ着目されてもな
2023/03/19(日) 11:49:17.50ID:FxEAo0SM
vscodeで#%%ってやったほうが楽だな
698デフォルトの名無しさん
垢版 |
2023/03/19(日) 14:58:11.07ID:TvHFRsn1
seleniumとかはjupyterが適してるんじゃない?
毎回初めの画面遷移から確認するのだるいじゃん
あとpandasでちゃちゃっとデータ整形するのもjupyterなしではやってられない。
まだjupyterなんか使ってるの、という人は上記のようなケースではどうやって書いてるの?disじゃなくてよりいい方法があるなら乗り換えるから知りたい
2023/03/19(日) 23:09:14.05ID:fPCD3IEI
USBにはデバイスとホストがあるようなのですが、PC1からPC2のハードディスクのデータにアクセスして
PC1にコピーするには何から考えたらいいでしょうか?

PC2はデバイスポートを持っていてPC1をホストとして接続が出来そうに思うのですが、方法がわかりません。
2023/03/19(日) 23:21:12.94ID:3QN5+OXV
>>699
ファイルのコピー程度であれば、USBやpysmb等を扱うまでもなく、
OSの機能を使ってPC2のハードディスクを共有し、
PC1からそのPC2の共有ディスクをopenし読み込みPC1に書き込むむ、で
よいのでないのかな
2023/03/19(日) 23:23:21.26ID:3QN5+OXV
と思ったが、Linux同士ならできるがWindowsだと無理だったなスマソ
2023/03/19(日) 23:25:46.08ID:fPCD3IEI
>>700
ありがとうございます。
それはLAN経由という事ですか?
PC2はLANに接続できない(禁止されている)ので出来ればUSBでデータを抜き出したいのです。
2023/03/19(日) 23:47:36.63ID:0QGYVmFU
PC2でUSBデバイスとなるプログラムを動作させれば実現できるし市販品もあるが
それもれっきとしたLANなのでEthernetじゃないからというのは詭弁
704デフォルトの名無しさん
垢版 |
2023/03/20(月) 00:51:24.19ID:m4NlOkWq
馬鹿の書くLANの意味は何だろうな
馬鹿だから社内ネットワークのことだろうな
2023/03/20(月) 01:12:50.74ID:Jy+RyUMo
仕事の質問を5chでするって時点で
セキュリティ的に何か重大な問題を抱えてそうな予感
2023/03/20(月) 17:05:12.75ID:ELt2LlTE
github actionsでpipのキャッシュを使うようにしてパッケージインストールするようにワークフロー書いたんだけど、パッケージのインストールが早くならない

pipのキャッシュってパッケージのファイルが置いてあるからパッケージのインストールが早くなるという認識でええんよね(´・ω・`)
2023/03/20(月) 17:36:10.34ID:REuZd10D
ダウンロードサイズが大きくなくて効果が薄いか
pathの指定がまちがってんじゃない?
作業中keyを変えてないなら古いキャッシュみてるとかね
よくわかってないなら野良のAction使うかコード参考してみ
2023/03/23(木) 21:22:02.61ID:SE5S7lnM
Threadの仕様がゴミみたいなんだけど、ほかの言語みたいに同じコードを個別に動かすこと出来ないの?
2023/03/23(木) 22:26:36.40ID:mBtK7sgT
>>708
multiprocessingモジュール使えば出来る。
2023/03/23(木) 22:30:49.81ID:22DIkEIq
同じコードを個別に動せないって意味がわからん
2023/03/23(木) 22:49:52.39ID:fPsGtrD2
>>709
句点らしからぬ珍答

>>708
ほとんどのモジュールがGILに引っかかって意味ないから
できる構造になってない
もし非同期処理書きたいならasyncioをつかう
2023/03/23(木) 23:23:46.89ID:mBtK7sgT
>>711
並行処理(concurrent)なのか、並列処理(parallel)なのかわからんけど、parallelの方はmultiprocessingでそんな問題ないけど。
ワーカープロセス作ってコア数で殴ってjoinとか普通にできるよ。
真剣に高速化したいならPythonで書くなみたいなツッコミはともかく。
2023/03/26(日) 14:34:46.68ID:zG19viAn
--------A.py-----------
str = 'Hello, world'
----------------------------
--------B.py-----------
bb=1
import A

str = A.str
print(str)
----------------------------

py B.pyで実行

pythonで変数を別ファイルに渡すでググるとだいたい上のようなサンプルが出てくるけど
逆にA.pyでB.pyで定義した変数て読める?
714デフォルトの名無しさん
垢版 |
2023/03/26(日) 14:57:31.88ID:7xq4orUh
循環参照は悪手
2023/03/26(日) 15:39:06.04ID:7zNZ7K4O
一般的には出来ないできないから関数の引数で渡す
2023/03/26(日) 18:40:13.08ID:nC5PY7jY
または、共通して使いたい変数をまとめたモジュールを作るとかね。settings.pyとかconstants.pyとか
717デフォルトの名無しさん
垢版 |
2023/04/10(月) 05:03:50.18ID:oMIHCwe3
30代Pythonクソチョン男は強姦魔の犯罪者です!
あなたの近くにいます!
父母と祖父母の戸籍謄本を提出させましょう!
718デフォルトの名無しさん
垢版 |
2023/04/14(金) 23:44:11.31ID:VnjII6A1
global付けなくても関数内でグローバル変数使えるのなんとかならないんかな
原因つかめなくて1時間ハマった…
719デフォルトの名無しさん
垢版 |
2023/04/15(土) 10:18:39.08ID:nVVXe4ml
関数の先頭で初期値代入する習慣にしたら良い
2023/04/16(日) 12:45:43.87ID:Nhse/SBr
win11 VScodeです
同じraw文字列を記述してるつもりなのですが、rとRで色が変わるのは何故でしょうか?
https://i.imgur.com/D70ljpl.png
2023/04/16(日) 13:14:48.37ID:plaQIkvn
>>720
大文字は定数扱いになるんじゃない?
Pythonあんまり関係ないけど
2023/04/16(日) 13:43:14.65ID:GoCdOzaX
どっちかというと10行目の表示が変だね。
調べてみると結構昔から指摘されている問題だけど放置されているっぽい。
https://github.com/microsoft/vscode-python/issues/13702
https://github.com/MagicStack/MagicPython/issues/114
2023/04/18(火) 12:24:38.88ID:Tkea6IlR
text = input('入力しろ')
if text.isdigit():
print(100 - int(text))

2行目のisdigitで整数かどうか確認してるのに?
なぜ3行目のintでも整数化するの?
すでに整数なんじゃないの?
2023/04/18(火) 13:55:29.59ID:edaLmg81
>>723
https://docs.python.org/ja/3/library/stdtypes.html#str.isdigit
isdigitを公式以外のどこで知ったのかわからんが
文字列が数字のみで構成されてるか知るだけで
textを整数化する動作はない
2023/04/18(火) 20:03:41.13ID:+ox+01C9
int(float(text))
の方が良いらしい
2023/04/20(木) 22:18:59.77ID:ET4Z2F1o
指定したフォルダのdatファイル全文検索してimgurの文字を抽出して、重複廃除して、画像や動画を全てローカルに保存するpythonファイル誰か作ってくださる神はおられませんか?

imgurの無慈悲な全画像削除反乱に対抗してくださる神様お願いします
2023/04/20(木) 22:33:14.07ID:hvVHDaDc
乞食に使われてやる道具はいない
2023/04/20(木) 22:44:34.32ID:QMVhjkAJ
コーディングが目的じゃないなら
pg/ag/ggrepあたりで抽出してwgetやcurlへ渡せば済む話
2023/04/21(金) 07:19:41.81ID:3eIRG5Z0
>>726みたいなのは、今はやりのCatGPTに投げると即興でコード書いてくれるんじゃね
2023/04/21(金) 08:01:34.78ID:AzzR2H4I
>>729
機嫌が悪いみたいだ
https://i.imgur.com/gsrPM3f.jpg
731デフォルトの名無しさん
垢版 |
2023/04/21(金) 09:36:04.13ID:DaG7i/DR
>>728
重複排除は?
732デフォルトの名無しさん
垢版 |
2023/04/23(日) 00:47:52.29ID:6r8Okd7u
動的計画法の実装で
dp[n+1] = dp[n]
じゃなくて
dp[n]=dp[n-1]
って書いてる人が多いのなぜ?

漸化式ってa(n+1)=a(n)+bで習うじゃん普通…
733デフォルトの名無しさん
垢版 |
2023/04/23(日) 00:50:21.76ID:5wdUK5/t
>>726
そういうの数万円の低予算で請け負ってくれる人いるから
サイトから依頼しましょう
2023/04/23(日) 01:11:58.08ID:X2+aRqhz
>>732
本質的に同一視できるし気にせんけど
関数にした場合に仮引数で n+1 と書けないから
2023/04/26(水) 10:05:12.87ID:N7+hGpB4
(n+1)^2 = n^2 + 2n + 1
2023/04/27(木) 19:48:04.07ID:R0Un3xzL
タブ区切りのテキストファイルをpandasでエクセル(xlsx)出力しても、
エクセルやopenpyではタブ区切りされずに1列目に全データが表示されてしまいます。
各列のセルに区切るようにするにはどうすればよいでしょうか。
737chatgpt
垢版 |
2023/04/27(木) 21:02:58.14ID:DRjZk9XF
import pandas as pd

# タブ区切りのテキストファイルを読み込み
df = pd.read_csv('input.txt', sep='\t')

# Excelファイルに出力
df.to_excel('output.xlsx', index=False)
2023/04/27(木) 21:25:48.49ID:4Kuw89oL
>>736
ChatGPT(bing chatではない)使ってないならそういう質問そのまま投げてみなよ
理由もコードもその解説も全部出してくれるよ
2023/04/27(木) 21:51:55.98ID:SJ3bN40w
>>737
実際に吐き出されたxlsxをエクセルで開いたらタブで区切られませんでした。
既に試した方法ではあるのですが、やはり区切られませんでした。

# タブ区切りのテキストファイルを読み込み
df = pd.read_csv('input.txt', sep='\t')

# Excelファイルに出力
df.to_excel('output.xlsx', index=False)
2023/04/27(木) 22:51:52.06ID:wOi8WXAj
本当にタブ区切りなのか?
print(df)でちゃんとカラム分かれてるん?
741デフォルトの名無しさん
垢版 |
2023/04/28(金) 01:13:15.30ID:EFykGfO7
ネット上で探すとselenium経由でスクレイピングして
パーサーにbeautiful soup(bs)って流れが多いんですが
bs単体でgetしない理由なんなんですか?

ってここまで書いて思ったけどjavascriptの扱いが問題あるか
2023/04/28(金) 02:10:20.81ID:0Z+HC9sf
それも大きいし
巡回部分のコードをある程度自動生成できる
2023/04/28(金) 07:10:16.28ID:EQuQ1pVF
ログイン認証とか簡単に出来るしね
2023/04/28(金) 07:18:11.57ID:EQuQ1pVF
>>739
dataframeにどう格納されてるか確認してみたら?
2023/04/28(金) 08:22:44.73ID:xmj1SHMq
>>741
そういう動的な要素の部分もあるかもだけど自分はjavascriptに格納された変数なんかもbsで抽出してなるべくselenium使わない方法を考える
どうしてもselenium使うとこはakamaiなんかのBOT対策入れてるとことかかな。
sensor_dataの生成部分となは再現かなり難しい
2023/04/28(金) 13:54:58.70ID:sll+3S7w
「text = ''」 これってどういう意味?
また、これをネットで調べようとしたらどうしたら良いですか?
下の2行目にあるやつです

from pathlib import Path
text = ''
current = Path()
2023/04/28(金) 13:58:31.42ID:SUO6mZHm
変数「text」に空の文字列を代入しているだけ。
2023/04/28(金) 14:30:38.14ID:sll+3S7w
ありがたい
助かった
2023/04/28(金) 23:17:29.92ID:fezLcHII
ダブルクオーテーション1つかと思ったw
2023/04/28(金) 23:35:15.54ID:3iojin3R
その手のはchatgptが良く答えてくれる
751chatgpt
垢版 |
2023/04/29(土) 09:57:23.90ID:ueoxn1ZD
「text = ''」は、Pythonプログラムの中で変数「text」を定義し、それを空の文字列で初期化していることを意味しています。

つまり、プログラムの中で「text」という変数を使用するために、最初に空の文字列で初期化する必要がある場合に使われます。

ネットで調べる場合は、Pythonの「text = ''」の意味を検索エンジンで検索してみることができます。また、Pythonのドキュメントやチュートリアルなどの公式リソースを参照することもできます。
2023/04/29(土) 10:15:52.63ID:ugMaX53P
>また、Pythonのドキュメントやチュートリアルなどの公式リソースを参照することもできます。
これ次に投げたら該当箇所おしえてくれるん?
2023/04/29(土) 10:29:35.83ID:W487fgCq
教えてくれるよ
2023/04/29(土) 13:33:25.01ID:APvoDMhe
ChatGPTはPythonの学習にかなり有用だよね
グーグルだと質の低い個人ブログとかたくさん引っかかって
その中から自分で厳選しなきゃならん
一発でこうした簡潔な進言をしてくれるとかなり助かる
755デフォルトの名無しさん
垢版 |
2023/04/29(土) 13:36:06.66ID:5A3xKPb3
div div div div li div divみたいな時に
目的のattr見つけるの骨折れるんだけど
サクッと見つけてfindallでぶっこ抜くテクニックみたいなのある?
756デフォルトの名無しさん
垢版 |
2023/04/29(土) 13:41:55.87ID:0iY2a6mx
>>754
書き方分からないときにめっちゃ参考になるわ
摘まんで取り込む
2023/04/29(土) 13:49:38.17ID:Y0BFOI0c
>>755
まんま、div li div[attr] みたいな曖昧なセレクタで検索すれば良くない?
2023/04/29(土) 15:19:01.46ID:cKY7lrd2
https://www.youtube.com/watch?v=VRFfAeW30qE

youtubeでスクレイピングを勉強していたのですがid取得が上手くいかず、ずっと調べてたら
Seleniumのバージョンが4になってからfind_element_by_idのメソッドが使えないことが原因でした。

ほかに似たような注意点がありますか?あと今学ぶならどこのサイトがいいかよろしければ教えてください。
ChatGPTにもしつこく聞いて2週間悩んでいてやっと解決・・・
759デフォルトの名無しさん
垢版 |
2023/04/30(日) 09:45:37.60ID:/QlbhOQI
find_hoge(By.hoge, txt)
に変わっただけでは?
2023/04/30(日) 12:31:41.20ID:D8hC5aa9
https://www.selenium.dev/selenium/docs/api/py/
公式が用意してる文書は簡素だから
https://selenium-python.readthedocs.io/
非公式だけどこっち読んでもいいかもね
残念ながらJapaneseの先は古かったので日本語ほしけりゃ翻訳で
761デフォルトの名無しさん
垢版 |
2023/04/30(日) 14:29:20.31ID:/QlbhOQI
hrefが何度やっても取れなくて詰んだかと思ってたら
html.parserのせいだったわ
使用非推奨だろこれ…
762デフォルトの名無しさん
垢版 |
2023/05/01(月) 07:38:48.00ID:9Z+6zocL
おはようございます
pythonの組み込み関数でsum()関数を調べたのですが
公式ドキュメントを見てみました。そしたら
sum(iterable, /, start=0)となっているのですが
真ん中の/って何なんでしょうか
sum([1,2,3], 0)の呼び出しは理解できます
sum([1,2,3], /, 0)と呼び出すとエラーになります
(第二引数に初期値と解説されたりするのですが)
/は第二引数だと思うのですが一体どうなってるのでしょうか
教えてください
763デフォルトの名無しさん
垢版 |
2023/05/01(月) 10:13:45.70ID:RRWbl8de
>>762
スラッシュより前は位置引数
後ろはキーワード引数
2023/05/01(月) 10:17:42.58ID:n9fbf1g0
https://docs.python.org/ja/3/tutorial/controlflow.html#special-parameters
765762
垢版 |
2023/05/01(月) 10:58:48.22ID:9Z+6zocL
>>763
>>764
ご指摘ありがとうございます
4.8.3. 特殊なパラメータ
にたどり着きました

市販の入門書、解説書には書いてないことでした
ここで質問の回答いただけなかったら一生わからずじまいでした
ありがとうございます
2023/05/01(月) 18:12:03.63ID:qUDblxkj
interaction.py でfooが正常に動いてbarがデコレータの処理に失敗する理由がわかりません…
https://techiedelight.com/compiler/?0D2o

「そんなライブラリ知らん」って方が多いと思うので、関数定義箇所によるの挙動の違いだけでも解説してもらえるとありがたいです
main() の中で関数定義してるだけでそんなに変わるものなんでしょうか
2023/05/02(火) 03:27:53.97ID:x60s3ooH
>>726
Ruby なら、
https://paiza.io/projects/_Vy4rDrV3B2Z_5P7BZGtpw

出力
https://i.imgur.com/a.jpg
https://i.imgur.com/b.jpg

この行区切りのURL をファイルに保存したら、
wget, curl で、このリストを使って、
適当にwait しながら、ダウンロードする

もちろん、Rubyのopen-uri のopen( ) でもダウンロードできる
768デフォルトの名無しさん
垢版 |
2023/05/02(火) 21:18:23.32ID:Iiod3Ljm
Anacondaからselenium使えないし
通常環境だとNumba使えないし
どうしたらいいんだこれ
とりあえず一時ファイル作って切り替えてるけど

Pypyとかなら同時併用できるの?
769デフォルトの名無しさん
垢版 |
2023/05/05(金) 14:23:40.23ID:0Z/2QqWv
SELECT YEAR
すると2018って出るし
print(df['YEAR'])
すると2018って出るのに

df = pd.read_sql_query(query, conn)で持ってきたデータフレームに
df.drop(['YEAR'])すると"['YEAR'] not found in axis"っていわれてはげそう
XY軸間違ってんのかと思って.to_frame().Tしてもダメだった
これpandas側ののバグですよね?どうしたら回避できるんですか?
770デフォルトの名無しさん
垢版 |
2023/05/05(金) 14:36:51.96ID:TpSD3ns8
>>769
どう考えても君のバグだよw
dropのリファレンス読みなよ
2023/05/05(金) 21:03:49.07ID:6BXdBTej
windows10でアプリの自動ログインをしたいのですが色々あって悩んでいます。
PyAutoGUIとPower Automate Desktopならどちらがおすすめですか?
2023/05/05(金) 21:49:31.15ID:Zzp0Xs7d
二択なら両方試して使いやすい方にしたら?
そのアプリへの入力がSendKeysやWMで済むのか
もっと高度でないとダメなのかも不明だし
2023/05/05(金) 22:23:25.29ID:6BXdBTej
>>772
ありがとうございます。
取り敢えず自分で動かしてみます。
774デフォルトの名無しさん
垢版 |
2023/05/06(土) 16:10:29.30ID:HrELFaNS
python+pulpで勤務シフト作成の自動化をしようと思っています。
MDS = [(m, d, s) for m in range(len(MEMBERS)) for d in DAYS for s in range(len(SHIFTS))]
x = pulp.LpVariable.dicts("x", MDS, cat="Binary")
で0-1意思決定変数xを定義し、メンバーmが日dにシフトsを取ることをx[m,d,s]=1、取らないことをx[m,d,s]=0と表現します。
あるシフトを取った時はそのメンバーはその日に他のシフトは取れません。
例えばメンバー1が2日にシフト0の時はx[1,2,0] = 1,x[1,2,1]=0,x[1,2,2]=0となります。

「どの連続する2日を見てもメンバーm=1,2,3,4のうちの誰かが2日連続でシフト0でないシフトを取っている」という事を制約条件に加えたいです。
for d in DAYS[1:]:
prob += pulp.lpDot(([1-x[1,d-1,0],1-x[2,d-1,0],1-x[3,d-1,0],1-x[4,d-1,0]]),([1-x[1,d,0],1-x[2,d,0],1-x[3,d,0],1-x[4,d,0]]))>= 1
と書いてみたのですが、Non-constant expressions cannot be multiplied.のエラーが出ました。
どのように書けば良いでしょうか。
2023/05/08(月) 12:47:19.21ID:XJG/CI4k
WindowsでJupyterNotebookを使って大きいデータを扱うと終了後にファイル容量が増えていくんだけど、
作業フォルダのcheckpointsやhistory.sqlite以外に勝手に作成されているファイルって有りますか?
2023/05/09(火) 19:18:05.70ID:kL42aQrW
bytesとstringの違いってなんですか?
bytesからdecodeできるのがstring?
2023/05/09(火) 20:03:05.58ID:BqWcz4ac
https://docs.python.org/ja/3/library/stdtypes.html
まず読んで
bytesはディスクや通信など外部データのバイト列そのもの(正確にはバイト列を包んだもの)
strは文字列、高次元の情報なのでPython外に直接持ち出せないため符号化する必要がある
2023/05/10(水) 06:12:33.22ID:zmtoAUL0
コンピュータ技術の根源だから実は難しいんよね
自分も何十年もこの世界にいるけど
いまだにテキストファイルとバイナリファイルの違いが説明できないし
779デフォルトの名無しさん
垢版 |
2023/05/10(水) 17:11:24.88ID:5Rwc5Tpt
初学者なんだが[apple, banana, nut, mangosteen]というリストを文字の少ない順に並び変えてリストを再構築せよっていう問題
習ったことをあれやこれやで3時間くらいかけて作ったのがこれ

https://ideone.com/e5Zk2C
解答みて唖然としたね
いやぁなんか相当遠回りな損した気分
780デフォルトの名無しさん
垢版 |
2023/05/10(水) 18:13:02.07ID:3PLbEJS0
>>779
そういう経験大事よ
次から思考回路変わるから
781デフォルトの名無しさん
垢版 |
2023/05/10(水) 18:38:05.70ID:A8RgUVJx
>>776
その理解で間違ってないよ
バイト列を特定のエンコーディング(符号演サ方式)を使って文字列として扱うための型がstringやstrと呼ばれるもの
pythonのstrの内部的に持ってるのはUnicodeのcode pointで表示したり保存したりするときに指定のエンコーディングを使う(デフォルトはUTF-8)
2023/05/10(水) 19:32:28.22ID:vO85M+b+
>>779
俺氏も似たり寄ったりだわ
L = ['apple', 'banana', 'nut', 'mangosteen']

# 文字数 M = [5, 6, 3, 10]
M = [len(n) for n in L]

# 配列 ML = [[5, 'apple'], [6, 'banana'], [3, 'nut'], [10 'mangosteen']]
ML = [[M[i], L[i]] for i in range(len(L))]

# 文字数でソート S = [[3, 'nut'], [5, 'apple'], [6, 'banana'], [10 'mangosteen']]
S = sorted(ML)

# リストから要素を抽出して新しいリストを作成
result = [n[1] for n in S]

print(result)
783デフォルトの名無しさん
垢版 |
2023/05/10(水) 20:50:02.82ID:yeAvKW24
単純にソートすればええやんと思っちゃうんだが
ソートに関数を渡すという感覚を持ち合わせてないということなのかな?
2023/05/10(水) 20:51:09.20ID:oYBR9wSW
>>777
>>781
ありがとうございます
2023/05/10(水) 21:07:58.85ID:hwwKafRF
ソートを使うと計算量がn^2になってしまうから
配列のインデックスを文字列長にして
配列の内容をリンクドリストにして
追加しておくようにすれば
計算量が2nで済むけど
プログラミングは誰かに任せる
2023/05/10(水) 21:42:57.53ID:VnJnYO4m
>>785
rubyなら
a = ['apple', 'banana', 'nut', 'mangosteen', 'bbb']
p a.each_with_object([]) {|x, a| (a[x.size] ||= []) << x}.compact.flatten

["nut", "bbb", "apple", "banana", "mangosteen"]
787デフォルトの名無しさん
垢版 |
2023/05/10(水) 21:47:38.00ID:Csgt+W1x
>>785
timsortが要素数が少ないときにn^2になるinsertion sortを使うのはその方がn log nのmerge sortより速いから

それにそのアルゴリズムは実速度が遅くなることを抜きにしても文字列長をインデックスにした配列の長さmをオーダーに入れる必要がある
788デフォルトの名無しさん
垢版 |
2023/05/11(木) 02:49:11.76ID:IsUfqIsW
jypyterで再起動するごとにdataframeの列が上下ひっくり返る謎現象に悩んでたけど
通常のコードにしたら謎に解決した
意味わからん
2023/05/11(木) 05:12:37.30ID:BtuDU+NS
ソートのキーに文字数が指定できるという衝撃
実務でも使うのかな?
2023/05/11(木) 08:44:28.44ID:rmkBIaEM
>>789
文面にあるほどの特殊性はない
比較可能な値を返す任意の関数を指定できるだけ
791デフォルトの名無しさん
垢版 |
2023/05/11(木) 11:28:35.88ID:0xrwE4ea
sort関数使わずに苦労したのかと思ったら使ってはいるんだな
https://docs.python.org/ja/3.10/library/stdtypes.html#list.sort
にあるソート HOW TOに色々書いてある
L.sort(key=lambda x: len(x))

>>789
関数オブジェクトを渡すことは珍しいことではない
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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