当スレに★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(超初心者用) その53
https://mevius.5ch.net/test/read.cgi/tech/1615846784/
次スレたては >>985 あたりが挑戦する。
### END OF TEMPLATE ###
探検
【まず1嫁】くだすれPython(超初心者用) その54
■ このスレッドは過去ログ倉庫に格納されています
2021/06/09(水) 21:05:44.61ID:zRBfpo4e
685デフォルトの名無しさん
2021/08/27(金) 14:35:37.85ID:FpTGA0p8 API一覧はどっかに載せといて欲しいんだよなあ
BeautifulSoupみたいなドキュメント大嫌い
BeautifulSoupみたいなドキュメント大嫌い
686デフォルトの名無しさん
2021/08/28(土) 15:20:25.04ID:1FNDrQ4q androidスマホでクローリングとかスクレイピングとかPythonでやりやすいですか?
あるいは他に楽な方法あったら教えてください(プログラミング言語でなくとも)
あるいは他に楽な方法あったら教えてください(プログラミング言語でなくとも)
687デフォルトの名無しさん
2021/08/28(土) 20:01:10.55ID:XJOj+thk blenderでpython つかってるんですけど
10から-10の範囲で動く変数 var があって
その数値に応じてもう一つの変数 var2 を0から0.2の数値に変化させたいんですが
たとえばこう記述すると
if var >= 0:
var2 = 0.2
else:
var2 = 0
varがプラスになった途端にいきなりvar2の数字が0.2になっちゃうじゃないですか
なのでvar2を徐々に0.2にまで増やしていきたいんですが、なにかいい数式とかないですかね
変数varは一応10から-10の範囲を動くとはしていますが、場合によっては数値がまったく違ってくるので
varを条件式で使う場合の条件はvarが0以上の数値をもっているかいないかくらいしかないです
なのでvar2と他のなにかをつかって数値を調整するしか無いんですが
10から-10の範囲で動く変数 var があって
その数値に応じてもう一つの変数 var2 を0から0.2の数値に変化させたいんですが
たとえばこう記述すると
if var >= 0:
var2 = 0.2
else:
var2 = 0
varがプラスになった途端にいきなりvar2の数字が0.2になっちゃうじゃないですか
なのでvar2を徐々に0.2にまで増やしていきたいんですが、なにかいい数式とかないですかね
変数varは一応10から-10の範囲を動くとはしていますが、場合によっては数値がまったく違ってくるので
varを条件式で使う場合の条件はvarが0以上の数値をもっているかいないかくらいしかないです
なのでvar2と他のなにかをつかって数値を調整するしか無いんですが
688デフォルトの名無しさん
2021/08/28(土) 21:56:09.25ID:KCQB2Q+0 var2 = (var+10) / 100
これでどや!
これでどや!
689デフォルトの名無しさん
2021/08/28(土) 23:04:51.28ID:o0C8VYNv var2=(10-var)/100
じゃね?
じゃね?
690デフォルトの名無しさん
2021/08/28(土) 23:10:19.97ID:Syg1tfaV > 10から-10の範囲で動く変数 var があって
っと書いてあるのに
> varがプラスになった途端
とか意味わからんので俺は傍観中
っと書いてあるのに
> varがプラスになった途端
とか意味わからんので俺は傍観中
691デフォルトの名無しさん
2021/08/29(日) 00:00:15.10ID:f3cdDfKi 単純にリニアに対応させるのはよくやるしありそうだけど
残念ながら標準ライブラリにはない
python MinMax scaling
でググるといろいろでてくる
残念ながら標準ライブラリにはない
python MinMax scaling
でググるといろいろでてくる
692デフォルトの名無しさん
2021/08/29(日) 00:40:53.81ID:a8dnpsvI 変数名にvarとかletとか意味わからなくなるからやめろ
693デフォルトの名無しさん
2021/08/29(日) 00:41:59.01ID:kSqJuAzn じゃあhogeにします
694デフォルトの名無しさん
2021/08/29(日) 00:44:34.75ID:a8dnpsvI hogeとfugaも見ただけで思考が停止する
695デフォルトの名無しさん
2021/08/29(日) 00:57:44.19ID:kSqJuAzn bar bazならOKだね
696デフォルトの名無しさん
2021/08/29(日) 01:24:41.28ID:TPHdi4yb わざとなのか知らんが
0->10
0.2->-10
なのか
0->-10
0.2->10
なのかはっきりしないな
圧倒的に知能の欠落を感じる
0->10
0.2->-10
なのか
0->-10
0.2->10
なのかはっきりしないな
圧倒的に知能の欠落を感じる
697デフォルトの名無しさん
2021/08/29(日) 02:51:56.56ID:8LB32Hf6 そんな事いちいち書かなくても文章見れば分かるじゃない
ガイジなのは一目瞭然
ガイジなのは一目瞭然
698デフォルトの名無しさん
2021/08/29(日) 07:38:58.20ID:H3IeLoxc windows環境のpythonで追加モジュールインストールなしでシステム音量を変える方法はありますか
スクリプトを流し終わったらミュート解除して音を流してミュートにする的なことをやりたいです
winapi触るようなイメージなんですが
スクリプトを流し終わったらミュート解除して音を流してミュートにする的なことをやりたいです
winapi触るようなイメージなんですが
699デフォルトの名無しさん
2021/08/29(日) 10:34:36.66ID:dJJJwYZf windows 10、Python 3.9.1 の環境です
https://i.imgur.com/27ebmLL.jpeg
インポートの仕様についてですが、以下のファイルがあります
/run.py
/modules/a1.py
/modules/a2.py
runはa1を読み込んでいて、a1とa2はお互いに依存しているのでお互いをimportしています。
ここでrun.py を実行すると以下のエラーが表示されます。
Traceback (most recent call last):
File "C:\run.py", line 2, in <module>
from modules.a1 import A1C
File "C:\modules\a1.py", line 2, in <module>
from modules.a2 import A2C
File "C:\modules\a2.py", line 2, in <module>
from modules.a1 import A1C
ImportError: cannot import name 'A1C' from partially initialized module 'modules.a1' (most likely due to a circular import) (C:\modules\a1.py)
エラーの内容はrun→a1→a2→a1 と、インポートが循環しているからというのはわかるのですが、pythonの文法として 循環インポートはコード書く側が注意しないといけないものなのでしょうか
これ以上ファイルを増やしたくないのですが、 __init__.py というものを使う必要があるのでしょうか。
https://i.imgur.com/27ebmLL.jpeg
インポートの仕様についてですが、以下のファイルがあります
/run.py
/modules/a1.py
/modules/a2.py
runはa1を読み込んでいて、a1とa2はお互いに依存しているのでお互いをimportしています。
ここでrun.py を実行すると以下のエラーが表示されます。
Traceback (most recent call last):
File "C:\run.py", line 2, in <module>
from modules.a1 import A1C
File "C:\modules\a1.py", line 2, in <module>
from modules.a2 import A2C
File "C:\modules\a2.py", line 2, in <module>
from modules.a1 import A1C
ImportError: cannot import name 'A1C' from partially initialized module 'modules.a1' (most likely due to a circular import) (C:\modules\a1.py)
エラーの内容はrun→a1→a2→a1 と、インポートが循環しているからというのはわかるのですが、pythonの文法として 循環インポートはコード書く側が注意しないといけないものなのでしょうか
これ以上ファイルを増やしたくないのですが、 __init__.py というものを使う必要があるのでしょうか。
700デフォルトの名無しさん
2021/08/29(日) 10:38:21.86ID:SOFRyS0H >>699
普通はお互いに依存してる部分を切り出して共通クラスを作るぞ
普通はお互いに依存してる部分を切り出して共通クラスを作るぞ
701デフォルトの名無しさん
2021/08/29(日) 11:42:47.82ID:6aPcdB/x >>688>>689
アニメーションさせるオブジェクトの設定を見直していたら数値が変わってしまってvar2は0から1、varが取得する数値が-100から100くらいになってしまったので
最初にあげた数値とは違っていますけど参考にして書き直しました
(10+var)/400 if var >= 0 else (10-var)/400
varが0近辺になるときに返す値を0から1の範囲でうまい具合に動かしたかったんですがこれでなんとかなりました
どうもでした
アニメーションさせるオブジェクトの設定を見直していたら数値が変わってしまってvar2は0から1、varが取得する数値が-100から100くらいになってしまったので
最初にあげた数値とは違っていますけど参考にして書き直しました
(10+var)/400 if var >= 0 else (10-var)/400
varが0近辺になるときに返す値を0から1の範囲でうまい具合に動かしたかったんですがこれでなんとかなりました
どうもでした
702デフォルトの名無しさん
2021/08/29(日) 12:50:56.45ID:Y4MENvlF >>699
インポートが実行されるタイミングで循環が発生しないようにすればいい
その例だと「A1Cをimport -> そのためにはA2Cが必要 -> そのためにはA1Cが必要」で循環してる
例えばa2.pyのほうをimport modules.a1 as A1とかにすればインポート実行時には循環しない
設計を変更するのが一番だけど
何か特別な事情があるならインポートを遅延させるとかで対処する
インポートが実行されるタイミングで循環が発生しないようにすればいい
その例だと「A1Cをimport -> そのためにはA2Cが必要 -> そのためにはA1Cが必要」で循環してる
例えばa2.pyのほうをimport modules.a1 as A1とかにすればインポート実行時には循環しない
設計を変更するのが一番だけど
何か特別な事情があるならインポートを遅延させるとかで対処する
703デフォルトの名無しさん
2021/08/29(日) 13:13:15.88ID:nWxynwj6 これifいらんことない?
704デフォルトの名無しさん
2021/08/29(日) 13:42:27.03ID:dJJJwYZf >>700,702
どうもです。
という事は、最初1ファイルにズラーッと書いて一段落したからちゃんとクラスごとに別ファイルに分けようと思ったら
切り貼りしてimport文付け足すだけでリファクタリング出来る保証は1ミリも無いという事か・・・
どうもです。
という事は、最初1ファイルにズラーッと書いて一段落したからちゃんとクラスごとに別ファイルに分けようと思ったら
切り貼りしてimport文付け足すだけでリファクタリング出来る保証は1ミリも無いという事か・・・
705デフォルトの名無しさん
2021/08/29(日) 13:44:36.38ID:ik0U7t7o そんなに気にしなくていいよ
そのレベルだと、後でリファクタリングしたくなる頃には今より遥かに腕が上がっていて、最初の頃に書いた糞コードなんて全部捨てることになるから
そのレベルだと、後でリファクタリングしたくなる頃には今より遥かに腕が上がっていて、最初の頃に書いた糞コードなんて全部捨てることになるから
706デフォルトの名無しさん
2021/08/29(日) 14:28:14.75ID:W2eZWYJ9 >>699
コードとかレスはよく読んでないけど
公式ドキュメントにはfrom import使わずに全部importだけでやれば回避できると書いてあった気がする
まあ実際には100%問題を回避できるわけじゃないはずだが
コードとかレスはよく読んでないけど
公式ドキュメントにはfrom import使わずに全部importだけでやれば回避できると書いてあった気がする
まあ実際には100%問題を回避できるわけじゃないはずだが
707デフォルトの名無しさん
2021/08/29(日) 17:14:19.33ID:D+nxUtQ9708デフォルトの名無しさん
2021/08/29(日) 17:31:44.52ID:f3cdDfKi 外部プロセスでPowerShell呼ぶとか
そもそもPowerShellで書くのはダメなのか
適材適所
そもそもPowerShellで書くのはダメなのか
適材適所
709デフォルトの名無しさん
2021/08/29(日) 18:01:08.20ID:wRzFeJgq 趣味でゲームを作っているpython初心者です
発想を間違えている気がするのですが調べても独力で修正できないので質問させてください
pythonでは ファイル間を超えて有効な広域配列変数を定義することはできない という理解であっていますか?
アイテム情報や命名マスタなど「あちこちから参照したいマスタデータ」の持ち方が分からず困っています
トップレベル(≒高いレベル)でCSVロードを済ませた配列なりインスタンスなりを、中間クラスの引数として目的の関数まで持ちまわるしかないのでしょうか?
発想を間違えている気がするのですが調べても独力で修正できないので質問させてください
pythonでは ファイル間を超えて有効な広域配列変数を定義することはできない という理解であっていますか?
アイテム情報や命名マスタなど「あちこちから参照したいマスタデータ」の持ち方が分からず困っています
トップレベル(≒高いレベル)でCSVロードを済ませた配列なりインスタンスなりを、中間クラスの引数として目的の関数まで持ちまわるしかないのでしょうか?
710デフォルトの名無しさん
2021/08/29(日) 20:57:36.98ID:+XFaADRO モジュールとして参照できる
<vars.py>
X=10
Y=100
<main.py>
import vars
print(vars.X)
print(vars.Y)
<vars.py>
X=10
Y=100
<main.py>
import vars
print(vars.X)
print(vars.Y)
711デフォルトの名無しさん
2021/08/30(月) 14:16:06.77ID:a7szkEqk memcached
pymemcache
pymemcache
712デフォルトの名無しさん
2021/08/30(月) 15:03:22.80ID:IH9WNTpQ713デフォルトの名無しさん
2021/08/30(月) 17:48:48.11ID:7NK+aNuC configparserもヘナチョコいんよねえ
714デフォルトの名無しさん
2021/08/30(月) 22:43:34.34ID:30yuDIRz python2でpip等使わずlz4のデータ展開をする方法はありますか?
715デフォルトの名無しさん
2021/08/31(火) 00:05:53.27ID:2Z3a814f OSにliblz4があるか導入できるならctypesモジュールでいけんじゃない
716709
2021/08/31(火) 19:12:15.52ID:9YLyrvXT みなさんありがとうございます
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました
pymemcacheが探してた答えのようです
>>712
自分の設計が悪いだけなのでしょうが、引数で持ち回ると全体的にコードが冗長になってしまい正解が分からなくなっていました
717デフォルトの名無しさん
2021/08/31(火) 19:30:48.38ID:VFuuQVk7 グローバル変数的なものを格納するだけに使うつもりで、常に1つしかインスタンス化しないようなクラスは、全くインスタンス化せずクラス変数とクラスメソッドで使うというのもありですか?
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。
インスタンス化してインスタンス格納用の変数を用意するのが面倒だなと思いまして。
718デフォルトの名無しさん
2021/08/31(火) 20:01:08.53ID:2Z3a814f mockで差し替えたり、初期化を遅延したりしないんならそれでもいいんじゃない
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね
もし必要になったときに見直せばいい
といってもシングルトンの制御いれるだけなんだけどね
719デフォルトの名無しさん
2021/08/31(火) 21:31:36.81ID:1mws6K8n https://ideone.com/Xn6V4Y
1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment
defの中からグローバル変数?は書き換えられないということですか?
あたま痛い
1から10まで数え上げるプログラムで
total = 0をdefの上の行に移動するとエラーになります
>UnboundLocalError: local variable 'total' referenced before assignment
defの中からグローバル変数?は書き換えられないということですか?
あたま痛い
720デフォルトの名無しさん
2021/08/31(火) 21:47:50.29ID:vXJ7Oc0W 複数行コメントアウトしたいとき
'''
print("hello")
'''
pass
という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか?
'''
print("hello")
'''
pass
という風にしますが、
解除したいとき変更箇所が2箇所あるのでちょっと面倒だと思いました
なので
#'''
print("hello")
#'''
pass
こうして、上部のみの#を付けたり消したりするだけで切り替えできるようにしてみたのですが
何か不測の事態とか起きるでしょうか?
721デフォルトの名無しさん
2021/08/31(火) 21:48:09.84ID:vX6Y4w4T >>719
global total
global total
722デフォルトの名無しさん
2021/08/31(火) 21:53:19.20723デフォルトの名無しさん
2021/08/31(火) 23:25:58.49ID:7dGeW7mE >>719
Pythonの変数のスコープについて調べたほうがいいかもね
Pythonの変数のスコープについて調べたほうがいいかもね
724デフォルトの名無しさん
2021/08/31(火) 23:47:03.52ID:2Z3a814f725デフォルトの名無しさん
2021/09/01(水) 07:51:46.18ID:A3Q1UiDE twintってライブラリ使ったことある人おる?
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる
自分のアカウントのすべてのツイートをスクレイピングしてきたいんだが、10日前くらいまでのツイートしかとれなくて困ってる
726デフォルトの名無しさん
2021/09/01(水) 13:06:04.44ID:uLacWkrf727デフォルトの名無しさん
2021/09/01(水) 20:28:34.09ID:KwaoNT+v いちばん勢いあるPythonスレがこのスレで、この程度の勢いとか
Pythonほんとに人気あるの?
Pythonほんとに人気あるの?
728デフォルトの名無しさん
2021/09/01(水) 20:51:14.35ID:zw5pi55j ム板と言うか5ch自体が衰退メディアですし
729デフォルトの名無しさん
2021/09/01(水) 22:50:28.57ID:UppKED7J730デフォルトの名無しさん
2021/09/02(木) 12:59:54.32ID:DVH2qPZi Windowsでminiconda(4.9.2/python3.8.5)使っててproxy関係のエラーが出る。
proxyが必須なNW環境。
baseだとproxyエラーが出ずrequestで外部URLのスクレイピングなどもできる。
それ以外の環境をconda createで作ってそっちをactivateした状態からだと「cannot connect to proxy」エラーが出る。
.condarcにはproxyを記述してある。
どの環境からconda configを見てもHTTPもHTTPSもproxy情報が参照できている。
baseをcloneした環境を試したらそっちは繋がる。
cloneで作った環境とcloneせずにcreateした環境(proxyエラーになる)とでライブラリをチェックしたけどopensslとかcertifiとか入ってるもの自体はほとんど同じ。
違いというとcreateした方はversionがconda-forgeの最新版になってるからそこだろうか。
minicondaの最新版のインストーラ(4.10.3/python3.9)を使って再インストールしたらbaseからでも繋がらない。
proxy接続のためにWindowsの証明書ストアに.crtファイルをインポートとかしてるからその辺りかもしれない。
proxyが必須なNW環境。
baseだとproxyエラーが出ずrequestで外部URLのスクレイピングなどもできる。
それ以外の環境をconda createで作ってそっちをactivateした状態からだと「cannot connect to proxy」エラーが出る。
.condarcにはproxyを記述してある。
どの環境からconda configを見てもHTTPもHTTPSもproxy情報が参照できている。
baseをcloneした環境を試したらそっちは繋がる。
cloneで作った環境とcloneせずにcreateした環境(proxyエラーになる)とでライブラリをチェックしたけどopensslとかcertifiとか入ってるもの自体はほとんど同じ。
違いというとcreateした方はversionがconda-forgeの最新版になってるからそこだろうか。
minicondaの最新版のインストーラ(4.10.3/python3.9)を使って再インストールしたらbaseからでも繋がらない。
proxy接続のためにWindowsの証明書ストアに.crtファイルをインポートとかしてるからその辺りかもしれない。
731デフォルトの名無しさん
2021/09/02(木) 16:02:33.72ID:L8dQJCTS 初めてwindows使うんですがcondaとpipってどっちがいいんでしょうか
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です
今まではノリでpip使ってたんですがググるとcondaもいいと言われて迷ってきました
主な使用用途は簡単なスクリプトからデータ計算、セキュリティの勉強や自分用のまとめ表作りなど本当に様々です
732デフォルトの名無しさん
2021/09/02(木) 16:15:26.22ID:4vWPiFe2733デフォルトの名無しさん
2021/09/02(木) 19:59:47.57ID:bRMdZZsN734デフォルトの名無しさん
2021/09/02(木) 20:21:57.15ID:PLPQmXRE735デフォルトの名無しさん
2021/09/02(木) 20:32:53.62ID:lSTkj0Rg736デフォルトの名無しさん
2021/09/02(木) 20:41:46.54ID:t+wDMqp+ クラス変数に順次アクセスする方法はありますでしょうか。(define代わりにクラス直下に変数が複数ある状態)
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。
__dict__.valuesで取れるとあったのでリストに入れてforで回そうと思ったのですが、変数以外にいろんな属性がついてきてしまいます。
737デフォルトの名無しさん
2021/09/02(木) 20:55:57.53ID:DVH2qPZi >>732
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。
原因分かったわ。
世の中に配布されてるcertifiのcacert.pemっていうファイルにこの環境で使ってる独自の証明書のpemファイルの中身を追記したら繋がった。
コピペは避けたいから2ファイル読ませられないかとcertifiを調べたけどcacert.pemが決め打ちだから無理っぽい。
ついでになぜか3.8.5までしか動かない問題をチェックしたがそっちは解消されず。
3.9にすると同じ方法でも繋がらないどころかconda自身のアップデートもできない。
openssl周りじゃないかと思うけど諦めた。
738デフォルトの名無しさん
2021/09/03(金) 11:02:01.16ID:qtGmv/9F739デフォルトの名無しさん
2021/09/03(金) 13:14:44.01ID:QJ/1j3Lw >>738
出先なんで試せてないですが、そんな感じです。厳密には変数名ではなくて値を取りたいです。
出先なんで試せてないですが、そんな感じです。厳密には変数名ではなくて値を取りたいです。
740デフォルトの名無しさん
2021/09/03(金) 21:55:16.43ID:T2V+s1mX741デフォルトの名無しさん
2021/09/05(日) 13:43:56.65ID:LaSEjliV tzinfoが設定されているdatetimeオブジェクトを、時差が適用された状態で文字列か新しいdatetimeオブジェクトに変換したいです
具体的には↓のコードのlocal_dtから日本時間に変換したdatetimeオブジェクトが欲しいです
↓のコードではpublishedは最初UTCで、それをAsia/Tokyoのlocal_dtに変換しています
しかしlocal_dtのmonthやdayなどを参照しても日本時間になっていません
時差の実際の適用は手動でやる必要があるのでしょうか?
def get_published(self, obj):
print('tzinfo', obj.published.tzinfo) # UTC
tz = pytz.timezone('Asia/Tokyo')
local_dt = obj.published.astimezone(tz)
print('conv tzinfo', local_dt.tzinfo) # Asia/Tokyo
return local_dt
具体的には↓のコードのlocal_dtから日本時間に変換したdatetimeオブジェクトが欲しいです
↓のコードではpublishedは最初UTCで、それをAsia/Tokyoのlocal_dtに変換しています
しかしlocal_dtのmonthやdayなどを参照しても日本時間になっていません
時差の実際の適用は手動でやる必要があるのでしょうか?
def get_published(self, obj):
print('tzinfo', obj.published.tzinfo) # UTC
tz = pytz.timezone('Asia/Tokyo')
local_dt = obj.published.astimezone(tz)
print('conv tzinfo', local_dt.tzinfo) # Asia/Tokyo
return local_dt
742デフォルトの名無しさん
2021/09/05(日) 14:51:07.53ID:LgQhIBwq localtime()
743デフォルトの名無しさん
2021/09/05(日) 14:53:32.33ID:lJqHVJAL744デフォルトの名無しさん
2021/09/05(日) 15:54:14.08ID:LaSEjliV745デフォルトの名無しさん
2021/09/05(日) 16:08:51.59ID:lJqHVJAL746デフォルトの名無しさん
2021/09/05(日) 19:53:30.08ID:ejEr4mJx リストの結合について質問です
リストの先頭要素を末尾に移動したいとします
ex)[0,1,2]→[1,2,0]
コマンドラインで以下のように書いたところ
2行目で can only concatenate list (not "int") to list というTypeErrorが発生してしまいました
li = list(range(3))
li[1:] + li[0] # TypeError
結果として
li[1:] + li[:1]
としたら問題なく通ったのですが、先に書いた方がエラーになるのはどうしてですか?
li[0]は0(int型)なので、スライスを使用して取得したリスト(li[1:] で得られる [1, 2]、リスト型)とは加算演算できない、という認識で良いですか?
で、li[:1]で取得できるのはリスト型の[0]なので加算可能ということでしょうか
リストの先頭要素を末尾に移動したいとします
ex)[0,1,2]→[1,2,0]
コマンドラインで以下のように書いたところ
2行目で can only concatenate list (not "int") to list というTypeErrorが発生してしまいました
li = list(range(3))
li[1:] + li[0] # TypeError
結果として
li[1:] + li[:1]
としたら問題なく通ったのですが、先に書いた方がエラーになるのはどうしてですか?
li[0]は0(int型)なので、スライスを使用して取得したリスト(li[1:] で得られる [1, 2]、リスト型)とは加算演算できない、という認識で良いですか?
で、li[:1]で取得できるのはリスト型の[0]なので加算可能ということでしょうか
747デフォルトの名無しさん
2021/09/05(日) 20:47:37.17ID:DaMQ65LY >>746
大体そんな感じ
"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations
大体そんな感じ
"+ (加算) 演算は、引数同士の和を与えます。引数は双方とも数値型か、双方とも同じ型のシーケンスでなければなりません。前者の場合、数値は共通の型に変換され、加算されます。後者の場合、シーケンスは結合 (concatenate) されます。"
https://docs.python.org/ja/3/reference/expressions.html#binary-arithmetic-operations
748デフォルトの名無しさん
2021/09/05(日) 20:51:43.82ID:ejEr4mJx749デフォルトの名無しさん
2021/09/06(月) 12:19:20.10ID:5X8quI1P ファイル読み込み時に入力セパレータを改行から他の文字列に変える事は出来ないのでしょうか?
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい
perlなら$/='\n\n'みたいに入力のレコードセパレータを改行2個にしたり出来るのですが
今はファイル一括で読み込んでsplitしてるので読み込み時間がえらく掛かってしまいます
1行ずつ連続した改行がくるまで読んで連結するとかはあまりスマートじゃないのでなにか上手い方法知ってらっしゃる方いましたら教えて下さい
750デフォルトの名無しさん
2021/09/06(月) 12:45:22.69ID:n3QcSaSA csvとして読み込め
751デフォルトの名無しさん
2021/09/06(月) 12:47:18.91ID:FistWoaj open関数のnewlineパラメータでできそうだけど速くなる気がしない
752デフォルトの名無しさん
2021/09/06(月) 14:44:42.59ID:DsY+3+kX >>743
変数名や引数名の付け方が最低だな
変数名や引数名の付け方が最低だな
753デフォルトの名無しさん
2021/09/06(月) 14:46:25.44ID:DsY+3+kX >>746
li[1:] + [li[0]]
li[1:] + [li[0]]
754デフォルトの名無しさん
2021/09/06(月) 14:48:25.79ID:DsY+3+kX755デフォルトの名無しさん
2021/09/06(月) 15:11:11.17ID:h2TdR+zH first_value = li.pop(0)
li.append(first_value)
実行速度を気にするならdequeとか使うんかね
li.append(first_value)
実行速度を気にするならdequeとか使うんかね
756デフォルトの名無しさん
2021/09/06(月) 15:25:00.95ID:5X8quI1P >>754
すみません、2行ずつ読む意味が分からないんですがgzip化された25万行くらいのファイルでも読み込むと
d = fp.read()で一括で読んだ時は6秒程度、d = fp.readlines()やd = [x for x in fp]で1行毎に読んだ時は0.3秒程度と読み込みだけで結構な差が出てますので一括が原因だと考えてます。
やりたい事は下記のような必ず改行2連続で区切られたデータひと固まりをリストの1要素として取得したいわけですが、これを下記のようにやると読み込みに時間が掛かってしまうので先の質問に至ったわけです
d = fp.read()
s = d.split('\n\n')
aaa
bbb ここのひと固まりの行数は可変
ccc
ddd
eee
fff
ggg
hhh
すみません、2行ずつ読む意味が分からないんですがgzip化された25万行くらいのファイルでも読み込むと
d = fp.read()で一括で読んだ時は6秒程度、d = fp.readlines()やd = [x for x in fp]で1行毎に読んだ時は0.3秒程度と読み込みだけで結構な差が出てますので一括が原因だと考えてます。
やりたい事は下記のような必ず改行2連続で区切られたデータひと固まりをリストの1要素として取得したいわけですが、これを下記のようにやると読み込みに時間が掛かってしまうので先の質問に至ったわけです
d = fp.read()
s = d.split('\n\n')
aaa
bbb ここのひと固まりの行数は可変
ccc
ddd
eee
fff
ggg
hhh
757デフォルトの名無しさん
2021/09/06(月) 16:49:12.87ID:cl/YIp9D 人間の発想だと改行が2個続くことを条件に分割してやれば早いって思えるけどpythonのあるべき書き方だと違うやり方の方が早いこともありそうな気がするね。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。
元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。
例えばだけど1行ずつ読んでkeyを行番号にvalueにして中身は条件判断せずにテキストを読み込み切ってからvalueを縦に走査して改行のみが入ったところで区切りの処理をするみたいな形にしたら早まらんかな。
元の質問の狙いとしては改行が2個続いたときに普通は使われない文字(例えば▲とか)に1回置換してそこからまた▲を行区切りとして読めば短縮されるのでは?というように見える。
けど756を見るとその置換処理の時点で6秒かかって意味なさそうに見えるわな。
758デフォルトの名無しさん
2021/09/06(月) 16:53:07.95ID:VKhiLpUq759デフォルトの名無しさん
2021/09/06(月) 17:15:24.45ID:5X8quI1P760デフォルトの名無しさん
2021/09/06(月) 17:34:12.87ID:cl/YIp9D ファイル開くときのopenでnewlineに改行2個入れてみたら?
761デフォルトの名無しさん
2021/09/06(月) 17:35:55.31ID:cl/YIp9D >>760
エラー出たわ
エラー出たわ
762デフォルトの名無しさん
2021/09/06(月) 18:22:41.52ID:5X8quI1P なんか調べてたら公式のissue152248で任意の区切り文字での読み取りの話を色々やられてたんで、それ通りやればとりあえずは望み通りの動きが出来ました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました
まあ知らない記述やらモジュールとか使ってるんで全く内容理解してませんが
長々と失礼しました、回答頂いた方ありがとうございました
763デフォルトの名無しさん
2021/09/06(月) 23:20:11.85ID:lLs6oVSG よろしくお願いします
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です
tqdmのプログレスバーがリストの長さだけ改行されてターミナル上で表示されてしまいます
これを1本のバーが更新されて表示されるようにしたいです
python3.7.9, VScode, windows10です
764デフォルトの名無しさん
2021/09/06(月) 23:39:42.63ID:ek7WdP0s 1行の長さを適当に100文字と考えて50MB程度しかないのに、buffer(あるいは行)に分割しないだけでそんなに遅くなるもんかな?
765デフォルトの名無しさん
2021/09/07(火) 10:32:46.11ID:SoS5+Qbw うちのpython3.8.5のシェル、pip install sympyが通らないからおかしいなーと思ってpip installを実行したらこれも通らないんだけど何故?
>>> pip install sympy
File "<stdin>", line 1
pip install sympy
^
SyntaxError: invalid syntax
>>> pip install
File "<stdin>", line 1
pip install
^
SyntaxError: invalid syntax
>>> pip install sympy
File "<stdin>", line 1
pip install sympy
^
SyntaxError: invalid syntax
>>> pip install
File "<stdin>", line 1
pip install
^
SyntaxError: invalid syntax
766デフォルトの名無しさん
2021/09/07(火) 10:50:57.04ID:SgLDDegk >>765
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ
それはシェルじゃなくてPythonのインタプリタ
pip installはbashやzshみたいなシェルに入力するコマンド
Pythonのインタプリタは基本的にPythonのコードを入力するところ
767デフォルトの名無しさん
2021/09/07(火) 11:05:44.28ID:E5TDGgcH >>764
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです
d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s
色々試してみましたが、読み込みと言うよりメモリに一括で入れるのが原因で遅くなる感じのようです
d = fp.read() や d = ''.join(fp) や d = ''.join([x for x in fp])とか色々試しましたけど、これらの場合は遅くて
下記のようにfor文で連結させたら早くなりました
ネットとか見てもjoinの方が速いとか書いてるんですけどね
d = ''
for s in fp:
d += s
768デフォルトの名無しさん
2021/09/07(火) 12:03:40.05ID:E5TDGgcH >>767
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです
自己レスですけどマシンの問題のような気がします
Linuxでやってるとread()がめっちゃ遅いんですが、windowsだと変わらないくらい速いです。
寧ろ+=で代入とかしてる方はクソみたいに遅すぎて、なんでここまでの差が出るのか意味分からないくらいです
769デフォルトの名無しさん
2021/09/07(火) 12:18:31.34ID:hE/CNaTP770デフォルトの名無しさん
2021/09/07(火) 13:57:15.69ID:6nMAIx0t メモリ周りだとありがちなのは初回だけ遅くて2回目は早い(python用にメモリ空間を囲うから)だけどそうでもないならOSのファイルシステムの根っこのあたりが腐ってるとかかもな。
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては?
個人的に作ってるようなものだったらgoogle colabとかのクラウド実行環境でサクッと検証してみては?
771デフォルトの名無しさん
2021/09/07(火) 14:25:01.03ID:QthkAqNV >必ず改行2連続で区切られたデータ
readlines() でループ回して一回ずつ飛ばせば良いだろうね
readlines() でループ回して一回ずつ飛ばせば良いだろうね
772デフォルトの名無しさん
2021/09/07(火) 15:00:03.49ID:GNL8Ud6q 改行3連続があった場合は?
773デフォルトの名無しさん
2021/09/07(火) 15:48:04.56ID:2tb+Xun1774デフォルトの名無しさん
2021/09/07(火) 18:18:55.32ID:SoS5+Qbw >>766
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install")
ありがとうございます。今度はシェルでpip install sympyが通ったんですが
pip installが通りません。
>pip install
ERROR: You must give at least one requirement to install (see "pip help install")
775デフォルトの名無しさん
2021/09/07(火) 18:42:45.52ID:o/q1by9H776デフォルトの名無しさん
2021/09/07(火) 18:46:56.75ID:9ZJa/YC2 d = ''
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。
for s in fp:
__d += s
これは一番ダメな実装でしょ。
文字列はイミュータブルだから、メモリコピー量が2乗で増えていくことになる。
それでもマシンの能力が「十分」なうちは、他の実装より速いこともありうる、ってだけ。
777デフォルトの名無しさん
2021/09/07(火) 19:35:15.63ID:yHN0q2ka >>776
ねーよ
ねーよ
778デフォルトの名無しさん
2021/09/07(火) 19:36:34.77ID:u7xHCyux >>773
sqlite3とどう関係が・・・??
sqlite3とどう関係が・・・??
779デフォルトの名無しさん
2021/09/07(火) 19:59:43.49ID:6nMAIx0t >>776
随分昔(※Java1.5の頃)から、「文字列結合は"+"ではなく、StringBufferを使うと処理が高速化する」ということが既に広く知られていました。
https://qiita.com/nkojima/items/0098dccbe4a593bc0306
みたいな話かな。
pythonだとどうなんだろ。
随分昔(※Java1.5の頃)から、「文字列結合は"+"ではなく、StringBufferを使うと処理が高速化する」ということが既に広く知られていました。
https://qiita.com/nkojima/items/0098dccbe4a593bc0306
みたいな話かな。
pythonだとどうなんだろ。
780デフォルトの名無しさん
2021/09/07(火) 20:23:56.12ID:SoS5+Qbw781デフォルトの名無しさん
2021/09/07(火) 20:25:59.15ID:yP3cXAjd pip list
782デフォルトの名無しさん
2021/09/07(火) 20:26:41.96ID:o/q1by9H >>780
節子、それやりたいならpip listや
節子、それやりたいならpip listや
783デフォルトの名無しさん
2021/09/07(火) 20:33:41.53ID:YcIWO4/P Elixir は片方向リストで、immutable だから、
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる
つまり、先頭のみ最適化される
だから未だに、文字列を追加していく方法が分からない
先頭への追加ではコピーされないけど、
末尾へ追加するとコピーされる
つまり、先頭のみ最適化される
だから未だに、文字列を追加していく方法が分からない
784デフォルトの名無しさん
2021/09/07(火) 20:37:37.38ID:eKv4jfBm■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【少子化】少子化は女のせい?男のせい?SNSで不毛すぎる議論が勃発…「産ませる発言」vs「淘汰される遺伝子」泥沼バトルへ ★3 [ぐれ★]
- 政府に物価高の「恩恵」 税収は過去最高80兆円超の見通し [バイト歴50年★]
- 【F1】角田裕毅のレッドブルグループ退団が決定 海外メディアが一斉報道「彼の居場所はない」 [鉄チーズ烏★]
- 日テレ社長 国分太一に「答え合わせするまでもない」 聴取時の内容そのものが「コンプライアンス違反」 [Ailuropoda melanoleuca★]
- 【為替】円154円台に上昇、NY株400ドル超安 日米金利差の縮小観測広がる [蚤の市★]
- 迫る「ペットボトル200円」時代 もはや値上げはタブーではない? [蚤の市★]
- 【実況】博衣こよりのえちえち朝こよ🧪
- 彡(♥)(♥)「あ、待って待って!今ここで伝えたいんです!」
- 26歳公認会計士をハサミで突き殺した佐藤琴美さん(26)「ハゲすぎる、毛を生やせ」などと日常的に暴力 [963243619]
- いぶき と聞いて頭に浮かんだもの書け
- 12月とかいうみんなアホになる月
- お前ら中国人は嫌いでもらんまのシャンプーは大好きだよな
