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

■ このスレッドは過去ログ倉庫に格納されています
2021/03/16(火) 07:19:44.36ID:PfTIXkDh
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
派生言語はそれぞれ専スレがあるのでそっち池。
「Ruby」「某言語では」をNGワード登録推奨。荒らしは、完全スルー放置が一番きらいです。

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

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

Pythonの★ソースコードをそのまま5ちゃんにコピペすると、インデントが崩れてチヌ★
5chの仕様【【【複数の連続半角スペースはなにもなかったことにされる&タブは普通には入れられない】】】のため、どうにもなりましぇん。
↓等の、いわゆるコードう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

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

次スレは >>985 あたりが挑戦してくだしあ。(980過ぎて自動落ちは、無くなって久しい)
### END OF TEMPLATE ###
2021/05/06(木) 19:30:05.47ID:1p3Rvf0Y
Winならレジストリいじってタイムアウトと判断する秒数を変える
2021/05/06(木) 20:30:14.34ID:v54vsLS/
import pandas as pd
df = pd.DataFrame([['ia','ib','ic'],['id','ie','if']],columns=['a','b','c'])
if not df==None:
_print(df)

ってやると
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
というエラーが出ましたが
仮にdf=Noneだった場合にdf.all()とかやると今度はNoneはallを持ってません的なエラーがでます
こういうときってどう対応すればよいでしょうか
2021/05/06(木) 20:33:45.39ID:v54vsLS/
ちなみに今は
if not str(df)=='None':
ってやってます
2021/05/06(木) 20:54:15.24ID:yh3xJpCx
>>548
そもそもNone判定したい場合は==じゃなくてisを使う
if df is Not None:
みたいな書き方にする必要がある

で、注意点として
df = pd.DataFrame()
みたいに、空のデータフレームで初期化してる場合はNoneではない(is Noneで判定してもFalseで返ってくる)
空かどうかを判定したい場合はemptyを使う
2021/05/06(木) 20:54:36.39ID:PCWSPh5c
if df is not None:
に変える

理屈は込み入っているので他の人にお任せする
2021/05/06(木) 20:59:03.00ID:yh3xJpCx
間違ってNotが大文字になってた……notが正しい
2021/05/06(木) 21:14:18.42ID:v54vsLS/
>>550,551
なるほど isでしたか
さっそく書き換えてみたらうまくいきました
ありがとうございます
554515
垢版 |
2021/05/06(木) 22:01:24.30ID:DEG1F9Nj
>>506
pythonの初回インストール時に以下の英文が表示されるので
この英文部分をクリック

Disable path length limit
Changes your machine configuration to allow programs,including Python,
to bypass the 260 character”MAX_PATH” limitation.

pythonのアップデートもかねて
今使ってるバージョンの最新版インストーラーを公式からダウンロードして実行し
最後のダイアログに上の英文が表示されたらクリックしてみて
555デフォルトの名無しさん
垢版 |
2021/05/07(金) 00:28:15.35ID:TdDivYCp
>>554
配布用なのでロングパスは許さんマンにしました…
556デフォルトの名無しさん
垢版 |
2021/05/07(金) 05:18:06.85ID:yOYKTU3u
if df:
じゃだめなの
557デフォルトの名無しさん
垢版 |
2021/05/07(金) 05:30:41.77ID:FZBmU73W
一連の作業のなかで
2回同じ相手にループ処理をします
一回は存在確認、もう一回はデータ取得
処理の距離が結構離れてるんだけど、一回目のときにデータ取得もして放置しておくことはできます

こういうとき、きちんと2回に分けた方がいいですか?
一回でガバっとやっていいですか?
2021/05/07(金) 10:57:12.07ID:O1URPzeE
>>557
ケースバイケース

何のために2回に分けたいのか、もしくは1回にまとめたいのかという目的を明確にした上で
漠然とした状況をもっと特定する必要がある
559デフォルトの名無しさん
垢版 |
2021/05/07(金) 11:37:20.61ID:fHTm+yKw
>>546
after() after_cancel() を多用するイメージ
560デフォルトの名無しさん
垢版 |
2021/05/07(金) 11:39:40.44ID:fHTm+yKw
>>557
2回目までに消えてる可能性が無いと保証されてるならいつでもいい
2021/05/07(金) 12:31:30.97ID:MaAf4oEf
現在のバージョンがPython 3.8.7 - Dec. 21, 2020とした場合
同じ3.8系の中から現時点で最新のPython 3.8.10 - May 3, 2021をインストール
3.8系から3.9とか3.10に変えると、pipを使ってインストールしたパッケージが動かないことがある
かもしれないので変えないほうが良いと思う

how to Update Python to the Latest Version
https://www.youtube.com/watch?v=UXSxBx8eG28
2021/05/07(金) 20:02:05.37ID:StgLFl94
コールバック関数の説明は、
公式ドキュメントのどこに書いてありますか?
2021/05/07(金) 20:42:35.41ID:HcCkNDs0
bindで探せば情報はある
bindの実装をソースで見れば
わかるんじゃ
コールバック関数自体はただの関数が
コールバックで呼ばれてるだけなので
説明とかあるかな
564デフォルトの名無しさん
垢版 |
2021/05/07(金) 22:32:12.12ID:TdDivYCp
max(0, 10)
で10が返るのはなぜですか?
565デフォルトの名無しさん
垢版 |
2021/05/07(金) 22:32:58.62ID:TdDivYCp
あ、もうしわけない
これkeyじゃないんですね
早とちりしました…
566デフォルトの名無しさん
垢版 |
2021/05/08(土) 08:55:22.68ID:DE4arKCM
全体的に人がいないね。
567デフォルトの名無しさん
垢版 |
2021/05/09(日) 17:43:20.28ID:29Yn0Nuv
ttps://techiedelight.com/compiler/?AUYY

こういう練習問題があるんだが、こういうアルゴリズム?をぱっと思いつくようになるにはどうしたらいいんだろうか
何度も挑戦したからもはや覚えてしまったんだが、似たような問題出されても答えられる気がしないし
ゴールとしては問題形式ではなく自分のプログラミングで出てくる必要があるんだろうし
2021/05/09(日) 17:52:07.18ID:E0SRP95C
自分の手でやるとしたらどうするか考える
その手順をフローチャートに書き出す
それを素直にコードに落とす
それをイケてる感じにリファクタリングする

まあ実際そんなのできなくてもモノは作れるし、特にPythonはそういうアルゴリズム書ける人は少ないと思うよ
2021/05/09(日) 18:07:38.33ID:E0SRP95C
あとは、問題の細分化だな
これはアルゴリズムの実装に限らずプログラミングにおいて常に有効な考え方だ
例えば、str1の指定した位置iから始まる位置に文字列str2があるかどうかを調べて返す関数 submatch(str1, str2, i) があれば、
この submatch を i を増やしながら str1 全体にわたって適用すれば解けるだろ?
で次はこの submatch をさらに細分化する、それを自分が簡単に実装できる十分簡単な問題になるまで繰り返す
2021/05/09(日) 18:08:31.75ID:lcdfGCto
まず条件を満たしているということはどういうことかを考える
判定する方法がわかったら脳死で実装する
どれだけクソなコードが出来上がったかを観察してまともにする
2021/05/09(日) 19:04:21.95ID:CGDxHqdD
自分が頭の中でどうやってその問題を解いてるかをコードに落とし込むのが一番単純かもね

問題が簡単じゃないとこの方法は難しいけど
2021/05/09(日) 19:22:45.44ID:LMLrHz7X
答えはこうじゃないの
def simple_match(str1,str2)
return str1.find(str2)
573567
垢版 |
2021/05/09(日) 19:47:04.83ID:29Yn0Nuv
>>568
フローチャート作るときはどんなアプリ、ウェブサービス使ってるのかな?

細分化すると、細分化されたもの同士をつなぐところでつまづきがちだなあ
2021/05/09(日) 19:48:52.28ID:E0SRP95C
>>573
フローチャートは成果物として残すものではない
そこらへんの紙に書け
2021/05/09(日) 20:01:01.07ID:6ong4OY9
>>567
全然関係ないツッコミで恐縮なのだが問題文と実装あってなくね?
問題文の方がおかしそうだけど
576567
垢版 |
2021/05/09(日) 20:16:54.70ID:29Yn0Nuv
>>575
問題文と実装が正しいかどうかを把握する能力がないので具体的に教えてもらえると助かる
一応、答えとして掲載されているから正しいとは思うが
問題分もコピペしただけ
文字列のメソッドやモジュール(正規表現など)使うなとも書いてあったが

https://utokyo-ipp.github.io/3/3-2.html
while文による繰り返し、の下の方の練習問題
577デフォルトの名無しさん
垢版 |
2021/05/09(日) 20:35:42.76ID:Fj+EbY4X
>>567
自分が計算機になったと思って具体的な入力から出力を手で求めろ
するべき処理が見えてくる
2021/05/09(日) 21:06:48.89ID:6ong4OY9
>>576
や、ほぼ日本語だけの問題
> str2 が str1 を部分文字列として含むかどうか判定する関数
例だとstr1がlocation、str2がcat、これで期待される戻り値が2なんでしょ?
str1がstr2を部分文字列として含むかどうか、あるいは、str2がstr1に部分文字列として含まれるかどうか、が関数の仕様として適切だと思うけど

こっちの頭が狂ってる? なんか不安になってきた
2021/05/09(日) 21:20:07.31ID:MVBjVGaC
問題文の日本語が間違ってるね
str1やstr2みたいな悪い命名の見本

これほんとに東大の人間が作ってるんだとしたらヤバいな
580567
垢版 |
2021/05/09(日) 22:08:42.45ID:29Yn0Nuv
>>578
ああそういうことか
たしかに一部入れ替わってるかもね
>>579
命名するとしたらどんなのがいいの?
参考になるサイトとかあるのかな
2021/05/09(日) 22:43:11.51ID:4LY/LzCs
>>580
変数名とかの良い付け方とかは、基本的には誰が見ても分かるってのが大前提だね
(この辺の話は、リーダブルコード、ベタープログラマ、達人プログラマーみたいなコーディング作法本に詳しく書いてある)

自分が付けるならsrc_strとtarget_strって付けちゃうかな……
(自分も勉強中なのでこれ最善かは知らん、もっと一般的に良い名前があるかもしれないけど)
2021/05/09(日) 23:17:56.42ID:MVBjVGaC
>>580
簡単なものならtext, patternとか
とにかく意味の違いを名前に反映させる
str1とstr2じゃどっちがどっちか全然わからない
意図を伝えるのが大事

命名で参考にするのはその言語の標準ライブラリと
使い方がわかりやすいようなライブラリ
(str.find(sub, start, end)を参考にすればsimple_match(string, sub_string)とか)
2021/05/09(日) 23:29:01.12ID:MVBjVGaC
>>567
算数と同じで問題や解き方を図で捉えるようにすれば理解が捗るし応用も効きやすい

その解答例は2つの配列の単純な総当たりと根本は同じ
文字列(配列)のインデックスをそれぞれ進めたりリセットしながら比較する様子を
図にして脳内アニメーションで再生できれば似たような問題にも対応できる
2021/05/09(日) 23:42:28.80ID:yYD7w3ek
Cをやってみれば良いんじゃね?
2021/05/09(日) 23:50:37.41ID:uTd1VsWW
Bから始めよう
586567
垢版 |
2021/05/10(月) 03:25:25.87ID:oDeb4Nzy
模範解答を使わず、自分の実力ならこんな感じに作るだろうなってのを改めて作ってみた
https://techiedelight.com/compiler/?~0jNN

2重ループの中で str1[ i ] と str2[ J ] をくらべりゃいいんだろ
みたいなことをやって不具合を小手先で正した

模範解答の
https://techiedelight.com/compiler/?AUYY

while j < len(str2) and str1[i+j] == str[j]

なんて一生かかっても思いつけない気がする……

あとここの掲示板のせいだと思うんだけど
自宅の回線でこのスレにURL付きの投稿しようとすると、数時間書き込み規制になる
だからずっとスマホで書き込みしてる
587デフォルトの名無しさん
垢版 |
2021/05/10(月) 04:11:00.85ID:HXPAQUt8
文字単位の処理方法を考える前にこんなのを考えちゃうなぁ
def f(a, b):
____ la, lb = len(a), len(b)
____ for i in range(la - lb + 1):
________ if a[i : i + lb] == b: return i
____ return -1
print(f("hello","el"))
2021/05/10(月) 07:25:33.08ID:ZcdY0167
ここにいる人に言うまでもないとは思うけれど、KMP法など使うと時間計算量をO(S1*S2)ではなくO(S1+S2)で解くことができます
2021/05/10(月) 11:17:21.89ID:hyNFKJLf
>>586
正しく動作するのかなぁ。jのループの中でiを加算しちゃってるけど。
2021/05/10(月) 11:37:45.73ID:giJ6lOgz
>>586
模範解答を使わないやつを少し圧縮するとこういう感じになる

def simple_match(str1, str2):
____for i in range(len(str1) - len(str2) + 1):
________a = 0
________for j in range(len(str2)):
____________if str1[i+j] == str2[j]:
________________a += 1
________________if a == len(str2):
____________________return i
____return -1

5行目のif文は実質的にはloopの継続判定だけど
pythonのfor-loopでは直接それを表現できないのでwhileに置き換えたのが模範解答

アルゴリズムそのものを理解するということと
アルゴリズムを特定の言語で表現する方法を知るということとは少し分けて考えたほうがいいかも
591デフォルトの名無しさん
垢版 |
2021/05/10(月) 13:22:46.52ID:QDSNEet8
基本的なものでもあらかじめ知ってた方が早い

高速文字列解析の世界 - 岩波書店
https://www.iwanami.co.jp/book/b257894.html

こういうのも読んで>>567の言う通りに暗記したものを思い出すしかない
なので思い付いてるのは1割未満
592デフォルトの名無しさん
垢版 |
2021/05/10(月) 15:11:13.59ID:lCZGOQhN
str1 とか str2 とかはともかく
変数名に str や string を使う香具師は筋が悪い
2021/05/10(月) 16:45:53.24ID:auO1c8Ib
関数が汎用的になればなるほど変数名も抽象化されてしまうのは仕方がない
仮にstrlen関数がpythonにあったら、分かりやすい仮引数名はstrかstringしか思いつかんわ
594デフォルトの名無しさん
垢版 |
2021/05/10(月) 16:54:27.06ID:BLE40/70
組み込み関数を変数名に使うんだね
2021/05/10(月) 17:32:17.10ID:loNnKCpC
>>593
阿鼻叫喚やな
2021/05/10(月) 18:33:52.38ID:giJ6lOgz
>>592
strと違ってstringはグローバルにおさえられてるわけじゃないから
文脈から何のstringか分かるようなら使っても問題ないよ
標準ライブラリやそのテストコードでも普通に使われてる
2021/05/10(月) 18:44:39.69ID:ro06Xyvc
>>593
strText, str1, str0 などとするといい。
2021/05/10(月) 20:10:42.20ID:jLWGeya+
>>591
本で解説されてるような高度なアルゴリズムは自力で思い付くものでもないし覚えてそのまま使うのは普通だろうが、>>567が言ってるのはプログラマとして自力で書けなきゃまずいレベルのものだろう。
そりゃあらかじめ知ってりゃその方が早いが、そのレベルから暗記して思い出す以外にやりようがないならコピペの継ぎ接ぎしかできない底辺プログラマだぞ
2021/05/10(月) 20:58:18.93ID:tUbSWZNp
>>586
図解にしたらわかりやすい

str1="ihavealemon"
str2="ale"
012345678901
0ihavealemon
1a
2_a
3__a
3__al
4___a
5____a
6_____a
6_____al
6_____ale!

想定外の意味不明
2021/05/10(月) 23:36:33.67ID:ViCp850r
>>586
たぶん、5ch で広告規制されているURL を書いたらダメ!
エラーになったら、同じURLで投稿しないように、全角文字に変換するとか、
URLの間に、@など全角文字を入れたりするとか

MANGO 板で、NG ワードを絞り込みできる

たまに、いきなり吸い込まれるURLがある。
はてなブログとか、twitter の長いURLとか

5chから返事が戻って来なくて、いきなりアク禁になる
601デフォルトの名無しさん
垢版 |
2021/05/11(火) 09:06:20.36ID:Zn4VBJW/
tkinterでMyDialogクラスなんか作るとき

class MyDialog():
__init__(self, root):
__self.root = root

がよくあるパターンだと思うんですが
これをする理由はなんですか?
602デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:29:49.62ID:FWZS8iTB
>>600
amazon は %61mazon とか %41mazon とかすると通るω
603デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:36:53.88ID:FWZS8iTB
>>601
●tkinter 標準の Dialog の第一引数 (self 以外) が root を想定しているから
●後で MyDialog 中から root にアクセスするときに便利
●別に引数で受けずに global root でも良いがみっともない
604デフォルトの名無しさん
垢版 |
2021/05/11(火) 10:52:33.39ID:FsPVc/v0
class MyD():
def __init__(self, root):
_master = tk.Toplevel(root)

使い捨てのモーダルダイアログ作成とかならroot使うのこのときだけだったりするので
そういうときは逆にメンバ化しない方がいいような気はする
605デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:31:29.50ID:p52W3PYV
デストラクタの挙動がよくわかりません。
以下のコードを実行すると

#!/usr/bin/env python3

class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp

if __name__ == "__main__":
gp = Gnuplot()
del gp

------------------
デストラクタの箇所で
del self.pgp
AttributeError: pgp
と属性エラーが出るのですがなにが悪いのかわかりません。
606デフォルトの名無しさん
垢版 |
2021/05/12(水) 00:45:07.28ID:p52W3PYV
もしかして、クラス変数だからdelできない?
2021/05/12(水) 01:37:11.15ID:+hwSdZi+
それオブジェクトじゃないからだよ
608デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:37.32ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
609デフォルトの名無しさん
垢版 |
2021/05/12(水) 09:15:47.20ID:HCx7UYF5
削除出来ないんじゃなくて
存在しないものはアクセス出来ないって言われてるだけ
2021/05/12(水) 11:18:04.73ID:bpb1h3yH
>>606
del Gnuplot.pgp

明示的にdelする必要ないけどね
2021/05/12(水) 12:17:03.99ID:Hk10kKTI
試してないけど、
del self.__class__.pgp
ならいけんじゃね?
2021/05/12(水) 12:28:22.20ID:eYOXfLq+
>>605
importはなるべくファイルの先頭で行うべきでは?
613デフォルトの名無しさん
垢版 |
2021/05/12(水) 21:55:38.61ID:p52W3PYV
>>610, 611
削除できました。ただ、クラス変数をデストラクタで削除してしまうと
次回インスタンス宣言するときに必要なクラス変数が存在しないことに
なってしまってひどいバグの温床になることがわかりました。
確かに明示的に削除する必要はないですね。

>>612
モジュールインポートでグローバルな名前空間が汚れるのが嫌なので
クラスのスコープにいれて初期化子とデストラクタでモジュールのロードと
破壊を自動化しようとしているんです。
別に文頭でモジュールのインポートの宣言をしなければいけないという
わけではないのでは。
2021/05/12(水) 21:56:32.94ID:gj/TogFi
class Gnuplot:
import PyGnuplot as pgp
def __del__(self):
del self.pgp
615デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:18:22.84ID:p52W3PYV
モジュールをクラス変数ではなくインスタンス変数として束縛したいのですが
できません。

--------
#!/usr/bin/env python3

class Gnuplot:
def __init__(self):
import PyGnuplot as pgp
pass

def cmd(self,commands):
self.pgp.c(commands)
pass

if __name__ == "__main__":
agp = Gnuplot()
agp.cmd("plot sin(x)")

を実行すると、
AttributeError: 'Gnuplot' object has no attribute 'pgp'
と出ます。
__init__の中でPyGnuplot をインポートしてインスタンス変数self.pgp
に束縛したつもりなんですが、どうもそれがうまくいかないみたいなんです。
モジュール変数はクラス変数にしか束縛できないんでしょうか。。
2021/05/12(水) 22:38:42.04ID:eYOXfLq+
self.pgp = pgpをするのはダメなんですっけ
617デフォルトの名無しさん
垢版 |
2021/05/12(水) 22:47:49.00ID:p52W3PYV
>>616
なーるほど。盲点でした。
おかげさまでうまくいきました。
618デフォルトの名無しさん
垢版 |
2021/05/13(木) 14:19:15.50ID:gQUYeg5t
reference counter が増えるというオチ
2021/05/14(金) 00:00:09.34ID:kJLP/i/a
pythonのrandomモジュールって安全ですか?秘密鍵を作ろうと思います
2021/05/14(金) 00:18:08.78ID:fpxIiQfD
そんな質問するレベルの人が手を出すもんじゃないと思うが
621デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:29:44.03ID:N2rlLeCr
python 2 の頃に
for line in fp.readLines():
lst = line.rstrip().split('\t')
...
と描いていたコードがあって
python 3 だと
TypeError: a bytes-like object is required, not 'str'
と出たので
lst = line.rstrip().decode('utf-8').split('\t')
と描き治したら動くのですが
これって変じゃないですか?
bytes を .rstrip() すると勝手に str に変更されるんですか?
622デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:30:49.82ID:N2rlLeCr
>>619
>Python は中心となる乱数生成器としてメルセンヌツイスタを使います
623デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:32:50.50ID:N2rlLeCr
>>619
>>622 の補足
あなたの使っている乱数、大丈夫?
http://www.math.sci.hiroshima-u.ac.jp/m-mat/TEACH/ichimura-sho-koen.pdf
https://docs.python.org/ja/3/library/random.html
2021/05/14(金) 10:40:45.89ID:fhATjntu
>>622
(秘密鍵の定義がないので微妙な指摘な気もするけど)暗号論的擬似乱数生成器でなくてよいの?
625デフォルトの名無しさん
垢版 |
2021/05/14(金) 10:45:39.79ID:N2rlLeCr
>>624
リンク先をちゃんと読んでね
2021/05/14(金) 10:48:56.15ID:fhATjntu
>>625
読んだるんだけど

>メルセンヌツイスタは完全に決定論的であるため、全ての目的に合致しているわけではなく、暗号化の目的には全く向いていません。
627デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:05:15.28ID:N2rlLeCr
読み方が足りない
2021/05/14(金) 11:33:52.87ID:DQCJDc0D
めんどうくせえな
スパッと語らんかい

>>619
安全じゃないです
はいおわり
629デフォルトの名無しさん
垢版 |
2021/05/14(金) 12:12:40.48ID:kXWjJhBx
コイントスで生成しよう
2021/05/14(金) 15:48:46.53ID:RGk279mo
>>621
そもそもpython3だとreadlinesの戻りの型がstrのlistだと思う
631デフォルトの名無しさん
垢版 |
2021/05/14(金) 16:51:03.65ID:MEf5zm8X
def tes(i):
_return i+1,i*2

l1 =[]
l2 =[]
for i in range(10):
_l1, l2 ←appendしたい tes()

temp = tes()
l1.append(temp[0])
l2 append(temp[1])
こう書くのが一番いいですか?
もっといい書き方ありますか?
632デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:40:34.28ID:dwsPOlKo
from functools import reduce
a, b = reduce(lambda x, y: (x[0] + [y + 1], x[1] + [y * 2]), range(10), [[], []])
633デフォルトの名無しさん
垢版 |
2021/05/14(金) 17:46:17.42ID:dwsPOlKo
l1, l2 = reduce(lambda x, y: (lambda a, b, c: (a[0] + [b], a[1] + [c]))(x, *tes(y)), range(10), [[], []])
634デフォルトの名無しさん
垢版 |
2021/05/14(金) 18:14:41.94ID:jPY26TL6
でもこんなコード書いてきたらレビュー通さないでしょ
2021/05/14(金) 18:43:05.82ID:mAmkSsiZ
>>631
それでいいと思う
ただ、tesが簡単な処理ならわざわざ関数挟まないかな
2021/05/14(金) 21:40:11.71ID:QMgVBpCt
メルセンヌ・ツイスタは疑似乱数生成器。
Ruby on Rails では、テストで同じ乱数を再現できるので便利

暗号化は、SecureRandom。
Linux のエントロピー、/dev/random, /dev/urandom

RubyのSecureRandomの乱数生成の実装を読んでみた
https://note.com/corocn/n/n84c91872c51c
2021/05/14(金) 22:40:17.62ID:SGxg0iSp
>>631

a,b=tes(i)
L1.append(a)
L2.append(b)

lは識別しにくい小文字しばりならlineとか
2021/05/14(金) 23:07:56.07ID:0kdm8qdh
>>633
>a[0] + [b]

これ入力サイズが大きくなるとreduceのループと合わせてO(n^2)になる
2021/05/14(金) 23:16:18.97ID:0kdm8qdh
>>637
リストの汎用的な名前はxs, ysみたいなのを使うとx, yと対応させやすくて読みやすい
関数型で一般的に使われてる命名方法

xs, ys = [], []
x, y = tes(i)
xs.append(x)
ys.append(y)
2021/05/15(土) 06:38:38.29ID:+N4SlPlF
>>627
お前が何言いたいのか意味不明だったから聞いてやったんだけど、日本語が不自由だったみたいね
2021/05/15(土) 11:13:03.00ID:JEJaRs2J
そこは、Pytorchの自然言語処理が
ここまで進化したか!と驚愕する
場面かも知れないね
2021/05/15(土) 11:32:32.09ID:qr5cWu1T
それは確かにたいしたものだ
2021/05/15(土) 11:59:29.14ID:MlX8dqv4
>>640って>>619なの?なんなの???
2021/05/15(土) 12:00:24.17ID:MlX8dqv4
>>637
先頭大文字ってだめじゃなかったっけっか
645デフォルトの名無しさん
垢版 |
2021/05/15(土) 12:07:21.87ID:skJMcbh+
シンタックス的には無問題
2021/05/15(土) 12:28:58.54ID:6nRGWhyX
>>628 他の方々
ありがとうございます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。