当スレに★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(超初心者用) その54
https://mevius.5ch.net/test/read.cgi/tech/1623240344/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その55
■ このスレッドは過去ログ倉庫に格納されています
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
671デフォルトの名無しさん
2021/11/14(日) 19:31:47.93ID:6/4ZgoB5 教えてください。
開いているメモ帳などに、言葉を複数回入力したいのですが、
pyperclip.copy(text) #textは変数
でクリップボートにコピーしたものを、メモ帳に貼り付けるため
hwnd = win32gui.FindWindow(None, "〇〇 - メモ帳") # "〇〇 - メモ帳"は例えです
win32gui.SetWindowPos(hwnd,win32con.HWND_TOPMOST,0,0,0,0,win32con.SWP_NOMOVE | win32con.SWP_NOSIZE)
で、常に最前面にした状態で、
pyperclip.paste()
を実行しても貼り付けできません。
pyautogui.typewrite(text)
でも、メモ帳をアクティブにすれば、日本語はダメですが英語だと貼り付けできます。
@メモ帳をアクティブにする方法 PID指定でもいいです
A日本語を貼り付け可能にする方法
よろしくお願いいたします。
開いているメモ帳などに、言葉を複数回入力したいのですが、
pyperclip.copy(text) #textは変数
でクリップボートにコピーしたものを、メモ帳に貼り付けるため
hwnd = win32gui.FindWindow(None, "〇〇 - メモ帳") # "〇〇 - メモ帳"は例えです
win32gui.SetWindowPos(hwnd,win32con.HWND_TOPMOST,0,0,0,0,win32con.SWP_NOMOVE | win32con.SWP_NOSIZE)
で、常に最前面にした状態で、
pyperclip.paste()
を実行しても貼り付けできません。
pyautogui.typewrite(text)
でも、メモ帳をアクティブにすれば、日本語はダメですが英語だと貼り付けできます。
@メモ帳をアクティブにする方法 PID指定でもいいです
A日本語を貼り付け可能にする方法
よろしくお願いいたします。
672デフォルトの名無しさん
2021/11/14(日) 19:41:02.30ID:r+uJUw0M 最前面にあるのとフォーカスがあるのは一緒じゃない
673デフォルトの名無しさん
2021/11/14(日) 19:58:23.61ID:qsoauoys コードが全然わからず困ってます。
有料のサブスクで勉強しているんですが、説明が分からなくて困ってます。
def から何をしているのかさっぱりわかりません。
DataFrame の処理の問題です。
コメントの15文字までを切り出して列(SlicedComment列)に格納する処理をSeries.apply()を使って実行します。
まず実行したい関数(ここでは、get_sliced_str関数)を実装します。
その後、Series.apply()に引数として実装した関数を渡すと、Seriesの各データが実装した関数の引数として渡された結果をシリーズとして返します。
# 前回のプログラムの読込
%run 2.ipynb
def get_sliced_str(x):
return x[:15]
# 関数を使って作成
df['SlicedComment'] = df['Comment'].apply(get_sliced_str)
df
# strアクセサを使って作成
df['SlicedComment'] = df['Comment'].str[:15]
df
有料のサブスクで勉強しているんですが、説明が分からなくて困ってます。
def から何をしているのかさっぱりわかりません。
DataFrame の処理の問題です。
コメントの15文字までを切り出して列(SlicedComment列)に格納する処理をSeries.apply()を使って実行します。
まず実行したい関数(ここでは、get_sliced_str関数)を実装します。
その後、Series.apply()に引数として実装した関数を渡すと、Seriesの各データが実装した関数の引数として渡された結果をシリーズとして返します。
# 前回のプログラムの読込
%run 2.ipynb
def get_sliced_str(x):
return x[:15]
# 関数を使って作成
df['SlicedComment'] = df['Comment'].apply(get_sliced_str)
df
# strアクセサを使って作成
df['SlicedComment'] = df['Comment'].str[:15]
df
674デフォルトの名無しさん
2021/11/14(日) 20:19:49.33ID:y/dqGNjn コードが意訳でなくコピペなら引用の範疇かが気になるし有料ならそっちで聞いた方がよくない?
前後の流れもあるだろうし
前後の流れもあるだろうし
675デフォルトの名無しさん
2021/11/14(日) 20:23:34.90ID:sz2Sy1tN そもそもpyperclip.paste()とpyperclip.copy()はクリップボードの中身をどうこうするために存在するのであって
なんかの画面に貼り付けるために存在するのではない
結論としてはpyautogui.hotkey()にctrlとv渡せ
なんかの画面に貼り付けるために存在するのではない
結論としてはpyautogui.hotkey()にctrlとv渡せ
676デフォルトの名無しさん
2021/11/14(日) 20:26:13.01ID:6/4ZgoB5 >>672さん
ありがとうございます。
理解しました。そうですよね。よく考えれば当然でした。
Aの貼り付けは、
pyautogui.hotkey('ctrl', 'v')
で解決しました。
で、メモ帳にフォーカスをあてるには、バーチャルマウスでクリック等はあったのですが、
直接指定してフォーカスする方法があればお教えください。
ありがとうございます。
理解しました。そうですよね。よく考えれば当然でした。
Aの貼り付けは、
pyautogui.hotkey('ctrl', 'v')
で解決しました。
で、メモ帳にフォーカスをあてるには、バーチャルマウスでクリック等はあったのですが、
直接指定してフォーカスする方法があればお教えください。
677デフォルトの名無しさん
2021/11/14(日) 20:51:40.87ID:sz2Sy1tN タスクバー上の配置を固定しておいてwin+数字キー
678デフォルトの名無しさん
2021/11/14(日) 21:23:31.50ID:qmSPgrdk >>673
説明の何がわからないのかもう少し細かく考えてみては?
defが何かわからない?
「コメントの15文字までを切り出して列に格納する」という日本語の意味がわからない?
スライスやSlicedの意味がわからない?
x[:15]が何をしてるかわからない?
シリーズが何かわからない?
「Series.apply()に引数として関数を渡す」という日本語の意味がわからない?
などなど
説明の何がわからないのかもう少し細かく考えてみては?
defが何かわからない?
「コメントの15文字までを切り出して列に格納する」という日本語の意味がわからない?
スライスやSlicedの意味がわからない?
x[:15]が何をしてるかわからない?
シリーズが何かわからない?
「Series.apply()に引数として関数を渡す」という日本語の意味がわからない?
などなど
679デフォルトの名無しさん
2021/11/14(日) 21:58:02.31ID:u3eAdyh4 >>651
1行じゃ無いけど再帰は要らなくね?
def search_dict(target,selectors):
c = target
for k in selectors:
c = c[k]
return c
1行じゃ無いけど再帰は要らなくね?
def search_dict(target,selectors):
c = target
for k in selectors:
c = c[k]
return c
680デフォルトの名無しさん
2021/11/14(日) 22:31:49.77ID:bHC3qkkE コードゴルフしてるんで一行でお願いします
681デフォルトの名無しさん
2021/11/15(月) 01:36:18.56ID:5MYJc3th >>678
アドバイスありがとうございます。
シリーズがよく分かっていなかったのと、apllyもよく分かっていませんでした。ノートに書きながら色々実行したら何となくわかりましたが、x[:15]がよく分かりません。
コメントを渡して最初の15文字をなぜ切り取れるんでしょうか
アドバイスありがとうございます。
シリーズがよく分かっていなかったのと、apllyもよく分かっていませんでした。ノートに書きながら色々実行したら何となくわかりましたが、x[:15]がよく分かりません。
コメントを渡して最初の15文字をなぜ切り取れるんでしょうか
682デフォルトの名無しさん
2021/11/15(月) 02:57:55.17ID:/1nodzje >>681
お前はまず初心者向けの本を一冊読んでから出直せ
お前はまず初心者向けの本を一冊読んでから出直せ
683デフォルトの名無しさん
2021/11/15(月) 03:02:41.97ID:r/fnyP+y まあ超初心者用とはいえ論外だわ
クジラ飛行机の入門書でも読めや
あれプログラムしたこと無い人がスタートラインに立てるようになるから
クジラ飛行机の入門書でも読めや
あれプログラムしたこと無い人がスタートラインに立てるようになるから
684デフォルトの名無しさん
2021/11/15(月) 03:13:21.02ID:x301xsWW 誰に吹き込まれていきなりこんな課題やってんのかな
詐欺メッセージに騙されてコンビニでアマギフ券買ってしまうくらいのIQと見た
詐欺メッセージに騙されてコンビニでアマギフ券買ってしまうくらいのIQと見た
685デフォルトの名無しさん
2021/11/15(月) 03:25:27.36ID:hipLkLbw >>681
まずPython自体の習熟度に問題があるな
(Pythonは文字列そのままスライスできる書き方がある)
Pandasに触る前に、先にそっちやらないと構文的に分からない所が多々出てくる
最低ラインとして入門書1冊か、根気があるなら公式チュートリアルをまずやるのが先決
実行する時にもデバッグのブレークポイント使って、
1個ずつ処理をステップ実行で見ていくのもいい、何をやってるのか分かる
まずPython自体の習熟度に問題があるな
(Pythonは文字列そのままスライスできる書き方がある)
Pandasに触る前に、先にそっちやらないと構文的に分からない所が多々出てくる
最低ラインとして入門書1冊か、根気があるなら公式チュートリアルをまずやるのが先決
実行する時にもデバッグのブレークポイント使って、
1個ずつ処理をステップ実行で見ていくのもいい、何をやってるのか分かる
686デフォルトの名無しさん
2021/11/15(月) 03:44:37.20ID:/1nodzje 多分だけど
有料だから手取り足取り教えてくれるだろうという認識なんじゃないかな
違うんよ
有料で、その分野(python)の専門的な領域(pandas)を解説する講座なんじゃて
その講座の入門条件は「pythonが一通り使える」よ
明言しない講座も悪いんだろうが今のままじゃ金をゴミ箱に捨てるのと大差ない
def(関数定義)も分からないんじゃ、class出てきたら即死するでせう
っていう、超初心者スレが現状の>>681にできる最大限のアドバイス
受け取れ
有料だから手取り足取り教えてくれるだろうという認識なんじゃないかな
違うんよ
有料で、その分野(python)の専門的な領域(pandas)を解説する講座なんじゃて
その講座の入門条件は「pythonが一通り使える」よ
明言しない講座も悪いんだろうが今のままじゃ金をゴミ箱に捨てるのと大差ない
def(関数定義)も分からないんじゃ、class出てきたら即死するでせう
っていう、超初心者スレが現状の>>681にできる最大限のアドバイス
受け取れ
687デフォルトの名無しさん
2021/11/15(月) 05:51:22.02ID:OfX77+Sf KENTA, 2021/2
Web系エンジニアを目指す人のためのプログラミング学習ロードマップ
https://www.youtube.com/watch?v=0TABrlhci5M
この動画は、Ruby on Rails で、ポートフォリオを作って転職するためのものだけど、
HTML/CSS, JavaScript, Ruby, RDB/SQL などは、
Progate, Dot Install で学ぶと言ってる
多分、Python も同じじゃないの?
Web系エンジニアを目指す人のためのプログラミング学習ロードマップ
https://www.youtube.com/watch?v=0TABrlhci5M
この動画は、Ruby on Rails で、ポートフォリオを作って転職するためのものだけど、
HTML/CSS, JavaScript, Ruby, RDB/SQL などは、
Progate, Dot Install で学ぶと言ってる
多分、Python も同じじゃないの?
688デフォルトの名無しさん
2021/11/15(月) 09:01:49.22ID:EiiKCwr/ >>681
長さが決まっててインデックスアクセスができる型をPythonではシーケンスと呼ぶんだけど
シーケンスxに対してx[:15]と書くとxの0番目要素から14番目要素までを切り取ったもの(スライス)が返される
x[:15]はx[0:15]と書くのと同じで開始位置の0番目を省略した記法
list, tuple, range, strなどがシーケンス
https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range
SeriesはDatatFrameの1行や1列のデータを表現するPandasの型で1次元配列とラベル情報を持ってる
SeriesやDataFrameもシーケンスなのでリストや文字列と同じようにスライス可
長さが決まっててインデックスアクセスができる型をPythonではシーケンスと呼ぶんだけど
シーケンスxに対してx[:15]と書くとxの0番目要素から14番目要素までを切り取ったもの(スライス)が返される
x[:15]はx[0:15]と書くのと同じで開始位置の0番目を省略した記法
list, tuple, range, strなどがシーケンス
https://docs.python.org/3/library/stdtypes.html#sequence-types-list-tuple-range
SeriesはDatatFrameの1行や1列のデータを表現するPandasの型で1次元配列とラベル情報を持ってる
SeriesやDataFrameもシーケンスなのでリストや文字列と同じようにスライス可
689デフォルトの名無しさん
2021/11/15(月) 14:23:06.05ID:2H0KJ/Z9 scheduleって同期処理なんですね・・
import schedule
import time
def sleep1():
print('start sleep1')
time.sleep(10)
print('end sleep1')
def sleep2():
print('start sleep2')
print('end sleep2')
schedule.every(3).seconds.do(sleep1)
schedule.every(1).seconds.do(sleep2)
while True:
schedule.run_pending()
time.sleep(1)
sleep2が1秒おきのスケジュールだとしても
sleep1内のtime.sleep(10)を待ってしまいます
どうにか非同期的に処理できないものでしょうか
import schedule
import time
def sleep1():
print('start sleep1')
time.sleep(10)
print('end sleep1')
def sleep2():
print('start sleep2')
print('end sleep2')
schedule.every(3).seconds.do(sleep1)
schedule.every(1).seconds.do(sleep2)
while True:
schedule.run_pending()
time.sleep(1)
sleep2が1秒おきのスケジュールだとしても
sleep1内のtime.sleep(10)を待ってしまいます
どうにか非同期的に処理できないものでしょうか
690デフォルトの名無しさん
2021/11/15(月) 14:48:29.66ID:P/PCEOHq691デフォルトの名無しさん
2021/11/15(月) 14:58:38.85ID:i/3H6iLT threading
thread
thread
692デフォルトの名無しさん
2021/11/15(月) 16:08:12.68ID:2H0KJ/Z9 >>690,691
sleep12を非同期で処理するとスケジュールタイマーが機能せず
スケジュールタイマーを機能させるとsleep12が互いに処理を待つ
みたいな、こちらを立てればあちらが立たず状態です
sleep12を非同期で処理するとスケジュールタイマーが機能せず
スケジュールタイマーを機能させるとsleep12が互いに処理を待つ
みたいな、こちらを立てればあちらが立たず状態です
693デフォルトの名無しさん
2021/11/15(月) 16:35:56.57ID:P/PCEOHq >>692
もし非同期処理のなかでtime.sleep()してるならストップ・ザ・ワールド
https://docs.python.org/ja/3/library/asyncio.html
とくにこだわりないなら今はasyncioで書くのがいいよ
https://docs.python.org/ja/3/glossary.html#term-global-interpreter-lock
あと処理のなかでGILつかんでるならプロセスベースにするのが単純な解決方法
もし非同期処理のなかでtime.sleep()してるならストップ・ザ・ワールド
https://docs.python.org/ja/3/library/asyncio.html
とくにこだわりないなら今はasyncioで書くのがいいよ
https://docs.python.org/ja/3/glossary.html#term-global-interpreter-lock
あと処理のなかでGILつかんでるならプロセスベースにするのが単純な解決方法
694デフォルトの名無しさん
2021/11/15(月) 16:41:25.31ID:nBoI3p59 >>692
「三秒おきに『10秒待つ』をループする処理」
と「一秒おきに『即時実行』をループする処理」
のふたつをアウェイタブルオブジェクトとしてつくって、せーので流す
が、ぱっと思い付いた
他にかっこいいやり方ありそうやけど
「三秒おきに『10秒待つ』をループする処理」
と「一秒おきに『即時実行』をループする処理」
のふたつをアウェイタブルオブジェクトとしてつくって、せーので流す
が、ぱっと思い付いた
他にかっこいいやり方ありそうやけど
695デフォルトの名無しさん
2021/11/15(月) 16:55:34.42ID:zyhNM4DJ 10秒待ちと1秒待ちを非同期にするだけなら簡単そうだけど
3秒待って10秒待ちの場合13秒待ちで非同期にすればええのか
最終的にどういう関数動かすかによるけど
3秒ごとに10秒待ちも非同期なん?
3秒待って10秒待ちの場合13秒待ちで非同期にすればええのか
最終的にどういう関数動かすかによるけど
3秒ごとに10秒待ちも非同期なん?
696デフォルトの名無しさん
2021/11/15(月) 17:23:28.77ID:2H0KJ/Z9 >>693,694
なるほどとりあえずschduleは置いといて作ってみることにします
>>659
def sleep1()とdef sleep2()の内容に関わらずとりあえず非同期実行したい感じですね
極端な話、[sleep1を3秒おき,sleep1を1秒おき,sleep2を1秒おき,sleep2を3秒おき,sleep1を3秒おき・・・]
みたいなタスクを登録して、スタートさせれば
3秒おきに登録した分だけのsleep12が非同期に実行(もし3秒後にsleep12が処理中であっても関係なし、重複非同期実行)
1秒おきに登録した分だけのsleep12が非同期に実行(もし1秒後にsleep12が処理中であっても関係なし、重複非同期実行)
みたいな極簡単な処理だと思ってましたが
scheduleを使いつつ非同期させるやり方がわかりませんでした
なるほどとりあえずschduleは置いといて作ってみることにします
>>659
def sleep1()とdef sleep2()の内容に関わらずとりあえず非同期実行したい感じですね
極端な話、[sleep1を3秒おき,sleep1を1秒おき,sleep2を1秒おき,sleep2を3秒おき,sleep1を3秒おき・・・]
みたいなタスクを登録して、スタートさせれば
3秒おきに登録した分だけのsleep12が非同期に実行(もし3秒後にsleep12が処理中であっても関係なし、重複非同期実行)
1秒おきに登録した分だけのsleep12が非同期に実行(もし1秒後にsleep12が処理中であっても関係なし、重複非同期実行)
みたいな極簡単な処理だと思ってましたが
scheduleを使いつつ非同期させるやり方がわかりませんでした
697デフォルトの名無しさん
2021/11/15(月) 17:25:52.78ID:2H0KJ/Z9698デフォルトの名無しさん
2021/11/15(月) 20:29:39.63ID:WP/h0dcw ヘッダーありのcsvファイルをpandasで読み込んでlist化する際にデータをいじることって可能ですか?
data = pd.read_csv("csvファイル名").values.tolist()
print(data)
上記の結果が、
[['¥2,680','ストアA','yes'],['¥680','ストアB','yes'],['¥6,890','ストアC','no']]だった場合に下記にしたいです。
[[2680,'ストアA','ストアA'],[680,'ストアB','ストアB'],[6890,'ストアC','佐川急便']]
ヘッダーは価格、ストア名、配送者です。
スマホから手打ちしたのでズレてたらごめんなさい。
data = pd.read_csv("csvファイル名").values.tolist()
print(data)
上記の結果が、
[['¥2,680','ストアA','yes'],['¥680','ストアB','yes'],['¥6,890','ストアC','no']]だった場合に下記にしたいです。
[[2680,'ストアA','ストアA'],[680,'ストアB','ストアB'],[6890,'ストアC','佐川急便']]
ヘッダーは価格、ストア名、配送者です。
スマホから手打ちしたのでズレてたらごめんなさい。
699デフォルトの名無しさん
2021/11/16(火) 00:23:59.11ID:2pODoVjh import re
data = pd.read_csv("csvファイル名")
data[‘価格’]=data[‘価格’].map(lambda x:int(re.sub(r’[,\\]’, ’’, x)))
data=data.values.tolist()
data = pd.read_csv("csvファイル名")
data[‘価格’]=data[‘価格’].map(lambda x:int(re.sub(r’[,\\]’, ’’, x)))
data=data.values.tolist()
700デフォルトの名無しさん
2021/11/16(火) 00:25:14.03ID:2pODoVjh yes/noはどうなって欲しいかよくわからん
701デフォルトの名無しさん
2021/11/16(火) 02:34:34.04ID:Z03AZUuJ >>700
yesのときはyesをストア名で置換して、noのときは佐川急便に置換したいです。
yesのときはyesをストア名で置換して、noのときは佐川急便に置換したいです。
702デフォルトの名無しさん
2021/11/16(火) 05:47:58.24ID:gIvqaGJY Ruby で作ってみたけど、
ひょっとして、この\ は、逆スラッシュ\ と異なる文字を使っている?
"a5"なんて、使う?
p "\".ord.to_s( 16 ) #=> "a5"
p "\\".ord.to_s( 16 ) #=> "5c"
require 'csv'
options = { :headers => true } # ヘッダー有り
# CSV ファイルを、1行ずつ処理する
result = CSV.foreach( "input76_4.csv", options ).map do |row|
# 「,\」を削除してから、整数型へ変換する。
# 注意。この\ は、逆スラッシュ\ と異なる文字です
row[ "価格" ] = row[ "価格" ].tr( ",\", "" ).to_i
if row[ "配送者" ] == "yes"
row[ "配送者" ] = row[ "ストア名" ]
else
row[ "配送者" ] = "佐川急便"
end
row
end
p result
puts result
ひょっとして、この\ は、逆スラッシュ\ と異なる文字を使っている?
"a5"なんて、使う?
p "\".ord.to_s( 16 ) #=> "a5"
p "\\".ord.to_s( 16 ) #=> "5c"
require 'csv'
options = { :headers => true } # ヘッダー有り
# CSV ファイルを、1行ずつ処理する
result = CSV.foreach( "input76_4.csv", options ).map do |row|
# 「,\」を削除してから、整数型へ変換する。
# 注意。この\ は、逆スラッシュ\ と異なる文字です
row[ "価格" ] = row[ "価格" ].tr( ",\", "" ).to_i
if row[ "配送者" ] == "yes"
row[ "配送者" ] = row[ "ストア名" ]
else
row[ "配送者" ] = "佐川急便"
end
row
end
p result
puts result
703デフォルトの名無しさん
2021/11/16(火) 09:54:19.33ID:OREEnQL3 windowsだと円マークとバックスラッシュに5Cを当ててるけど
Macなんかはちゃんと区別してるってことじゃないの
Macなんかはちゃんと区別してるってことじゃないの
704デフォルトの名無しさん
2021/11/16(火) 11:25:27.35ID:5D9mKY7b >>679
末尾再帰とループは同値だとあれほど
末尾再帰とループは同値だとあれほど
705デフォルトの名無しさん
2021/11/16(火) 11:28:28.42ID:5D9mKY7b >>698-699
apply
apply
706デフォルトの名無しさん
2021/11/16(火) 11:35:50.32ID:mF3NnymR >>704
いや、わかりにくいって話な
いや、わかりにくいって話な
707デフォルトの名無しさん
2021/11/16(火) 12:05:42.27ID:wraX66B2 Ruby有識者早くきてくれー!
708デフォルトの名無しさん
2021/11/16(火) 17:14:17.96ID:jfdNp8v5709708
2021/11/16(火) 17:30:31.28ID:jfdNp8v5 いらぬおせっかいかもしれぬが、関数型プログラミングの正しい知識があれば、
Python でも標準ライブラリ関数 reduce を使って一行で書けるハズ
なお、内包表記は map/filter の構文糖だから、還元(あるいは畳み込み)機能の
実装である reduce の代替にはならない
これは Pyhthon の問題ではなく内包表記の限界だから、例えば Haskell でも同じ
Python でも標準ライブラリ関数 reduce を使って一行で書けるハズ
なお、内包表記は map/filter の構文糖だから、還元(あるいは畳み込み)機能の
実装である reduce の代替にはならない
これは Pyhthon の問題ではなく内包表記の限界だから、例えば Haskell でも同じ
710デフォルトの名無しさん
2021/11/16(火) 18:30:31.88ID:2/DPJM9H >>708
dig・・・
dig・・・
711デフォルトの名無しさん
2021/11/16(火) 18:39:12.08ID:GJIVmbG1 スレタイに超初心者用って書いてあるやん
超初心者相手に知識マウント取って楽しいか?
超初心者相手に知識マウント取って楽しいか?
712デフォルトの名無しさん
2021/11/16(火) 18:44:06.19ID:ndL262TB 無駄無駄
Pythonって単語が入ってしまってる以上どうやっても好き勝手パイ雑談したがるやつが出るから。ルールってそんなもん
Pythonお勉強スレと両方見ててスレの流れだけ見てどっちのスレか区別もなくレスしてる奴がほとんどだろう
Pythonって単語が入ってしまってる以上どうやっても好き勝手パイ雑談したがるやつが出るから。ルールってそんなもん
Pythonお勉強スレと両方見ててスレの流れだけ見てどっちのスレか区別もなくレスしてる奴がほとんどだろう
713デフォルトの名無しさん
2021/11/16(火) 19:04:24.15ID:2pODoVjh 関数型プログラミングのメリットって何ですか?
714デフォルトの名無しさん
2021/11/16(火) 22:37:11.33ID:iw6chFt8 パイ雑談て😅
715デフォルトの名無しさん
2021/11/17(水) 07:06:55.40ID:ytfPCTgK seleniumについて質問です
特定のサイトで起こるわけではないのですが、
たまにdriver.get(url)を実行してページ遷移した画面でフリーズすることがあります。
driver.get(url)
wait = WebDriverWait(driver=driver, timeout=30)
wait.until(EC.presence_of_all_elements_located)
で実行していて、要素が確認できてないから待機してるのかと思っていましたが、
driver.get(url)
print("待機中でごわす")
wait = WebDriverWait(driver=driver, timeout=30)
wait.until(EC.presence_of_all_elements_located)
で実行してもフリーズする際は"待機中でごわす"が表示されないので、
driver.get(url)でページ遷移した状態で固まってると思います
特定のサイトで起こるわけではないのですが、
たまにdriver.get(url)を実行してページ遷移した画面でフリーズすることがあります。
driver.get(url)
wait = WebDriverWait(driver=driver, timeout=30)
wait.until(EC.presence_of_all_elements_located)
で実行していて、要素が確認できてないから待機してるのかと思っていましたが、
driver.get(url)
print("待機中でごわす")
wait = WebDriverWait(driver=driver, timeout=30)
wait.until(EC.presence_of_all_elements_located)
で実行してもフリーズする際は"待機中でごわす"が表示されないので、
driver.get(url)でページ遷移した状態で固まってると思います
716デフォルトの名無しさん
2021/11/17(水) 07:09:40.02ID:ytfPCTgK 同じurlで繰り返しためしてみても正常に処理できるときがほとんどで
極稀にdriver.get(url)でページ遷移した後の画面でフリーズするので原因がわかりません。
対応策とか分るかた入れ歯教えてください
極稀にdriver.get(url)でページ遷移した後の画面でフリーズするので原因がわかりません。
対応策とか分るかた入れ歯教えてください
717デフォルトの名無しさん
2021/11/17(水) 07:10:50.45ID:ytfPCTgK あとはdriver.get(url)の次の処理が60秒間の間に始まらなければエラーを返すみたいな処理が可能でしたら教えてほしいです
718デフォルトの名無しさん
2021/11/17(水) 07:34:30.83ID:CbT8HrOI719デフォルトの名無しさん
2021/11/17(水) 07:53:08.82ID:k9NuPgD9720デフォルトの名無しさん
2021/11/17(水) 08:00:22.67ID:k9NuPgD9 日本語翻訳して読みましたが
os.path.devnullってやつを起動時のオプションにいれるか、driver.set_page_load_timeout(15)をdriver.get(url)の次の行に入れればいい感じですかね?
os.path.devnullってやつを起動時のオプションにいれるか、driver.set_page_load_timeout(15)をdriver.get(url)の次の行に入れればいい感じですかね?
721デフォルトの名無しさん
2021/11/17(水) 08:20:17.64ID:uBgicjSp >>718
PhantomJS って、まだ使われているのか?
PhantomJS って、まだ使われているのか?
722デフォルトの名無しさん
2021/11/17(水) 10:23:22.69ID:B6bo55Im 0か1かそれ以外の文字 で構成された配列がある
l = [0, 1, 0, A, www, 9, 1]
mode = ''
すべて0なら mode = 0
0か1なら mode = 1
どちらでもないなら mode = 2
にしたい.
配列の長さが長いときに一番早く整う書き方って
mode = 0
for i in l:
__if i not in (0, 1):
____mode = 2 ; break
__elif i == 1:
____mode = 1 ; break
ですか? in 遅いんでしたっけ?
numpyあたりに高速allみたいなのないですか?
l = [0, 1, 0, A, www, 9, 1]
mode = ''
すべて0なら mode = 0
0か1なら mode = 1
どちらでもないなら mode = 2
にしたい.
配列の長さが長いときに一番早く整う書き方って
mode = 0
for i in l:
__if i not in (0, 1):
____mode = 2 ; break
__elif i == 1:
____mode = 1 ; break
ですか? in 遅いんでしたっけ?
numpyあたりに高速allみたいなのないですか?
723デフォルトの名無しさん
2021/11/17(水) 10:29:30.19ID:wlAtkNPK A と WWW が変数でないならば文法エラー
変数であれば変数の中身次第だが
not in (0, 1):
で期待する動作にはならないだろう
変数であれば変数の中身次第だが
not in (0, 1):
で期待する動作にはならないだろう
724デフォルトの名無しさん
2021/11/17(水) 10:32:21.44ID:f/0NZNwK >>698
csv_normalなら簡単にできるよ!
>import csv_normal as csv
>c = csv.csv([['価格','ストア名','配送者'],[r'\2,680','ストアA','yes'],[r'\680','ストアB','yes'],[r'\6,890','ストアC','no']])
>c.header_idx=0; c.data_row_range = slice(1,None) #ヘッダーとデータ範囲設定
>c.money2int() #通貨文字列を数字に変換
>def hoge(row):
____if row[c['配送者']] == 'yes':
________row[c['配送者']] = row[c['ストア名']]
____else:
________row[c['配送者']] = '佐川急便'
>
>c.map_rows(lambda row: hoge(row)) #配送車列の変換
['', None, None, None]
>c.csv #データ確認
[['価格', 'ストア名', '配送者'], [2680, 'ストアA', 'ストアA'], [680, 'ストアB', 'ストアB'], [6890, 'ストアC', '佐川急便']]
>c.print2() #見やすく表示(5chだからズレちゃう)
+------+--------+--------+
|価格 |ストア名|配送者 |
+------+--------+--------+
| 2_680|ストアA ストアA |
+------+--------+--------+
| 680|ストアB ストアB |
+------+--------+--------+
| 6_890|ストアC |佐川急便|
+------+--------+--------+
csv_normalなら簡単にできるよ!
>import csv_normal as csv
>c = csv.csv([['価格','ストア名','配送者'],[r'\2,680','ストアA','yes'],[r'\680','ストアB','yes'],[r'\6,890','ストアC','no']])
>c.header_idx=0; c.data_row_range = slice(1,None) #ヘッダーとデータ範囲設定
>c.money2int() #通貨文字列を数字に変換
>def hoge(row):
____if row[c['配送者']] == 'yes':
________row[c['配送者']] = row[c['ストア名']]
____else:
________row[c['配送者']] = '佐川急便'
>
>c.map_rows(lambda row: hoge(row)) #配送車列の変換
['', None, None, None]
>c.csv #データ確認
[['価格', 'ストア名', '配送者'], [2680, 'ストアA', 'ストアA'], [680, 'ストアB', 'ストアB'], [6890, 'ストアC', '佐川急便']]
>c.print2() #見やすく表示(5chだからズレちゃう)
+------+--------+--------+
|価格 |ストア名|配送者 |
+------+--------+--------+
| 2_680|ストアA ストアA |
+------+--------+--------+
| 680|ストアB ストアB |
+------+--------+--------+
| 6_890|ストアC |佐川急便|
+------+--------+--------+
725デフォルトの名無しさん
2021/11/17(水) 10:37:50.75ID:GPq3lXDW726デフォルトの名無しさん
2021/11/17(水) 10:46:02.33ID:GPq3lXDW こっちの方がいいかな?
set(l)=={'0', '1'}
set(l)=={'0'}
set(l)=={'0', '1'}
set(l)=={'0'}
727デフォルトの名無しさん
2021/11/17(水) 11:55:11.92ID:B6bo55Im 失礼しました
全部strっすね。不定文字列もstr型
'0', '1', 'wooo'
i n ('0', '1')
全部strっすね。不定文字列もstr型
'0', '1', 'wooo'
i n ('0', '1')
728デフォルトの名無しさん
2021/11/17(水) 12:34:52.78ID:4tNSHn/X in '01':
729デフォルトの名無しさん
2021/11/17(水) 12:40:38.25ID:k9NuPgD9730デフォルトの名無しさん
2021/11/17(水) 12:49:55.55ID:iywzxd5E >>722
その条件だとO(n)で回すにはfor-loopしかない気がする
any()とか使えなくもないけど2周必要だし3つ分岐が必要なことには変わりないので素直にforで回すのがいいと思う
def judge_mode(array):
__mode = 0
__for x in array:
____if x == '0':
______continue
____elif x == '1':
______mode = 1
______continue
____else:
______return 2
__return mode
その条件だとO(n)で回すにはfor-loopしかない気がする
any()とか使えなくもないけど2周必要だし3つ分岐が必要なことには変わりないので素直にforで回すのがいいと思う
def judge_mode(array):
__mode = 0
__for x in array:
____if x == '0':
______continue
____elif x == '1':
______mode = 1
______continue
____else:
______return 2
__return mode
731デフォルトの名無しさん
2021/11/17(水) 13:03:09.62ID:4tNSHn/X def judge_mode(array):
__mode = 0
__for x in array:
____if mode == 0:
______if x == '1':
________mode = 1
________continue
______elif x != '0':
________return 2
____elif x != '0' and x != '1':
______return 2
__return mode
__mode = 0
__for x in array:
____if mode == 0:
______if x == '1':
________mode = 1
________continue
______elif x != '0':
________return 2
____elif x != '0' and x != '1':
______return 2
__return mode
732デフォルトの名無しさん
2021/11/17(水) 16:16:01.02ID:f/0NZNwK >>729
csv_normalではデータ読み込みの際のデータ区切りはカンマ固定だったんですが
今回のようにデータにカンマがある例では不便なので、データ区切りを指定できるようにしました
最新Version3.2.4では以下のようにデータ区切りを空白にもできます
c = csv.load('hogehoge.csv', sep='\s+', encoding='utf8')
csv_normalではデータ読み込みの際のデータ区切りはカンマ固定だったんですが
今回のようにデータにカンマがある例では不便なので、データ区切りを指定できるようにしました
最新Version3.2.4では以下のようにデータ区切りを空白にもできます
c = csv.load('hogehoge.csv', sep='\s+', encoding='utf8')
733デフォルトの名無しさん
2021/11/17(水) 20:20:04.76ID:ytfPCTgK >>718
driver.set_page_load_timeout(30)を入れて回してみましたが、フリーズしてから5分くらい待ってもエラーになりません。
driver.set_page_load_timeout(30)を入れて回してみましたが、フリーズしてから5分くらい待ってもエラーになりません。
734デフォルトの名無しさん
2021/11/17(水) 20:28:25.14ID:ytfPCTgK driver = uc.Chrome(options=options, service_log_path=os.path.devnull)
wait = WebDriverWait(driver=driver, timeout=30)
driver.set_page_load_timeout(30)
for url in urllist:
try:
driver.get(url)
print("接続完了でござる")
except:
print("エラー")
で試してもエラーが出ない感じです
wait = WebDriverWait(driver=driver, timeout=30)
driver.set_page_load_timeout(30)
for url in urllist:
try:
driver.get(url)
print("接続完了でござる")
except:
print("エラー")
で試してもエラーが出ない感じです
735デフォルトの名無しさん
2021/11/18(木) 07:11:18.86ID:5H17mfWr psycopg2でテーブル作成時にテーブル名を代入する方法を教えてください
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=test user=test password=testdayo')
c = conn.cursor()
table_name_list = ["table1","table2","table3",]
for table_name in table_name_list:
c.execute("""
CREATE TABLE IF NOT EXISTS testschema.%s(
"code" text,
)
""",[table_name])
conn.commit()
testschemaにtable1,table2,table3て感じでテーブルを作っていきたいですがうまくいきません。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=test user=test password=testdayo')
c = conn.cursor()
table_name_list = ["table1","table2","table3",]
for table_name in table_name_list:
c.execute("""
CREATE TABLE IF NOT EXISTS testschema.%s(
"code" text,
)
""",[table_name])
conn.commit()
testschemaにtable1,table2,table3て感じでテーブルを作っていきたいですがうまくいきません。
736デフォルトの名無しさん
2021/11/18(木) 10:52:34.99ID:/He/baLS c.execute(f"""
CREATE TABLE IF NOT EXISTS testschema.{table_name}(
"code" text,
)
""")
CREATE TABLE IF NOT EXISTS testschema.{table_name}(
"code" text,
)
""")
737デフォルトの名無しさん
2021/11/18(木) 11:31:32.62ID:IG65qiRj psycopg2つかったことないけど
それpreparedステートメント透過的につかわれてるの?
それpreparedステートメント透過的につかわれてるの?
738デフォルトの名無しさん
2021/11/18(木) 16:23:01.48ID:176auHoD Djangoで python manage.py runserverでサーバーを起動させたが全てのターミナルを消しても上記のサーバーのページにアクセス出来る
どうやったらサーバーを止められる?
どうやったらサーバーを止められる?
739デフォルトの名無しさん
2021/11/18(木) 16:27:27.07ID:176auHoD lsof -i :8000でpid確認してkill -QUIT プロセスidで終わらせれました
740デフォルトの名無しさん
2021/11/19(金) 11:20:04.92ID:eyeX0xyM たぶんそれ人違いで殺してる
741デフォルトの名無しさん
2021/11/19(金) 19:16:34.09ID:gJnyLrIF df = df.values.tolist()
print(df)
を実行すると[[a1,b1],[a2,b2],[a3,b3]]のような形でデータを取得できますが、
これをタプルで取得する方法ってありますか?
下記みたいな感じで取得死体です
[(a1,b1),(a2,b2),(a3,b3)]
print(df)
を実行すると[[a1,b1],[a2,b2],[a3,b3]]のような形でデータを取得できますが、
これをタプルで取得する方法ってありますか?
下記みたいな感じで取得死体です
[(a1,b1),(a2,b2),(a3,b3)]
742デフォルトの名無しさん
2021/11/19(金) 19:37:02.12ID:FvmYZMBk [tuple(x) for x in df.values]
743デフォルトの名無しさん
2021/11/19(金) 21:02:22.10ID:gJnyLrIF >>742
できました!ありがとうございます。
ちなみにpsycopg2で[(a1,b1),(a2,b2),(a3,b3)]のデータを
テーブルに入れるにはどうしたらいいんだ?
import psycopg2
from psycopg2 import extras
conn = psycopg2.connect('host=localhost port=5432 dbname=db user=db password=db')
c = conn.cursor()
insert_list = [(a1,b1),(a2,b2),(a3,b3)]
extras.execute_values(c, "INSERT INTO table values %s", insert_list)
c.commit()
調べたら上記でいけるかと思いましたがだめでした
できました!ありがとうございます。
ちなみにpsycopg2で[(a1,b1),(a2,b2),(a3,b3)]のデータを
テーブルに入れるにはどうしたらいいんだ?
import psycopg2
from psycopg2 import extras
conn = psycopg2.connect('host=localhost port=5432 dbname=db user=db password=db')
c = conn.cursor()
insert_list = [(a1,b1),(a2,b2),(a3,b3)]
extras.execute_values(c, "INSERT INTO table values %s", insert_list)
c.commit()
調べたら上記でいけるかと思いましたがだめでした
744デフォルトの名無しさん
2021/11/20(土) 04:07:01.58ID:Pz0iKQrb プログラミング自体が初めて2週間ほどなので幼稚な質問をお許しください。
目的:読み込まれたリストから複数の条件で項目を除外する
testlist = ['月A','月B','火A','火B','','水A','水B','','月C','月D']
boxlist = list(map(str, testlist))
というところまで書いた時に、例えばこのリストから
「'月'が含まれている物全て」と「""(空行)」を消したいんです。
(特に空行はどうしても発生する物なので除去必須です)
たとえば『list(filter(lambda...』というのが使えるらしい事は調べたものの
文法がよく分からず何度やってもエラーが出てしまいました。
他の方法でもいいのでなにとぞ複数条件の除去が可能なコードなりを教えてもらえると助かります。
目的:読み込まれたリストから複数の条件で項目を除外する
testlist = ['月A','月B','火A','火B','','水A','水B','','月C','月D']
boxlist = list(map(str, testlist))
というところまで書いた時に、例えばこのリストから
「'月'が含まれている物全て」と「""(空行)」を消したいんです。
(特に空行はどうしても発生する物なので除去必須です)
たとえば『list(filter(lambda...』というのが使えるらしい事は調べたものの
文法がよく分からず何度やってもエラーが出てしまいました。
他の方法でもいいのでなにとぞ複数条件の除去が可能なコードなりを教えてもらえると助かります。
745デフォルトの名無しさん
2021/11/20(土) 04:49:44.14ID:w0sFPEUw 簡単なところから徐々にステップアップしていけよ
とりあえず超初心者本買って読め
今の調子じゃ一から十まで全部聞くハメになるぞ
newlist = []
for data in testlist:
__if data:
____if '月' not in data:
________newlist.append(data)
これならわかるだろ
lambdaとかfilterは、まずこれが書ける人が次の段階で覚えろ
とりあえず超初心者本買って読め
今の調子じゃ一から十まで全部聞くハメになるぞ
newlist = []
for data in testlist:
__if data:
____if '月' not in data:
________newlist.append(data)
これならわかるだろ
lambdaとかfilterは、まずこれが書ける人が次の段階で覚えろ
746デフォルトの名無しさん
2021/11/20(土) 06:00:34.25ID:hT1QMP3Z 初めて2週間でそんな所まで行くって凄いな
上の奴の言う通りだけどあえて書いてみるならば
testlist = ['月A','月B','火A','火B','','水A','水B','','月C','月D']
a = list(filter(lambda x: x and x[0] != '月', testlist))
filterやmapは高階関数と言うよ
第一引数に関数を取る
第二引数にイテラブルな型のオブジェクトを取る
上記の例ではtestlistから順番に一つずつvalueを:の左のxという引数に取り出して自分で書いたlambda関数内で処理して条件に合うvalueをメモリ領域に一時保存しているよ
そんでtestlistの全てのvalueを取り出し終えたらメモリ上に保存しておいたvalueをlist型に変換してaに代入している
testlist[0]の部分はスライス
上の奴の言う通りだけどあえて書いてみるならば
testlist = ['月A','月B','火A','火B','','水A','水B','','月C','月D']
a = list(filter(lambda x: x and x[0] != '月', testlist))
filterやmapは高階関数と言うよ
第一引数に関数を取る
第二引数にイテラブルな型のオブジェクトを取る
上記の例ではtestlistから順番に一つずつvalueを:の左のxという引数に取り出して自分で書いたlambda関数内で処理して条件に合うvalueをメモリ領域に一時保存しているよ
そんでtestlistの全てのvalueを取り出し終えたらメモリ上に保存しておいたvalueをlist型に変換してaに代入している
testlist[0]の部分はスライス
747デフォルトの名無しさん
2021/11/20(土) 07:17:36.90ID:7hjyIAPL Ruby では色々な書き方ができるが、メソッドチェーンを使うのが、バグらない書き方。
Linux のパイプみたいな感じ。
各フィルターで処理を分けて、実行していく
最後の2つは、処理が複雑
ary_1 = [ "A月A", "", "火B", "", "月C" ]
# 配列から、空文字列を除去する
p ary_2 = ary_1.reject( &:empty? ) #=> ["A月A", "火B", "月C"]
# ary_2 から、月を含む文字列を除去する
p res_1 = ary_2.reject { |str| str.include? "月" } #=> ["火B"]
# 上の2つの処理をメソッドチェーンでつなげる
p res_2 = ary_1.reject( &:empty? ).
reject { |str| str.include? "月" } #=> ["火B"]
# 空文字列か、月を含む文字列を除去する
p res_3 = ary_1.reject { |str| str.empty? || str.include?( "月" ) } #=> ["火B"]
# 上の処理を、lambda にする
lambda_1 = ->( str ){ str.empty? || str.include?( "月" ) }
p res_4 = ary_1.reject{ |str| lambda_1.call( str ) } #=> ["火B"]
Linux のパイプみたいな感じ。
各フィルターで処理を分けて、実行していく
最後の2つは、処理が複雑
ary_1 = [ "A月A", "", "火B", "", "月C" ]
# 配列から、空文字列を除去する
p ary_2 = ary_1.reject( &:empty? ) #=> ["A月A", "火B", "月C"]
# ary_2 から、月を含む文字列を除去する
p res_1 = ary_2.reject { |str| str.include? "月" } #=> ["火B"]
# 上の2つの処理をメソッドチェーンでつなげる
p res_2 = ary_1.reject( &:empty? ).
reject { |str| str.include? "月" } #=> ["火B"]
# 空文字列か、月を含む文字列を除去する
p res_3 = ary_1.reject { |str| str.empty? || str.include?( "月" ) } #=> ["火B"]
# 上の処理を、lambda にする
lambda_1 = ->( str ){ str.empty? || str.include?( "月" ) }
p res_4 = ary_1.reject{ |str| lambda_1.call( str ) } #=> ["火B"]
748デフォルトの名無しさん
2021/11/20(土) 08:38:43.30ID:/G7VwRdk 複数のpythonファイルを順に実行する方法ってないですか?
zikkou.py
1.py
2.py
3.py
ってファイルがあった場合にzikkou.pyを実行すると1.py→2.py→3.pyの順で処理してくれる感じです。
import osかimport subprocessでできますか?
zikkou.py
1.py
2.py
3.py
ってファイルがあった場合にzikkou.pyを実行すると1.py→2.py→3.pyの順で処理してくれる感じです。
import osかimport subprocessでできますか?
749デフォルトの名無しさん
2021/11/20(土) 08:43:20.89ID:EeA4sZVq rubyのアタマがバグってるやつはおいといて
今回の件は
news=[dat for dat in olds if '月' in dat]
だけでいいんじゃ〜
forの実直ループ覚えたら内包表記覚えて
そのあと高階関数とpandas行くのだぞ
やりたいことの範囲はopenpyxlぽいけど
今回の件は
news=[dat for dat in olds if '月' in dat]
だけでいいんじゃ〜
forの実直ループ覚えたら内包表記覚えて
そのあと高階関数とpandas行くのだぞ
やりたいことの範囲はopenpyxlぽいけど
750デフォルトの名無しさん
2021/11/20(土) 09:12:28.20ID:MzN+MOHO >>748
subprocessでできると思うけど、結局コマンドプロンプトのコマンドを実行するわけだから
zikkou.pyじゃなくてbatファイルで1.py, 2.py, 3.pyを呼び出した方がいいんじゃないかな?
subprocessでできると思うけど、結局コマンドプロンプトのコマンドを実行するわけだから
zikkou.pyじゃなくてbatファイルで1.py, 2.py, 3.pyを呼び出した方がいいんじゃないかな?
751デフォルトの名無しさん
2021/11/20(土) 09:22:38.89ID:MzN+MOHO752デフォルトの名無しさん
2021/11/20(土) 13:43:03.64ID:EfL5Dmlb >>744
最初の考え方としては `boxlist.filter(空行以外).filter(‘月’が含まれてない)` みたいに2回filterしてやるのでもいいよ
↑をpythonで愚直に実装すると
list(filter(lambda x: '月' not in x, filter(lambda x: x != ‘’, boxlist)))
↑pythonの場合は2回filterするとオーバーヘッドが大きくなるだけなので1回にまとめて
list(filter(lambda x: x != ‘’ and ’月’ not in x, boxlist))
↑pythonではmapやfilterの代わりに内包表記を使うのが一般的なので
[ x for x in boxlist if x != ‘’ and ’月’ not in x ]
↑空行以外のfalsy値(0やNone)も除外してよければ
[ x for x in boxlist if x and ’月’ not in x ]
2回filterしても最適化されてオーバーヘッドかからない言語もあるので
アルゴリズム的な考え方と特定言語での実装とを分けて捉えるようにしておくと後々役に立つ
最初の考え方としては `boxlist.filter(空行以外).filter(‘月’が含まれてない)` みたいに2回filterしてやるのでもいいよ
↑をpythonで愚直に実装すると
list(filter(lambda x: '月' not in x, filter(lambda x: x != ‘’, boxlist)))
↑pythonの場合は2回filterするとオーバーヘッドが大きくなるだけなので1回にまとめて
list(filter(lambda x: x != ‘’ and ’月’ not in x, boxlist))
↑pythonではmapやfilterの代わりに内包表記を使うのが一般的なので
[ x for x in boxlist if x != ‘’ and ’月’ not in x ]
↑空行以外のfalsy値(0やNone)も除外してよければ
[ x for x in boxlist if x and ’月’ not in x ]
2回filterしても最適化されてオーバーヘッドかからない言語もあるので
アルゴリズム的な考え方と特定言語での実装とを分けて捉えるようにしておくと後々役に立つ
753デフォルトの名無しさん
2021/11/20(土) 15:32:34.01ID:/G7VwRdk754デフォルトの名無しさん
2021/11/20(土) 15:34:29.98ID:/G7VwRdk pandasの列のデータ型をnumpy.int64からpythonのintにするにはどうしたらいいんや?
列名["count"]の場合にdf["count"].astype(int)でいけるのかと思ったらできなかった
列名["count"]の場合にdf["count"].astype(int)でいけるのかと思ったらできなかった
755デフォルトの名無しさん
2021/11/20(土) 17:05:24.67ID:Pz0iKQrb >>744です。
帰ってきたら想像してた以上に色んなやり方を書いてもらえててなんか感動してます。
実は超初心者向けとされている本は読んでいて、>>745さんが書かれてる通りリストやfor inを使う範囲で出来そうな
単純な内容の1000行とかになる記録簿の整理なら覚えた範囲で可能そう、かつ超便利と思ったのがきっかけなんです。
ただ、’月’とかの単語を指定しての除去だけならそれで出来たんですが、同時に空行の除去をしようとすると
ろくに作動しなくなってしまったために色々調べてfilterに行き着いたという流れでした・・・。
特に、というと序列を付けてるみたいで違うのですが、>>745さんのコードが目からうろこでした。
さっきまでどうして空行が除去出来てるのか理解できずググりまくったんですが、さんざん見てたはずの.appendの特性の応用で
正直色々空行の除去についてググってた時に見た色んなコードよりスマートに思えました。
他の皆さんのコードもかなり学び甲斐があってほんと頭が下がりました。
今からまた一個一個調べて見直しますが、かなり成長出来そうなので楽しみです。
・・・ちなみになんですが、こういう引数の知識は基礎の基礎と思うのですが、
その一通りが日本語でまとめてあるような本やサイトってあるんでしょうか?
帰ってきたら想像してた以上に色んなやり方を書いてもらえててなんか感動してます。
実は超初心者向けとされている本は読んでいて、>>745さんが書かれてる通りリストやfor inを使う範囲で出来そうな
単純な内容の1000行とかになる記録簿の整理なら覚えた範囲で可能そう、かつ超便利と思ったのがきっかけなんです。
ただ、’月’とかの単語を指定しての除去だけならそれで出来たんですが、同時に空行の除去をしようとすると
ろくに作動しなくなってしまったために色々調べてfilterに行き着いたという流れでした・・・。
特に、というと序列を付けてるみたいで違うのですが、>>745さんのコードが目からうろこでした。
さっきまでどうして空行が除去出来てるのか理解できずググりまくったんですが、さんざん見てたはずの.appendの特性の応用で
正直色々空行の除去についてググってた時に見た色んなコードよりスマートに思えました。
他の皆さんのコードもかなり学び甲斐があってほんと頭が下がりました。
今からまた一個一個調べて見直しますが、かなり成長出来そうなので楽しみです。
・・・ちなみになんですが、こういう引数の知識は基礎の基礎と思うのですが、
その一通りが日本語でまとめてあるような本やサイトってあるんでしょうか?
756デフォルトの名無しさん
2021/11/20(土) 17:42:34.55ID:IJPPTR8A pythonの勉強を1ヶ月位してるけど、ここ1ヶ月何度も解いてる問題がノーヒントだと解けない
たとえばこういうやつ
>>
文字列 str1 と str2 が引数として与えられたとき、 str2 が str1 を部分文字列として含むかどうか判定する関数 simple_match を作成してください。
具体的には、str2 を含む場合、 その部分文字列が開始される str1 のインデックスを返値として返してください。
str2 を含まない場合、 -1 を返してください。 ただし、simple_match の中で文字列のメソッドやモジュール(正規表現など)を使ってはいけません。
<<
以下コード
https://techiedelight.com/compiler/?~simple_match
局所的な部分は分かるんだけど、全体を把握してきれいな回答が作れない
こういうアルゴリズムはどっからとっかかりを作って組み立てていくの?
たとえばこういうやつ
>>
文字列 str1 と str2 が引数として与えられたとき、 str2 が str1 を部分文字列として含むかどうか判定する関数 simple_match を作成してください。
具体的には、str2 を含む場合、 その部分文字列が開始される str1 のインデックスを返値として返してください。
str2 を含まない場合、 -1 を返してください。 ただし、simple_match の中で文字列のメソッドやモジュール(正規表現など)を使ってはいけません。
<<
以下コード
https://techiedelight.com/compiler/?~simple_match
局所的な部分は分かるんだけど、全体を把握してきれいな回答が作れない
こういうアルゴリズムはどっからとっかかりを作って組み立てていくの?
757デフォルトの名無しさん
2021/11/20(土) 18:00:04.82ID:8IbVqVu9 個人的にそんな問題が解けることになんの価値があるのか理解不能だけど
スライスを使うと簡単に書けるよ
スライスを使うと簡単に書けるよ
758デフォルトの名無しさん
2021/11/20(土) 18:01:23.71ID:8IbVqVu9 スライスを知ってるかどうかはアルゴリズムというより言語の知識の話だよな
アルゴリズムを数知ってるよりググる能力が高い方が
十把一絡げレベルのプログラマならよほど当てになると思う
アルゴリズムを数知ってるよりググる能力が高い方が
十把一絡げレベルのプログラマならよほど当てになると思う
759デフォルトの名無しさん
2021/11/20(土) 18:17:57.11ID:IJPPTR8A こういう練習問題をすぐ解けないからって定期的にやり直すより
どんどん先へ勉強を進めてしまった方が良いのか?
どんどん先へ勉強を進めてしまった方が良いのか?
760デフォルトの名無しさん
2021/11/20(土) 18:31:09.23ID:7hjyIAPL >>756
典型的な2重ループのアルゴリズムの問題
s1 を、1文字ずつ処理していく。
s2 の先頭文字と一致したら、s1のインデックスを保存して、
1文字目の意味で、1も保存する
s1を1文字進めて、s2も1文字進めて、また一致すれば、
2文字目も一致したので、2も保存する
s1を1文字進めて、s2も1文字進めて、また一致すれば、
3文字目も一致したので、3も保存する
この数字が、s2の文字数と一致するまで増加したら、s2がs1に含まれる
スライスを使うと、もっと簡単に書けるのか?
典型的な2重ループのアルゴリズムの問題
s1 を、1文字ずつ処理していく。
s2 の先頭文字と一致したら、s1のインデックスを保存して、
1文字目の意味で、1も保存する
s1を1文字進めて、s2も1文字進めて、また一致すれば、
2文字目も一致したので、2も保存する
s1を1文字進めて、s2も1文字進めて、また一致すれば、
3文字目も一致したので、3も保存する
この数字が、s2の文字数と一致するまで増加したら、s2がs1に含まれる
スライスを使うと、もっと簡単に書けるのか?
761デフォルトの名無しさん
2021/11/20(土) 18:32:51.76ID:7hjyIAPL アルゴリズム系の問題は、図を描いて、考えた方がよい
762デフォルトの名無しさん
2021/11/20(土) 19:11:39.87ID:IJPPTR8A763デフォルトの名無しさん
2021/11/20(土) 20:00:29.61ID:w0sFPEUw 俺はこれは問題のための問題
クソ問だと思う
特に-1返すとか、モジュールはともかく、文字列メソッド使用不可とかバカの極み
クイズは無視してやりたいことを追え
クソ問だと思う
特に-1返すとか、モジュールはともかく、文字列メソッド使用不可とかバカの極み
クイズは無視してやりたいことを追え
764デフォルトの名無しさん
2021/11/20(土) 20:01:36.80ID:fQWlPv63 せっかくだからKMP法まで勉強しろ
765デフォルトの名無しさん
2021/11/20(土) 20:17:33.74ID:72MXZSnK766デフォルトの名無しさん
2021/11/20(土) 20:26:19.53ID:Kgb5xsxv 文字列をスライスするのって文字列のメソッド使ってるよね?
767デフォルトの名無しさん
2021/11/20(土) 20:54:17.15ID:785tmrzC > str2 が str1 を部分文字列として含むかどうか
> str2 を含む場合
逆転してね?
> str2 を含む場合
逆転してね?
768デフォルトの名無しさん
2021/11/20(土) 21:36:08.75ID:hT1QMP3Z769デフォルトの名無しさん
2021/11/20(土) 22:02:54.27ID:IJPPTR8A770デフォルトの名無しさん
2021/11/20(土) 22:05:42.97ID:hT1QMP3Z >>769
普通にググればいいよどうしても自力でやりたいなら組み込み関数のソースコード読んでパクればいいんじゃねやったことないけど
普通にググればいいよどうしても自力でやりたいなら組み込み関数のソースコード読んでパクればいいんじゃねやったことないけど
771デフォルトの名無しさん
2021/11/20(土) 22:16:28.52ID:eO5P7jHp >>756
自分でやるときどうする?
例えば location と cat なら
location
cat → 合わない
location
_cat → 合わない
location
__cat → お、合った、2個ずらしたから 2 を返せばいいんだな
って言うようにずらしながら比較していくよね
って言うところからやればいいんじゃね
自分でやるときどうする?
例えば location と cat なら
location
cat → 合わない
location
_cat → 合わない
location
__cat → お、合った、2個ずらしたから 2 を返せばいいんだな
って言うようにずらしながら比較していくよね
って言うところからやればいいんじゃね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- ネトウヨ、「高市さんがカンペを無視して存立危機発言をしたのは、岡田に『カンペ読むな』と執拗に言われたので言っただけ」と歴史を捏造 [314039747]
- 敵「ククク、キミの親友の俺くんの死体を蘇らせて操り、お前らと戦わせるぞ」お前ら「」←どうする?
- コウメ太夫のネタ考えたから評価してくれ
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- うち近所に本格的ピッツァ屋あるけど羨ましい?
