Pythonのお勉強 Part68

■ このスレッドは過去ログ倉庫に格納されています
2022/09/15(木) 18:52:26.67ID:VqLViKoX0
!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://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。

◇Pythonオフィシャルサイト http://www.python.org/
◇Pythonドキュメント https://docs.python.org/ja/3/
◇まとめwiki ttp://python.rdy.jp/

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

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

次スレの建立は>>985が挑戦する。(980通過して24h後も落ちなくなった)
### END of TEMPLATE ### ​
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured
2022/10/15(土) 14:38:02.16ID:PHpzEK3Ka
>>301
最短を目指すとかよくあると思うけど
304デフォルトの名無しさん (ワッチョイ 9f89-2yG4)
垢版 |
2022/10/15(土) 14:45:59.33ID:wUAlKc2l0
>>302
前後に貯めるのではなく、2文字ずつ並ぶ→3文字ずつ並ぶのように緩和できるようにしたいです。
例:AAAAAABBC -> AABAACABA
2022/10/15(土) 14:49:24.73ID:w1fQiwU/0
AABAACABA はNG箇所が2だけれど、
AAABACABA にすると1箇所で済む

2連続2箇所よりも3連続1箇所の方がスコアが低くなる評価関数の定義が必要
306デフォルトの名無しさん (ワッチョイ 0f10-cJ6U)
垢版 |
2022/10/15(土) 14:49:49.52ID:VXb7W7XW0
こういうパズル的なのはプログラミングお題スレで出題する方が早く回答が付きそうだな
307デフォルトの名無しさん (ワッチョイ 0f10-cJ6U)
垢版 |
2022/10/15(土) 14:51:37.73ID:VXb7W7XW0
>>305
n連続は1箇所につき2^n点のペナルティを課すとかは?
2022/10/15(土) 14:55:21.58ID:1JUKlkYAM
>>306
いや、ていうかよく考えたらこの質問Python関係ないじゃんね
309デフォルトの名無しさん (ワッチョイ 9f89-2yG4)
垢版 |
2022/10/15(土) 15:03:04.47ID:wUAlKc2l0
>>308
すいません。
使っているのがpythonだったのでここで質問しました。

やはり難しいようなので、皆さんのコメントを参考に自力で考えてみようと思います。
ありがとうございました。
2022/10/15(土) 15:15:21.01ID:ttRM3D3c0
>>304
26要素のリストで各文字の個数をカウント
最大のものを見つけ出す
最大/他全部で連続個数が分かる
最大の文字を連続個数並べて他の文字を順番に挟む
挟む時は各文字の文字数をつじつま合うようにリストをカウントダウンして調整

同じ文字は可能な限り離したいとか条件追加するともっと難しくなる
2022/10/15(土) 15:17:51.26ID:ubtsaD1N0
>>300
ちゃんと確認してないけど、交互に置けない場合が条件になるのかな?

不可能条件
最頻出文字数 > 文字総数/2
かな
2022/10/15(土) 15:17:59.84ID:ttRM3D3c0
文字の挿入は総数がつじつま合うようにもっと工夫が必要だな
まあ頑張ってくれ
2022/10/15(土) 15:18:54.05ID:ubtsaD1N0
かぶった上に劣化だった><
314デフォルトの名無しさん (ワッチョイ 9f89-2yG4)
垢版 |
2022/10/15(土) 15:33:35.79ID:wUAlKc2l0
>>310
>>311

ありがとうございます。
試してみます。
2022/10/15(土) 15:53:38.83ID:2u2iBEwS0
>>303
「なるべく」は結果についての話
最短は手順の話だから違うよね
2022/10/15(土) 16:21:01.13ID:w1fQiwU/0
ガチでなるべくなヒューリスティックな問題の方が現実には多い
2022/10/15(土) 16:39:39.77ID:ywjmScUEa
>>315
今回は結果の話しかないよな
2022/10/15(土) 17:41:55.96ID:Hv7z/9nw0
思いつきだけど
[合計文字数][26]の2次元配列を作る
各文字ごとに均等に配置
空白部分には空白なりNoneなり入れる
2次元配列を縦方向に連結して1次元配列にする
空白を除去する
ってのはどう?

aaabbc
[a,n,a,n,a,n]
[b,n,n,b,n,n]
[c,n,n,n,n,n]
abcaba
2022/10/15(土) 17:50:25.10ID:ttRM3D3c0
>>318
合計じゃなくて最大個数の文字数でいいな
2022/10/15(土) 18:29:11.63ID:a1geBJ2n0
for文の途中で条件に当てはまったら、for文の任意の値から処理を再開させる書き方とかありますか?
例えば「for x in range(10):」とあったとして、7の途中で条件に当てはまったら、3から再開してそのまま最後まで処理するみたいな
321デフォルトの名無しさん (ワッチョイ 0f10-cJ6U)
垢版 |
2022/10/15(土) 18:32:12.78ID:VXb7W7XW0
while使った方がいい
2022/10/15(土) 18:48:06.23ID:w1fQiwU/0
処理で条件が変わるような場合は、whileにしてもハマる
いつ終わるか判らないようなループは本質的に不安定
2022/10/15(土) 18:48:39.13ID:i+M+Mx9R0
再帰でいいのでは?
2022/10/15(土) 18:52:19.28ID:2u2iBEwS0
>>320
そういうジェネレータ作ってrangeと置き換えればいいんじゃね
2022/10/15(土) 19:03:32.69ID:jl8SG5IY0
あんま綺麗じゃないけど、こんな感じでいいのか?
競プロの連中ならもっとスマートなの書いてくれるはず

text = "aaabbc"
char = "abcdefghijklmnopqrstuvwxyz"

char_dict = []
for c in char:
____count = 0
____for t in text:
________if c == t:
____________count += 1
____if count > 0:
________char_dict.append({"name":c, "count":count, "left":count})

char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True)
result = ""
pre = ""
for _ in text:
____ci = 0
____while True:
________now = char_dict[ci]["name"]
________if now == pre:
____________ci += 1
________else:
____________result += now
____________pre = now
____________char_dict[ci]["left"] -= 1
____________char_dict = sorted(char_dict, key=lambda e: (e["left"], -e["count"]), reverse=True)
____________break

print(result)
2022/10/15(土) 19:10:00.74ID:jl8SG5IY0
よく見たら、聞くまでもなくダメなやつだなすまん
2022/10/15(土) 19:57:10.99ID:icx3tYx0M
>>325
とりあえずcollectionsのCounterだけは覚えようか
2022/10/15(土) 20:30:20.03ID:Hv7z/9nw0
Numpyで作ってみたで
https://ideone.com/nQcfVW
2022/10/15(土) 20:30:36.10ID:Ji35UDrea
きったね
2022/10/15(土) 20:48:46.65ID:jl8SG5IY0
>>325
ありがとう

このソートって思ったよりも難しいな
ツリー構造は理解できねえわ
2022/10/15(土) 21:15:49.97ID:jl8SG5IY0
アンカミスってた

>>327
ありがとう
2022/10/16(日) 01:02:14.69ID:moLuv1n40
>>299
https://ideone.com/b6vqgk
すごーく分かりづらいけど、2種類に分けて導き出した
区切り文字中心に考えたのに、そこで処理を分けてない体たらく
あと、同じ文字は出来るだけ遠く?は難しかった

〆切ってそうな話題ですまん、Python覚えたくてやってみた
333デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/16(日) 20:28:46.68ID:MD6QHwBW0
質問です。
vscordとpycharmと他のパイソン系なのですが
「マルチグラボ」対応してるのを探してます。
お勧めはありますか?
334デフォルトの名無しさん (ワッチョイ 9f89-2yG4)
垢版 |
2022/10/16(日) 20:56:42.88ID:tl8sUwzf0
Windowsで作成した画像を外付けHDDに保存する。
※macとWindows共通で使えるFAT32使用
それをmacPCのpythonのglobで画像のパスを読み込んだ時に
「バスケ」や「ポケモン」などの濁点と半濁点の検索ができません。
※printで中身を見るとあります。
原因や対処方法がありましたら教えて下さい。
2022/10/16(日) 21:20:40.98ID:F/Fiy6Pc0
unicodedata.normalize()
2022/10/16(日) 21:28:07.05ID:cG9YvU2e0
あれはあれでunicodeなんだよな
統一できてない
337デフォルトの名無しさん (ワッチョイ 9f89-2yG4)
垢版 |
2022/10/16(日) 21:50:36.51ID:tl8sUwzf0
>>335
ありがとうございます。
うまくできました。
2022/10/16(日) 22:24:25.86ID:U1duiFVid
>>299
これ貪欲法で解ける??
解けるならAtcoderのCくらいででそう
2022/10/16(日) 22:53:43.69ID:1lEHOAQp0
Mac は「ハ + 濁点」「ホ + 半濁点」に分割しているのか

1文字にまとめるのが普通
2022/10/16(日) 23:02:52.94ID:cG9YvU2e0
昔からそうだったとかでもないのに
デファクトスタンダードに合わせるのは嫌というイキりたいOSの性格が現れている
2022/10/16(日) 23:16:15.14ID:N+fxT3Y10
昔はバやパを平気で使ってたぞ
2022/10/17(月) 00:13:29.63ID:uAMFVFmC0
半角カナを全角に変換した時に
文字数が変わるのを許容できるかという問題
2022/10/17(月) 01:43:17.91ID:fAAk7KG50
>>299
https://ideone.com/7qVDRD
内包表記とスライスを使ってみた
・・・Pythonヤバすぎる、便利すぎる
2022/10/18(火) 01:25:14.77ID:zc0QoIzs
単純なy1,y2の差ではなく、
y1がy2をcrossover(上抜け)したところの値とy2との差を、crossunderするまで取り続ける
y1がy2をcrossunder(下抜け)したところの値とy2との差を、crossoverするまで取り続ける
そのデータを取得したいのですが
何かうまい具合にできないものでしょうか
where使って切り替わりの判別はできたのですが

import numpy as np
import matplotlib.pyplot as plt

fig, ax = plt.subplots()
t = np.linspace(0, 10, 1000)
y1 = np.sin(t)
y2 = np.cos(t)

ax.plot(t, y1)
ax.plot(t, y2)

fig.tight_layout()
plt.show()

np.where(y1>y2,1,0)
2022/10/18(火) 10:34:44.39ID:jjMTEoo10
test = set(A[‘A1’] for B in C[‘C1’] for A in B[‘D’] )

ってどういうコマンドなんでしょうか。
入れ子が多すぎてよくわからず…
何がどう処理されてtestには何が入るんでしょう?
2022/10/18(火) 10:55:11.72ID:RkLeKawPM
バラせば済む話だわな
2022/10/18(火) 11:05:17.60ID:xDZsbnE90
test = set(...) は
https://docs.python.org/ja/3/library/stdtypes.html#set-types-set-frozenset
なんで置いといて中身の話だけど
A['A1'] の所を一時的に C B A と順に3回置き換えて動かすとみえてくるかも
2022/10/18(火) 11:09:45.56ID:jjMTEoo10
>>346
バラす場合は

test = set(A[‘A1’]
      for B in C[‘C1’]
          for A in B[‘D’] )
ここでバラすってことですかね?
349344
垢版 |
2022/10/18(火) 12:45:29.61ID:zc0QoIzs
ゴテゴテになりましたがなんとかできました
https://ideone.com/huqmu0
#0.0 97
#crossover sin,cos 2
#crossunder sin,cos 1
2022/10/18(火) 12:56:03.93ID:41XzDqyZM
>ここでバラすってことですかね?
>>348
フィルタリングしてるのはわかってるやんな?
2022/10/18(火) 13:24:53.77ID:jjMTEoo10
>>350
すみません
フィルタリングってなんでしょうか…?
352デフォルトの名無しさん (ブーイモ MM7f-Z2+b)
垢版 |
2022/10/18(火) 14:51:24.85ID:5thtfPTiM
>>345
forループに直して読めばいい

test = set()
for B in C[‘C1’]:
__for A in B[‘D’]:
____test.add(A[‘A1’])

あまりいい内包表記の使い方ではない
353344
垢版 |
2022/10/18(火) 14:53:46.55ID:zc0QoIzs
差とったバージョン貼るの忘れてました >>349
https://ideone.com/yDQwqO

せっかくnumpyやpandas使っているのにforで回す感じが納得できませんが妥協します
2022/10/18(火) 16:18:57.44ID:L21rDi/Na
直前のコマンドの実行結果の確認ってどうやるんですか?
shellで言う、echo $? をやりたい
2022/10/18(火) 20:19:11.20ID:wvci1M8ka
[{'id': 1, 'name': 'hogehoge', 'start_time': datetime.time(22, 0)}]
ってリストを
{'id': 1, 'name': 'hogehoge', 'start_time': datetime.time(22, 0)}
と言う辞書に簡単に変換する方法ってありますか?
クエリーセットから辞書に出来れば一番いいんだけど...。
356デフォルトの名無しさん (ワッチョイ 4b97-+LDt)
垢版 |
2022/10/18(火) 20:24:46.13ID:BZdlnClE0
>>355
普通に最後に[0]つけるだけでは?
2022/10/18(火) 20:27:28.02ID:8ovbGjhuM
>>353
こんな感じじゃ駄目?
https://ideone.com/dRYCAH
2022/10/18(火) 20:32:38.62ID:wvci1M8ka
>>356
ほんまや!ありがとう!
2022/10/18(火) 21:48:30.15ID:zc0QoIzs
>>357
cross地点のラインとか見やすくていいですね
実際に使うチャートのプロットに使ったら良い感じになりました!
ありがとうございます!!
2022/10/19(水) 11:35:50.09ID:XPI64Z3+0
Wsl2上Ubuntu20.04でtorch使って機械学習させてたんだけど、3万イテレーションぐらいで
Segmentation fault
とだけ出て落ちてた
VRAMの容量が不足したと考えてあってる?
あとLinux環境でこれをデバッグするなら何がいいか教えて欲しい
2022/10/19(水) 11:54:47.46ID:tuP7W/zl0
SageMakerだな
2022/10/19(水) 12:36:42.67ID:rgBskw8B0
Linuxの組み込みRuby・mruby とかは、Top, Valgrind などを使うのかな?
363デフォルトの名無しさん (オイコラミネオ MM8f-4fP8)
垢版 |
2022/10/19(水) 22:23:16.68ID:3NiqH8qVM
>>1
p = [0,1]
q = [2,3]

r = [0,2,1,3]
にまとめたい、、、
364デフォルトの名無しさん (ブーイモ MM7f-+LDt)
垢版 |
2022/10/19(水) 23:34:10.81ID:bkANZ+VWM
>>358
良かった。おめでとう

>>363
zipとflatten使えばできる、flattenは自前で書いても可
365デフォルトの名無しさん (ブーイモ MM7f-+LDt)
垢版 |
2022/10/19(水) 23:37:46.30ID:bkANZ+VWM
>>360
再現性あるかどうかは大事。ないなら電圧降下とか宇宙線とか回避できない事象かもしれない。
再現性あるならまずはメモリのテストとか?
2022/10/20(木) 00:13:53.61ID:mcMX29GY0
メモリ壊れててSegmentation faultは運良すぎる
十中八九バグ踏んでる
2022/10/20(木) 00:21:35.47ID:Ia5AvZ4ba
>>360
まずは普通のubuntu環境でやってみな
2022/10/20(木) 06:33:42.06ID:h2hzFpVPM
note.nkmk.meブログ書いてる人は一体何者なん?凄すぎでしょ
369デフォルトの名無しさん (オイコラミネオ MM8f-4fP8)
垢版 |
2022/10/20(木) 09:06:52.31ID:rssHMFyJM
>>364
ありがとう
370デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/20(木) 11:03:22.52ID:rq8DqaFj0
.pyの拡張子のプログラムファイル送られてきたんだが
ひらきかたがわからん
2022/10/20(木) 11:07:41.43ID:5IJGeHxC0
単に開きたいならテキストエディタでおけ
よくわからんものをいきなり実行しないほうがいいでしょ。
2022/10/20(木) 11:33:20.98ID:SiOwIn850
送ってきた相手が知人だとしても疑うべき
373デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/20(木) 11:59:34.42ID:rq8DqaFj0
返信ありがとう。
ココナラの仕事関連で贈られたブツだから
妖しくはないと思う。
ただひらき方がわからんだけw
テキストね。ありがとう!
374デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/20(木) 14:07:22.08ID:rq8DqaFj0
.pyだからgoogle colabとかvsでもひらけますか?
2022/10/20(木) 14:15:44.78ID:SM0e0PhV6
はい。
376デフォルトの名無しさん (ワッチョイ 0fbb-mZPx)
垢版 |
2022/10/20(木) 14:46:25.62ID:VKVL3k1N0
すまんが、開発環境について教えて欲しいんだけどさ
NumPyの行列がどんな形してるか、あらかじめ推測がつく場合にVSCodeのエディタ上で表示してくれるような機能ってなんかないのかな?
あったら教えてほすぃ
2022/10/20(木) 15:41:29.99ID:Ia5AvZ4ba
ない
型で指定できない以上無理
2022/10/20(木) 16:40:26.62ID:fK+SugQF0
https://numpy.org/devdocs/reference/typing.html
これで型ヒント書いてPylance/Pyrightさんがどこまで対応してきてるかやな
379デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/20(木) 16:52:22.34ID:rq8DqaFj0
>>375
今グーグルコラボひらいたんやが。
ファイル、編集、表示、挿入などあるけど。
なかなかファイルを読み込むっていうのができひんねん。
教えて下さい!
380デフォルトの名無しさん (ワッチョイ 6b01-apoB)
垢版 |
2022/10/20(木) 16:55:29.69ID:rq8DqaFj0
ファイル→ノートブックをアップロード→ダウンロードできひんw
2022/10/20(木) 17:02:32.17ID:5IJGeHxC0
当該ファイルをテキストエディタで開いてコピペしたらええんでないの?
2022/10/20(木) 17:44:01.65ID:aiWxu/Mz0
Pythonの乱数はCPUのbit長とあまり関係ないみたい
64bit= 8バイトや128bit = 16バイトが効率がいいのかとおもったが
一度にまとめて長いのを生成したほうがいいみたい


https://ideone.com/JlYdMk

import random
from time import perf_counter

def randcomp(byte = 4, loop = 100000):
N =[]
K =[]
for i in range(3):
K.append(2**i)
N.append (2**(8*byte*K[-1]) -1)
for i in range(3):
t = perf_counter()
for n in range(loop * int(4/K[i]) ): random.randint(0, N[i])
t = perf_counter() - t
print("%d%s : %0.3f sec" % (8*byte*K[i], "バイトで乱数生成" , t), flush=True)

print("同一長乱数はまとめて生成したほうがいいが分割したほうがいいか")
randcomp(100, 30000)
2022/10/20(木) 18:21:28.94ID:fK+SugQF0
>>382
https://docs.python.org/ja/3/library/random.html#random.random
> ほとんど全てのモジュール関数は、基礎となる関数 random() に依存します。

ソースまで追ってないけど係数掛けてるだけでない?精度求めないなら構わないけど
2022/10/20(木) 18:38:57.83ID:aiWxu/Mz0
納得
整数の乱数も浮動小数点から生成してるのね
整数値はCPUの整数演算から生成してるとおもってた
2022/10/20(木) 18:57:44.54ID:0LxHKv3Y0
>>376
PyCharmのPro版ならそういう機能あったかも。まあ有料だけど
386デフォルトの名無しさん (ワッチョイ 0fbb-mZPx)
垢版 |
2022/10/20(木) 19:05:49.55ID:VKVL3k1N0
年3万かあ・・・・教えてくれたのはありがたいけどちょっとこれは・・・・
2022/10/20(木) 19:38:31.27ID:tMcnfqkZa
randomは整数じゃないか?
2022/10/20(木) 19:57:06.72ID:zFT+mBQ80
熱雑音から生成するのなかったっけ
2022/10/20(木) 20:09:52.87ID:tMcnfqkZa
あるよ
量子論的ななんかもあるよ
2022/10/20(木) 20:13:14.05ID:zFT+mBQ80
大勢で祈ると値が偏る奴
2022/10/20(木) 20:18:06.06ID:SiOwIn850
競馬場でやって
2022/10/20(木) 20:59:29.59ID:kx/1mwDkM
計算結果を観測するまで分からない乱数
2022/10/20(木) 21:14:59.71ID:zFT+mBQ80
量子使う奴は意思が入り込むよ
未来の科学ではそんなの当たり前になってるだろうけど、現時点ではオカルト
二重スリット実験とかも本当は不思議でも何でもない
394デフォルトの名無しさん (ブーイモ MMbf-+LDt)
垢版 |
2022/10/20(木) 23:49:24.98ID:PbiytdPqM
ほんとの乱数を使う必要がある場合と疑似乱数でいい場合は区別したほうが良くないか。
Pythonで出し分ける方法は調べてないから知らないけど。
2022/10/21(金) 08:18:44.01ID:qQxL52gE0
seedを物理的に作ってあとは擬似乱数だな
組み込みだとADコンバータのLSBを使ったりする
2022/10/21(金) 08:50:48.36ID:Yzioqt7t0
pythonの資格取りたいんですが難しいですか?
どれくらい勉強すれば行けますか
2022/10/21(金) 13:17:33.66ID:d7WYWX6T6
>>365-367

wsl2上ではイテレーションはまちまちだけど再現してる
ノーマルなubuntu環境構築して再現性あるか見てみるわ
2022/10/21(金) 16:11:11.34ID:QvDTOA5Y0
>>396
2万時間くらい
2022/10/21(金) 17:01:14.33ID:Yzioqt7t0
>>398
2万時間の根拠は?
2022/10/21(金) 17:19:59.05ID:KvwM7lznM
調べりゃ解ることを
わざわざ聞くやつは
2マン時間で十分だと言うことだろう
2022/10/21(金) 17:25:07.63ID:2aEevlzi0
調べると分かるのか
2022/10/21(金) 17:50:39.73ID:+NQJkQPg0
小さめファイルのハッシュ値を計算したい人です
ファイルIOにかかる時間のほうが圧倒的に時間食うことがわかりました
ハッシュ計算が3倍遅いほうでも差がほぼないようです
2022/10/21(金) 17:52:02.77ID:+NQJkQPg0
ここに書き込んだのでは話ではなかった
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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