当スレに★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
レス数が1000を超えています。これ以上書き込みはできません。
2021/10/01(金) 15:46:47.17ID:9qOHXj6D
2021/10/01(金) 15:51:56.85ID:131QCENJ
pythonの本この前かったわ
エロ画像収集するんだ
エロ画像収集するんだ
3デフォルトの名無しさん
2021/10/01(金) 16:14:27.26ID:xAAYN8E1 最近 youtube 側のクローラー対策アルゴリズムが変わったらしく
前に描いてた python スクリプトがエラー吐くようになった
適当に wait 入れてアクセス頻度落とすとエラー出ない訳だが
遅くなるのでぎりぎり最適の wait にしたいんだが肝心な google 側のアルゴリズムが不明
納得行く速度が出るまでごちゃごちゃ試すと BAN されちゃうかな?
前に描いてた python スクリプトがエラー吐くようになった
適当に wait 入れてアクセス頻度落とすとエラー出ない訳だが
遅くなるのでぎりぎり最適の wait にしたいんだが肝心な google 側のアルゴリズムが不明
納得行く速度が出るまでごちゃごちゃ試すと BAN されちゃうかな?
2021/10/01(金) 16:20:44.94ID:PaEGpo5A
契約して、YouTube API を使えば?
2021/10/01(金) 16:57:41.48ID:xAAYN8E1
おにただ正論
2021/10/01(金) 18:22:34.09ID:1X70H7Xp
python関係無いしw
2021/10/01(金) 19:40:08.43ID:CQRkUSDD
うちもとあるサイト毎週引っこ抜いてたらいつもはない臨時メンテがあってその直後非同期だと接続エラーはくようになったな
非同期なくしたら大丈夫だったので今はおとなしく1倍速で落としてるけど。IPBANされなかっただけマシか
非同期なくしたら大丈夫だったので今はおとなしく1倍速で落としてるけど。IPBANされなかっただけマシか
8デフォルトの名無しさん
2021/10/01(金) 19:59:28.33ID:XZxvwPE1 pypy(パイパイ)って発音しにくいよね、特に社内だと( ^ω^)・・・
2021/10/02(土) 11:36:25.91ID:rV5kYlEk
魑魑こそ正義
10デフォルトの名無しさん
2021/10/02(土) 15:09:37.96ID:yFRwYWli pypiのクローラーねぇ
11デフォルトの名無しさん
2021/10/02(土) 23:18:51.11ID:zWqv5K6j クソチョンw
2021/10/05(火) 14:54:46.13ID:eLBz+/wl
プライベートクラス変数にするメリットってどのようなときがあるのでしょうか・・
https://docs.python.org/ja/3/tutorial/classes.html#private-variables
>もし仮に MappingSubclass に __update 識別子を実装したとしても
これなら普通、Mappingクラスに実装しませんか?
それとは別にメリットとして、オブジェクトの中からしかアクセスしない変数
として使うなら、class外に書いた方がいいような?
https://docs.python.org/ja/3/tutorial/classes.html#private-variables
>もし仮に MappingSubclass に __update 識別子を実装したとしても
これなら普通、Mappingクラスに実装しませんか?
それとは別にメリットとして、オブジェクトの中からしかアクセスしない変数
として使うなら、class外に書いた方がいいような?
13デフォルトの名無しさん
2021/10/05(火) 15:14:02.22ID:I18ZMSNA >>12
神がコーディングするならどうでもいいけど
クラス外に置くとドキュメンテーションの点で劣る
識別子の置き換えが発生しないと意図しない副作用の可能性を残してしまう
ひとつでもそういう箇所があると疑心暗鬼になり生産性も落ちる
神がコーディングするならどうでもいいけど
クラス外に置くとドキュメンテーションの点で劣る
識別子の置き換えが発生しないと意図しない副作用の可能性を残してしまう
ひとつでもそういう箇所があると疑心暗鬼になり生産性も落ちる
2021/10/05(火) 15:48:22.95ID:+YzW1gaU
windows、python3.9.7で
fileにパス付きファイル名が与えられた時に、パス無しファイル名(拡張子無し)と拡張子を取得する場合
if "." in os.path.basename(file):
____ext_without_dot = os.path.basename(file).split(".")[-1]
____basenaname_without_ext = os.path.basename(file).removesuffix("." + ext_without_dot)
else:
____ext_without_dot = ""
____basenaname_without_ext = os.path.basename(file)
で問題ないでしょうか?
もっと綺麗な書き方あったら教えてください。
fileにパス付きファイル名が与えられた時に、パス無しファイル名(拡張子無し)と拡張子を取得する場合
if "." in os.path.basename(file):
____ext_without_dot = os.path.basename(file).split(".")[-1]
____basenaname_without_ext = os.path.basename(file).removesuffix("." + ext_without_dot)
else:
____ext_without_dot = ""
____basenaname_without_ext = os.path.basename(file)
で問題ないでしょうか?
もっと綺麗な書き方あったら教えてください。
2021/10/05(火) 15:58:59.57ID:UD2fraRe
>>12
その例は、Mappingクラスが、MappingSubclassのupdateメソッドではなくMappingクラスのupdateメソッドを呼び出したい場合の実装例。
Mappingの__update変数の中にMappingのupdateメソッドを格納しておけば、updateメソッドをオーバーライドされてしまってたとしても常に元のupdateメソッドを参照することができる。
サブクラスが__update変数自体をオーバーライドしようとしても、内部的に識別子を変えてるから大丈夫ですよ、そんなことできませんよ、と言っている
その例は、Mappingクラスが、MappingSubclassのupdateメソッドではなくMappingクラスのupdateメソッドを呼び出したい場合の実装例。
Mappingの__update変数の中にMappingのupdateメソッドを格納しておけば、updateメソッドをオーバーライドされてしまってたとしても常に元のupdateメソッドを参照することができる。
サブクラスが__update変数自体をオーバーライドしようとしても、内部的に識別子を変えてるから大丈夫ですよ、そんなことできませんよ、と言っている
2021/10/05(火) 16:07:03.30ID:UD2fraRe
2021/10/05(火) 16:13:46.71ID:gsPNBZV0
>>14
PurePath使え
PurePath使え
2021/10/05(火) 16:16:39.53ID:+YzW1gaU
2021/10/05(火) 16:32:23.12ID:UD2fraRe
>>18
splitextの戻り値の第2要素が空文字列だったら第1要素と第2要素をひっくり返せばよいのでは?
splitextの戻り値の第2要素が空文字列だったら第1要素と第2要素をひっくり返せばよいのでは?
2021/10/05(火) 16:35:35.19ID:+YzW1gaU
2021/10/05(火) 16:38:24.45ID:+YzW1gaU
>>19
"..jpg"のようなファイル名の場合ひっくり返してもうまくいきません
"..jpg"のようなファイル名の場合ひっくり返してもうまくいきません
22デフォルトの名無しさん
2021/10/05(火) 16:58:23.72ID:yytwxBBE >>14
from pathlib import Path
p = Path('.')
for file in p.iterdir():
ext = ''.join(file.suffixes)
without_ext = file.name.rstrip(ext)
from pathlib import Path
p = Path('.')
for file in p.iterdir():
ext = ''.join(file.suffixes)
without_ext = file.name.rstrip(ext)
2021/10/05(火) 16:59:34.11ID:UD2fraRe
import re
basename = ...
if m := re.match(r'(.*)\.([^.]+)$', basename):
. basename_without_ext = m.group(1)
. ext_without_dot = m.group(2)
めんどいからもう_
basename = ...
if m := re.match(r'(.*)\.([^.]+)$', basename):
. basename_without_ext = m.group(1)
. ext_without_dot = m.group(2)
めんどいからもう_
2021/10/05(火) 17:31:21.64ID:+YzW1gaU
>>22
これもbasenaname_without_extが""の場合うまくいきません
これもbasenaname_without_extが""の場合うまくいきません
2021/10/05(火) 17:36:31.51ID:+YzW1gaU
2021/10/05(火) 17:40:40.24ID:UD2fraRe
...のところにファイル名を入れて実行してください
basename = 'hoge.jpg'
basename = 'hoge.jpg'
2021/10/05(火) 18:00:15.70ID:yMBvIvKg
二重拡張子の場合はどうするの?
*.tar.zxとか
*.tar.zxとか
2021/10/05(火) 18:10:11.85ID:+YzW1gaU
2021/10/05(火) 18:29:46.70ID:+YzW1gaU
2021/10/05(火) 19:15:38.22ID:db3O09Qx
Python 3.10入れてみたけどIDLEのプロンプト表示が良くなってるね
最初違和感があったけど、これは見やすくて良いわ^^
新機能の構造的パターンマッチに注目ですな、これは使っていきたい
最初違和感があったけど、これは見やすくて良いわ^^
新機能の構造的パターンマッチに注目ですな、これは使っていきたい
2021/10/05(火) 19:55:29.85ID:CsDVkN/q
当方でも、パッケージ管理ソフトChocolateyにPython 3.10が来たようでPython 3.9から自動更新された
困ったことに、pywin32がまだPython 3.10に対応してない
困ったことに、pywin32がまだPython 3.10に対応してない
2021/10/05(火) 19:59:53.84ID:xYzI00Mc
33デフォルトの名無しさん
2021/10/05(火) 20:47:41.95ID:UD2fraRe >>28
import re
basename = ...
if m:=re.match(r'(.*)(\.([^.]+))|(.*)',basename):
. basename_without_ext = m.group(1) or m.group(4)
. ext_without_dot = m.group(3)
import re
basename = ...
if m:=re.match(r'(.*)(\.([^.]+))|(.*)',basename):
. basename_without_ext = m.group(1) or m.group(4)
. ext_without_dot = m.group(3)
2021/10/05(火) 21:03:44.19ID:db3O09Qx
>>14
from pathlib import Path
p = Path('hoge.jpg').resolve().absolute()
ext_without_dot = p.suffix[1:]
basename_without_ext = p.stem
from pathlib import Path
p = Path('hoge.jpg').resolve().absolute()
ext_without_dot = p.suffix[1:]
basename_without_ext = p.stem
2021/10/05(火) 21:38:18.61ID:+YzW1gaU
>>33
少し書き換えましたが希望した動作をしています
勉強になりますた、感謝
import os, re
file = "C:\\test\\a"
#file = "C:\\test\\a.b"
#file = "C:\\test\\.b"
#file = "C:\\test\\..b"
basename = os.path.basename(file)
if m := re.match(r'(.*)(\.([^.]+))|(.*)', basename):
____basename_without_ext = m.group(1) or ""
____ext_without_dot = (m.group(2) or m.group(4)).removeprefix(".")
print("\""+basename_without_ext+"\"")
print("\""+ext_without_dot+"\"")
少し書き換えましたが希望した動作をしています
勉強になりますた、感謝
import os, re
file = "C:\\test\\a"
#file = "C:\\test\\a.b"
#file = "C:\\test\\.b"
#file = "C:\\test\\..b"
basename = os.path.basename(file)
if m := re.match(r'(.*)(\.([^.]+))|(.*)', basename):
____basename_without_ext = m.group(1) or ""
____ext_without_dot = (m.group(2) or m.group(4)).removeprefix(".")
print("\""+basename_without_ext+"\"")
print("\""+ext_without_dot+"\"")
2021/10/05(火) 21:49:55.73ID:+YzW1gaU
2021/10/05(火) 22:19:04.45ID:yMBvIvKg
3.8からのセイウチ構文は便利だと思うけど、見通し悪くなるしどうも好きになれない
先に変数にしたほうがわかりやすくないか?
if m := re.match(r'(.*)(\.([^.]+))|(.*)', basename):
↓
m = re.match(r'(.*)(\.([^.]+))|(.*)', basename)
if m:
先に変数にしたほうがわかりやすくないか?
if m := re.match(r'(.*)(\.([^.]+))|(.*)', basename):
↓
m = re.match(r'(.*)(\.([^.]+))|(.*)', basename)
if m:
2021/10/05(火) 22:29:08.23ID:db3O09Qx
>>36
はい私の優勝w
p = Path(f).resolve().absolute()
stem = p.stem
ext = p.suffix[1:]
if stem.startswith('.') and not ext: #ファイル名が空の場合
stem, ext = ext, stem
basename_without_ext = stem
ext_without_dot = ext
はい私の優勝w
p = Path(f).resolve().absolute()
stem = p.stem
ext = p.suffix[1:]
if stem.startswith('.') and not ext: #ファイル名が空の場合
stem, ext = ext, stem
basename_without_ext = stem
ext_without_dot = ext
39デフォルトの名無しさん
2021/10/05(火) 22:36:52.31ID:JbR3YU6O おまいらマジでポンコツだなω
2021/10/05(火) 22:46:47.72ID:+YzW1gaU
41デフォルトの名無しさん
2021/10/05(火) 23:11:06.33ID:UD2fraRe >>36
basenameって書いてるのだからbasenameを渡して
basenameって書いてるのだからbasenameを渡して
2021/10/05(火) 23:34:48.42ID:+YzW1gaU
2021/10/06(水) 00:13:14.92ID:uIHfQozZ
こうやってみたら動いてる
単純になった
import os
file = "C:\\test\\.b"
basename = os.path.basename(file)
basename_without_ext = os.path.splitext("!" + basename)[0][1:]
ext_without_dot = os.path.splitext("!" + basename)[1][1:]
単純になった
import os
file = "C:\\test\\.b"
basename = os.path.basename(file)
basename_without_ext = os.path.splitext("!" + basename)[0][1:]
ext_without_dot = os.path.splitext("!" + basename)[1][1:]
2021/10/06(水) 00:26:22.25ID:63dnmtAL
ドットファイル名だから
".b"が返らないとダメなのでは?
".b"が返らないとダメなのでは?
2021/10/06(水) 00:28:36.53ID:sqxilgxU
Ruby ではパス区切りに、/ も使える
require 'fileutils'
Dir.glob( 'c:/users/owner/documents/あ/*' )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名
file_extname = File.extname( file_name ) # 拡張子
puts "#{ file_name } : #{ file_extname }"
end
出力
あ.txt : .txt
い.csv : .csv
require 'fileutils'
Dir.glob( 'c:/users/owner/documents/あ/*' )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.each do |full_path|
file_name = File.basename( full_path ) # ファイル名
file_extname = File.extname( file_name ) # 拡張子
puts "#{ file_name } : #{ file_extname }"
end
出力
あ.txt : .txt
い.csv : .csv
2021/10/06(水) 00:38:36.79ID:uIHfQozZ
>>44
LinuxではそうでもWindowsは違うと思うんですが・・・
LinuxではそうでもWindowsは違うと思うんですが・・・
2021/10/06(水) 00:53:55.80ID:63dnmtAL
2021/10/06(水) 01:06:01.53ID:uIHfQozZ
2021/10/06(水) 01:14:22.59ID:63dnmtAL
じゃあ、例えば以下のファイル名(パス)の場合、
どんな結果を期待しているの?
file = r'..txt'
file = r'test.txt'
file = r'test.tar.xz'
file = r'test'
file = r'.\test.txt'
file = r'c:\test.txt'
file = r'c:/test.txt'
file = r'C:\dir\.test'
file = r'C:\dir\.test.txt'
file = r'C:\dir\test'
どんな結果を期待しているの?
file = r'..txt'
file = r'test.txt'
file = r'test.tar.xz'
file = r'test'
file = r'.\test.txt'
file = r'c:\test.txt'
file = r'c:/test.txt'
file = r'C:\dir\.test'
file = r'C:\dir\.test.txt'
file = r'C:\dir\test'
5045
2021/10/06(水) 01:18:15.89ID:sqxilgxU 隠しファイルか?
Ruby のglob でも、. で始まる、directory, file を除くから、
こういうのを許すと、バグのもと
特殊ファイルを作らせたら、ダメ
Ruby のglob でも、. で始まる、directory, file を除くから、
こういうのを許すと、バグのもと
特殊ファイルを作らせたら、ダメ
2021/10/06(水) 01:22:00.09ID:uIHfQozZ
>>49
'.' txt'
'test' 'txt'
'test.tar' 'xz'
'test' ''
相対パスは扱わない、というか、basenameを処理
'test' 'txt'
basenameを処理
'' 'test'
'.test' 'txt'
'test' ''
'.' txt'
'test' 'txt'
'test.tar' 'xz'
'test' ''
相対パスは扱わない、というか、basenameを処理
'test' 'txt'
basenameを処理
'' 'test'
'.test' 'txt'
'test' ''
2021/10/06(水) 01:27:53.38ID:uIHfQozZ
2021/10/06(水) 01:49:05.27ID:63dnmtAL
>>51
.test は ファイル名じゃなくて拡張子として扱うのかぁ
.test は ファイル名じゃなくて拡張子として扱うのかぁ
2021/10/06(水) 01:53:11.34ID:uIHfQozZ
2021/10/06(水) 08:16:30.25ID:a6e48TNJ
確かにWindowsだと.testはファイル名じゃなく拡張子として扱うね、だからWindowsの場合だけそうすればいい
import os
from pathlib import Path
def hoge(f):
____p = Path(f).resolve().absolute()
____stem = p.stem
____ext = p.suffix[1:]
____if os.name=='nt' and stem.startswith('.') and not ext: # Windowsの場合
________stem, ext = ext, stem[1:]
____print(f'{p.name=}\n{stem=}\n{ext=}\n')
import os
from pathlib import Path
def hoge(f):
____p = Path(f).resolve().absolute()
____stem = p.stem
____ext = p.suffix[1:]
____if os.name=='nt' and stem.startswith('.') and not ext: # Windowsの場合
________stem, ext = ext, stem[1:]
____print(f'{p.name=}\n{stem=}\n{ext=}\n')
5631
2021/10/06(水) 09:26:58.81ID:lTl3I+RT pywin32がPython3.10向けpipにない問題を自己解決したので一応報告
以下githubのpywin32レポジトリをクローンしてソースからビルドしてインストール
https://github.com/mhammond/pywin32
以下ビルドコマンドを実行
> python setup.py install --skip-verstamp
Visual Studio 2015 のビルドツールが必要なので、適宜Visual Studio Installer から 「MSVC v140 …」を追加インストール
レジストリ登録するらしく管理者権限も必要
以下githubのpywin32レポジトリをクローンしてソースからビルドしてインストール
https://github.com/mhammond/pywin32
以下ビルドコマンドを実行
> python setup.py install --skip-verstamp
Visual Studio 2015 のビルドツールが必要なので、適宜Visual Studio Installer から 「MSVC v140 …」を追加インストール
レジストリ登録するらしく管理者権限も必要
57デフォルトの名無しさん
2021/10/06(水) 10:49:29.50ID:N2DvDSnL [{'data': 'data123’, 'test': [{'testname': 'test123', 'testvalue': 'value123'}], 'date': '20211006}, {'data': 'data789’, 'test': [{'testname': 'test789', 'testvalue': 'value789'}], 'date': '20211007}]
上のようなかんじのデータ構造のデータがありまして、
forか何かでループして切り出して下のような感じに分割してデータを扱いたいんですがどうやればできますか?
[{'data': 'data123’, 'test': [{'testname': 'test123', 'testvalue': 'value123'}], 'date': '20211006}]
[{'data': 'data789’, 'test': [{'testname': 'test789', 'testvalue': 'value789'}], 'date': '20211007}]
上のようなかんじのデータ構造のデータがありまして、
forか何かでループして切り出して下のような感じに分割してデータを扱いたいんですがどうやればできますか?
[{'data': 'data123’, 'test': [{'testname': 'test123', 'testvalue': 'value123'}], 'date': '20211006}]
[{'data': 'data789’, 'test': [{'testname': 'test789', 'testvalue': 'value789'}], 'date': '20211007}]
2021/10/06(水) 11:06:28.93ID:YjJCqwIe
アップする前にちゃんとデータ検証しとけよ。
ary=[{'dict':'test'},{'dict':'test2'}]
for itm in ary:
__print(itm)
ary=[{'dict':'test'},{'dict':'test2'}]
for itm in ary:
__print(itm)
59デフォルトの名無しさん
2021/10/06(水) 11:17:52.70ID:N2DvDSnL >>58
ありがとうございます
早速試したみましたがそれっぽいことができました
printした結果、前後の[ ]がなくなっていてリストではなくなっているようにみえるんですがこいつをリストにはできないですか?
ありがとうございます
早速試したみましたがそれっぽいことができました
printした結果、前後の[ ]がなくなっていてリストではなくなっているようにみえるんですがこいつをリストにはできないですか?
2021/10/06(水) 11:23:52.33ID:YjJCqwIe
各要素には[ ]はもともと付いてないからな。
その程度がわからんようなら基本的な知識が不足しすぎ。
初めから各要素をリストにしとくか、[itm]にする。
つーか、なんで抽出してまた各々をリストにする必要があるんだよ。
その程度がわからんようなら基本的な知識が不足しすぎ。
初めから各要素をリストにしとくか、[itm]にする。
つーか、なんで抽出してまた各々をリストにする必要があるんだよ。
2021/10/06(水) 11:35:16.77ID:lTl3I+RT
任意のjson文字列を読み込む必要があるとかかね?
62デフォルトの名無しさん
2021/10/06(水) 11:47:56.89ID:IkoUshwC うーん、よくわからんっす
知識不足ってのはそうですね、まだpythonさわって3日目ですw
web apiに引数としてデータ渡す際にリストで渡さないといけないのです
最初の分解する前の状態でも渡せないことはないんですが全部一度に渡すと具合悪いので分割して一つずつ渡したい感じです
知識不足ってのはそうですね、まだpythonさわって3日目ですw
web apiに引数としてデータ渡す際にリストで渡さないといけないのです
最初の分解する前の状態でも渡せないことはないんですが全部一度に渡すと具合悪いので分割して一つずつ渡したい感じです
63デフォルトの名無しさん
2021/10/06(水) 11:48:29.59ID:IkoUshwC あれipが変わってしまいました
64デフォルトの名無しさん
2021/10/06(水) 12:10:25.68ID:IkoUshwC リストで渡す=json文字列で渡す
って意味なのかな?
そうならjson文字列で渡したいのです
って意味なのかな?
そうならjson文字列で渡したいのです
2021/10/06(水) 12:23:59.95ID:YjJCqwIe
>>62
>うーん、よくわからんっす
[itm]がわからんてこと? 書いてあるママだが。
リストで渡せるならわざわざjsonにする必要はない。
その理解度でweb apiを触ろうとするのが逆にすごいな。
>うーん、よくわからんっす
[itm]がわからんてこと? 書いてあるママだが。
リストで渡せるならわざわざjsonにする必要はない。
その理解度でweb apiを触ろうとするのが逆にすごいな。
66デフォルトの名無しさん
2021/10/06(水) 12:28:38.78ID:IkoUshwC for [itm] ってことですか?
エラーで返ってきますけど
エラーで返ってきますけど
2021/10/06(水) 12:31:24.23ID:YjJCqwIe
68デフォルトの名無しさん
2021/10/06(水) 12:40:42.74ID:IkoUshwC なるほど!試してみますw
69デフォルトの名無しさん
2021/10/06(水) 12:49:00.18ID:IkoUshwC できました!
すげえっす
めっちゃサンキューな
すげえっす
めっちゃサンキューな
2021/10/06(水) 15:56:51.31ID:phrbWxHz
StreamlitからLiberoffice Base操作するってどうしたら良いですか?
2021/10/06(水) 21:08:11.15ID:cm9kobto
sqlalchemyでデータベースの検索やInsert処理をします。
挿入処理A、検索処理B、検索処理Cをそれぞれ並列処理したとき
session.close()するタイミングはどうやればいいのでしょうか
例えば
addしたいレコードが複数あるとき
#挿入処理A
for item in items:
_db.session.add(item)
_time.sleep(3)#あえてsleep
db.session.commit()
db.session.close()
↑
この処理中に並列処理中の検索B、Cでの
(.commit()然り)db.session.close()がかぶる気がするのですが
挿入処理A、検索処理B、検索処理Cをそれぞれ並列処理したとき
session.close()するタイミングはどうやればいいのでしょうか
例えば
addしたいレコードが複数あるとき
#挿入処理A
for item in items:
_db.session.add(item)
_time.sleep(3)#あえてsleep
db.session.commit()
db.session.close()
↑
この処理中に並列処理中の検索B、Cでの
(.commit()然り)db.session.close()がかぶる気がするのですが
2021/10/06(水) 21:26:27.63ID:xpgZiC6t
3.10来てるじゃねえか教えろよ
…
…
パターンマッチくらいか
あれば便利だけど取り立てて欲しい!って機能ではないなあ
…
…
パターンマッチくらいか
あれば便利だけど取り立てて欲しい!って機能ではないなあ
2021/10/06(水) 21:31:05.16ID:xpgZiC6t
型の方はますますTypeScriptじみて来たな
もうTythonですよ
10年くらい前にTythonあったよね
もうTythonですよ
10年くらい前にTythonあったよね
7471
2021/10/07(木) 10:04:08.76ID:ZfelXN70 自己解決?しました
まだ確信は持てませんが結局commitとcloseの総数が適切なら
挿入処理Aのループ処理の途中で(他の並列処理B,Cが)commit、closeしようが
DB更新瞬間さえセキュアであれば関係ないっぽいですね
まだ確信は持てませんが結局commitとcloseの総数が適切なら
挿入処理Aのループ処理の途中で(他の並列処理B,Cが)commit、closeしようが
DB更新瞬間さえセキュアであれば関係ないっぽいですね
75デフォルトの名無しさん
2021/10/07(木) 11:50:22.62ID:YxBBlGj0 elifだと構文上subjectを固定できずコードが曖昧になってたからmatchたすかる
パターンマッチできるところが増えてくといいなあ
パターンマッチできるところが増えてくといいなあ
2021/10/07(木) 13:09:40.31ID:vIJYcTdp
Windowsの拡張子の取得をテストして気づいたこと
現代では拡張子は"."を含めるらしい
DOSの時代は含めなかったのに・・・
作成済みのプログラムの修正するか悩む
現代では拡張子は"."を含めるらしい
DOSの時代は含めなかったのに・・・
作成済みのプログラムの修正するか悩む
77デフォルトの名無しさん
2021/10/07(木) 15:39:01.76ID:UFWCdLE6 ドットディレクトリとかの影響かな?
2021/10/07(木) 16:16:39.36ID:vIJYcTdp
理由はよくわからないけど、LinuxやUNIX側の影響でしょうね
ドットディレクトリの、".abc"みたいなのは対応は簡単?なんですが
"abc."みたいなドットで終わるタイプのファイル名想定してませんでした
DOSではこんなファイル名付けられなかったもんで
ドットディレクトリの、".abc"みたいなのは対応は簡単?なんですが
"abc."みたいなドットで終わるタイプのファイル名想定してませんでした
DOSではこんなファイル名付けられなかったもんで
2021/10/07(木) 19:30:33.12ID:vIJYcTdp
ドットで終わるファイル名
os.path.isfile(file) -> False
ドットで終わるディレクトリ名
os.path.isdir(file) -> False
ドットで終わるファイル名・ディレクトリ名
attribute = win32api.GetFileAttributes(file) -> 例外
os.path.isfile(file) -> False
ドットで終わるディレクトリ名
os.path.isdir(file) -> False
ドットで終わるファイル名・ディレクトリ名
attribute = win32api.GetFileAttributes(file) -> 例外
2021/10/07(木) 19:43:13.97ID:vIJYcTdp
p_dir = pathlib.Path(dir)
p_files = list(p_dir.glob("**/*"))
1stのディレクトリを再帰読込しようとすると、下の階層のドットで終わるファイル名・ディレクトリ名で例外
1st --- 2nd1 -
_____|- 2nd2. -
_____|- 2nd.3
例外を発生させずドットで終わるファイル名・ディレクトリ名を読み飛ばすには、
自力で再帰読込するしかないのでしょうか?
p_files = list(p_dir.glob("**/*"))
1stのディレクトリを再帰読込しようとすると、下の階層のドットで終わるファイル名・ディレクトリ名で例外
1st --- 2nd1 -
_____|- 2nd2. -
_____|- 2nd.3
例外を発生させずドットで終わるファイル名・ディレクトリ名を読み飛ばすには、
自力で再帰読込するしかないのでしょうか?
2021/10/07(木) 20:07:13.59ID:vIJYcTdp
2021/10/07(木) 20:30:18.08ID:vIJYcTdp
改めて質問します
p_dir = pathlib.Path(dir)
p_files = list(p_dir.glob("**/*"))
1stのディレクトリを再帰読込しようとすると、下の階層のドットで終わるディレクトリ名で例外
1st --- 2nd1
_____|- 2nd2. (ドットで終わるファイル)
_____|- 2nd3. (ドットで終わるディレクトリ) -> 例外 FileNotFoundError
例外を発生させずドットで終わるディレクトリ名を読み飛ばすには、
自力で再帰読込するしかないのでしょうか?
未検証のアイデアでも頂けたらうれしいです
p_dir = pathlib.Path(dir)
p_files = list(p_dir.glob("**/*"))
1stのディレクトリを再帰読込しようとすると、下の階層のドットで終わるディレクトリ名で例外
1st --- 2nd1
_____|- 2nd2. (ドットで終わるファイル)
_____|- 2nd3. (ドットで終わるディレクトリ) -> 例外 FileNotFoundError
例外を発生させずドットで終わるディレクトリ名を読み飛ばすには、
自力で再帰読込するしかないのでしょうか?
未検証のアイデアでも頂けたらうれしいです
2021/10/07(木) 21:02:20.97ID:xRnq/kAQ
やってみたらドットで終わるディレクトリ作れまへんがな
最後のドット消えてまうんやけど?
最後のドット消えてまうんやけど?
2021/10/07(木) 21:20:59.25ID:vIJYcTdp
>>83
エクスプローラーから作る方法は私も知りません
コマンドプロンプトで
copy "C:\test\a.txt" "\\?\C:\test\a."
md "\\?\C:\test\b."
みたいなかんじです
コマンドラインの知識が全くないかたは実験しないでください。
エクスプローラーから作る方法は私も知りません
コマンドプロンプトで
copy "C:\test\a.txt" "\\?\C:\test\a."
md "\\?\C:\test\b."
みたいなかんじです
コマンドラインの知識が全くないかたは実験しないでください。
2021/10/07(木) 21:28:40.10ID:xRnq/kAQ
2021/10/07(木) 21:40:15.30ID:UdQO/mXQ
> ID:vIJYcTdp
システム依存な話なのでよそでどうぞ
システム依存な話なのでよそでどうぞ
2021/10/07(木) 21:44:37.02ID:vIJYcTdp
>>85
こちらもWindows10です
ずっとコマンドプロンプトでやっていてできてます
今PowerShellでやってみましたが、PowerShellでもできました
\\?\C つけ忘れていませんか?
フルパスで "" もつけてください
ほかに条件あるのだろうか
こちらもWindows10です
ずっとコマンドプロンプトでやっていてできてます
今PowerShellでやってみましたが、PowerShellでもできました
\\?\C つけ忘れていませんか?
フルパスで "" もつけてください
ほかに条件あるのだろうか
2021/10/07(木) 21:56:31.61ID:xRnq/kAQ
2021/10/07(木) 22:01:48.59ID:vIJYcTdp
2021/10/07(木) 22:02:37.28ID:vIJYcTdp
>>86
これでいいですか?
p_dir = pathlib.Path(dir)
p_files = list(p_dir.glob("**/*"))
で例外が発生する場合、該当ファイルを読み飛ばして処理を行う方法はありますか?
自力で再帰読込はできればやりたくありません
これでいいですか?
p_dir = pathlib.Path(dir)
p_files = list(p_dir.glob("**/*"))
で例外が発生する場合、該当ファイルを読み飛ばして処理を行う方法はありますか?
自力で再帰読込はできればやりたくありません
2021/10/07(木) 22:28:17.75ID:xRnq/kAQ
最後がドッドのアクセスできないディレクトリに入ろうとして例外が出るのかな?
これは自力で再帰読込するしかないよ、再帰はそんな難しくないと思うよ! がんばって^^
これは自力で再帰読込するしかないよ、再帰はそんな難しくないと思うよ! がんばって^^
2021/10/07(木) 23:35:06.59ID:vIJYcTdp
超レアケースなのでルートのディレクトリ毎エラー処理することにします
できればファイル単位でエラー処理したかったのですが
できればファイル単位でエラー処理したかったのですが
93デフォルトの名無しさん
2021/10/07(木) 23:50:14.03ID:StWMkIYV >>82
どうかな
import pathlib
p_dir = pathlib.Path(".")
p_glob = p_dir.glob("**/*")
p_files = []
while True:
try:
p = next(p_glob)
p_files.append(p)
except FileNotFoundError as e:
import sys
print(e, file=sys.stderr)
except StopIteration:
break
print(*p_files, sep="\n")
どうかな
import pathlib
p_dir = pathlib.Path(".")
p_glob = p_dir.glob("**/*")
p_files = []
while True:
try:
p = next(p_glob)
p_files.append(p)
except FileNotFoundError as e:
import sys
print(e, file=sys.stderr)
except StopIteration:
break
print(*p_files, sep="\n")
2021/10/07(木) 23:53:44.05ID:vIJYcTdp
2021/10/08(金) 00:17:02.73ID:T4fYgd16
96デフォルトの名無しさん
2021/10/08(金) 00:41:36.79ID:x4lgXBGS Path.glob()いいね
いままでos.walk()で自前でフィルタしてたけど今度つかってみる
いままでos.walk()で自前でフィルタしてたけど今度つかってみる
2021/10/08(金) 08:04:57.04ID:dABXXppr
ジェネレーターのスゴさを認識できた
98デフォルトの名無しさん
2021/10/08(金) 09:08:14.69ID:Pr4xGBUG globって見に行かない名前のファイルかディレクトリなかったっけ?
2021/10/08(金) 09:45:15.17ID:LO45Vby3
for i in range(100):
_if条件:
__time.sleep(3)など
__continue
_if条件:
__time.sleep(3)など
__continue
こういうとき、time.sleep(3)などが重複するのでまとめたいと思い
for i in range(100):
_if i!=0:
__time.sleep(3)など
としましたが
要は、continueするときには必ず実行する文がある
ということなので
continue後毎に処理するような節とかテクニックや慣習はあるのでしょうか
_if条件:
__time.sleep(3)など
__continue
_if条件:
__time.sleep(3)など
__continue
こういうとき、time.sleep(3)などが重複するのでまとめたいと思い
for i in range(100):
_if i!=0:
__time.sleep(3)など
としましたが
要は、continueするときには必ず実行する文がある
ということなので
continue後毎に処理するような節とかテクニックや慣習はあるのでしょうか
100デフォルトの名無しさん
2021/10/08(金) 09:56:28.31ID:3oVEDenR イマイチ何言ってるかわからんけど、関数でいいんじゃないの?
101デフォルトの名無しさん
2021/10/08(金) 10:14:00.03ID:LO45Vby3 if条件の中にはif条件1とif条件2で違う処理も入っているので
continueするときに必ず行う処理はべつのとこに書いた方が見やすいかな
と思ったのです
つまり、continue文の宣言自体がそれ(continueするときに必ず行う処理)を示すような書き方があれば
と思ったのですがなさそうですね
ありがとうございました
continueするときに必ず行う処理はべつのとこに書いた方が見やすいかな
と思ったのです
つまり、continue文の宣言自体がそれ(continueするときに必ず行う処理)を示すような書き方があれば
と思ったのですがなさそうですね
ありがとうございました
102デフォルトの名無しさん
2021/10/08(金) 10:20:00.72ID:Q4k4Ultl 書いてる例だけ見るとcontinueを使うべきケースではなさそう
103デフォルトの名無しさん
2021/10/08(金) 10:44:16.94ID:LO45Vby3 for i in range(100):
_if i!=0:
__i=0以外で実行する関数1()
↑こういうのってあんまり使わないものなのでしょうか?
continue後時に必ず実行する関数、と違う点は
if i!=0:だと最期のcontinue後は実行されない、ので混乱するかなと。
(else節併用だと野暮になるし)
やはり重複しようが
if 条件1:
_関数A()
_関数1("")
_continue
if 条件2:
_関数B()
_関数1("")
_continue
みたいにした方がいいのかもしれませんね
_if i!=0:
__i=0以外で実行する関数1()
↑こういうのってあんまり使わないものなのでしょうか?
continue後時に必ず実行する関数、と違う点は
if i!=0:だと最期のcontinue後は実行されない、ので混乱するかなと。
(else節併用だと野暮になるし)
やはり重複しようが
if 条件1:
_関数A()
_関数1("")
_continue
if 条件2:
_関数B()
_関数1("")
_continue
みたいにした方がいいのかもしれませんね
104デフォルトの名無しさん
2021/10/08(金) 10:54:49.70ID:dABXXppr for i in range(100):
____if i != 0:
________if 条件1:
____________関数A()
________if 条件2:
____________関数B()
________関数1("")
________continue
____if i != 0:
________if 条件1:
____________関数A()
________if 条件2:
____________関数B()
________関数1("")
________continue
105デフォルトの名無しさん
2021/10/08(金) 11:39:53.95ID:3oVEDenR >>103
関数1でi==0で実行しない設定にしとけばいいだけだろ。
関数1でi==0で実行しない設定にしとけばいいだけだろ。
107デフォルトの名無しさん
2021/10/08(金) 14:27:43.17ID:hfI/PPIh tkinterでrowconfigure([1, 2, 3], weight=1)とかすると
_GridIndexにlist[int]できねーよって怒られるんだけど実際はできる
どういう型指定したらいいんでしょうか
_GridIndexにlist[int]できねーよって怒られるんだけど実際はできる
どういう型指定したらいいんでしょうか
108デフォルトの名無しさん
2021/10/08(金) 22:41:24.42ID:T4fYgd16 >>93
今日詳細にテストしました。今使っているコードです
p_dir = pathlib.Path(dir)
p_files = []
p_err_files = []
p_glob = p_dir.glob("**/*")
while True:
____try:
________p = next(p_glob)
________dot_chk = False
________for divided_path in str(p).replace("/", "\\").split("\\"):
____________if divided_path[-1] == ".":
________________dot_chk = True
________________break
________if not dot_chk:
____________p_files.append(p)
________else:
____________p_err_files.append(p)
____except FileNotFoundError as e:
________print(e, file=sys.stderr)
____except StopIteration:
________break
____for i in p_err_files:
________for j in p_err_files:
____________if str(i).startswith(str(j)):
________________if len(str(i)) > len(str(j)):
____________________p_err_files.remove(i)
print(*p_files, sep="\n")
print(*p_err_files, sep="\n")
今日詳細にテストしました。今使っているコードです
p_dir = pathlib.Path(dir)
p_files = []
p_err_files = []
p_glob = p_dir.glob("**/*")
while True:
____try:
________p = next(p_glob)
________dot_chk = False
________for divided_path in str(p).replace("/", "\\").split("\\"):
____________if divided_path[-1] == ".":
________________dot_chk = True
________________break
________if not dot_chk:
____________p_files.append(p)
________else:
____________p_err_files.append(p)
____except FileNotFoundError as e:
________print(e, file=sys.stderr)
____except StopIteration:
________break
____for i in p_err_files:
________for j in p_err_files:
____________if str(i).startswith(str(j)):
________________if len(str(i)) > len(str(j)):
____________________p_err_files.remove(i)
print(*p_files, sep="\n")
print(*p_err_files, sep="\n")
109デフォルトの名無しさん
2021/10/08(金) 22:49:21.67ID:T4fYgd16 ドットで終わるディレクトリがあっても例外が発生しない場合があるようです。
例外が発生しない場合、このコードで正常・異常分類できてます
例外が発生した場合、探索が打ち切られているような感じです。
解釈間違ってるかも
例外が発生した場合、全件エラーにした方がよさそうです。
例外が発生しない場合、このコードで正常・異常分類できてます
例外が発生した場合、探索が打ち切られているような感じです。
解釈間違ってるかも
例外が発生した場合、全件エラーにした方がよさそうです。
110デフォルトの名無しさん
2021/10/08(金) 23:04:50.88ID:T4fYgd16 例外が発生しない場合でも
ドットで終わるファイル・ディレクトリを検出したら全件エラーのほうが安全かな
ドットで終わるファイル・ディレクトリを検出したら全件エラーのほうが安全かな
111デフォルトの名無しさん
2021/10/09(土) 08:06:03.22ID:3hwdJKmG class Person():
_def __init__(self, name, age):
__self.name = name
__self.age = age
_def sample1(self):
__print(self.name,self.age,self.f)
class JapanesePerson(Person):
_def __init__(self,name,age,f=False):
__self.name = name
__self.age = age
__self.f=f
class JapanesePerson2(Person):
_def __init__(self,name,age,f=False):
__super().__init__(name,age)
__self.f=f
yamada = JapanesePerson("山田", 30)
yamada.sample1()
yamada2 = JapanesePerson2("山田2", 20,True)
yamada2.sample1()
JapanesePersonとsuper()つかったJapanesePerson2って同じ意味っすよね?
super()使って書くのって継承したPersonにname,ageがあるぞっていう意味合いのためなんでしょうか?
_def __init__(self, name, age):
__self.name = name
__self.age = age
_def sample1(self):
__print(self.name,self.age,self.f)
class JapanesePerson(Person):
_def __init__(self,name,age,f=False):
__self.name = name
__self.age = age
__self.f=f
class JapanesePerson2(Person):
_def __init__(self,name,age,f=False):
__super().__init__(name,age)
__self.f=f
yamada = JapanesePerson("山田", 30)
yamada.sample1()
yamada2 = JapanesePerson2("山田2", 20,True)
yamada2.sample1()
JapanesePersonとsuper()つかったJapanesePerson2って同じ意味っすよね?
super()使って書くのって継承したPersonにname,ageがあるぞっていう意味合いのためなんでしょうか?
112デフォルトの名無しさん
2021/10/09(土) 08:45:15.87ID:TxyuJC/9 >>111
>JapanesePersonとsuper()つかったJapanesePerson2って同じ意味っすよね?
違うよ、super()を使った方は基底クラスPersonの属性name,ageに値をセットするが
JapanesePersonの方は基底クラスの方にセットせずに重複したJapanesePersonの属性name,ageにセットしている
Personを継承している意味がナッシング
>JapanesePersonとsuper()つかったJapanesePerson2って同じ意味っすよね?
違うよ、super()を使った方は基底クラスPersonの属性name,ageに値をセットするが
JapanesePersonの方は基底クラスの方にセットせずに重複したJapanesePersonの属性name,ageにセットしている
Personを継承している意味がナッシング
113デフォルトの名無しさん
2021/10/09(土) 09:52:36.10ID:3hwdJKmG >>112
そうなんですね
yamada.sample1() でself.name,self.ageが参照できてるので
なんのためにsuper().__init__でわざわざ値セットする必要があるんだろう??と気になったので。
def sample1(self):のselfってなんなんだ??みたいな
ありやした
そうなんですね
yamada.sample1() でself.name,self.ageが参照できてるので
なんのためにsuper().__init__でわざわざ値セットする必要があるんだろう??と気になったので。
def sample1(self):のselfってなんなんだ??みたいな
ありやした
114デフォルトの名無しさん
2021/10/09(土) 11:41:14.80ID:TxyuJC/9 >>108
>________for divided_path in str(p).replace("/", "\\").split("\\"):
>____________if divided_path[-1] == ".":
これはfor divided_path in p.parts: # で分割できる、pathlibの機能を使おう
更にここは内包表記で一気に書けて
_________if any(part.endswith('.') for part in p.parts):
よってdot_chk変数が不要になる
>____except FileNotFoundError as e:
>________print(e, file=sys.stderr)
これエラー表示してるだけだから、p_err_files.append(p) しといた方が良くない?
>____for i in p_err_files:
>________for j in p_err_files:
>____________if str(i).startswith(str(j)):
>________________if len(str(i)) > len(str(j)):
>____________________p_err_files.remove(i)
こっちの方が早いかも、短いし
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
>________for divided_path in str(p).replace("/", "\\").split("\\"):
>____________if divided_path[-1] == ".":
これはfor divided_path in p.parts: # で分割できる、pathlibの機能を使おう
更にここは内包表記で一気に書けて
_________if any(part.endswith('.') for part in p.parts):
よってdot_chk変数が不要になる
>____except FileNotFoundError as e:
>________print(e, file=sys.stderr)
これエラー表示してるだけだから、p_err_files.append(p) しといた方が良くない?
>____for i in p_err_files:
>________for j in p_err_files:
>____________if str(i).startswith(str(j)):
>________________if len(str(i)) > len(str(j)):
>____________________p_err_files.remove(i)
こっちの方が早いかも、短いし
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
115デフォルトの名無しさん
2021/10/09(土) 12:37:39.05ID:A9QtIjdU >>114
アドバイスありがとうございます。
内包表記覚えたいと思ってるんですがなかなか身につかないです
glob.glob使っていてpathlib.globに書き直したのでpathlibの他の機能何も知らない状態です
勉強しなきゃいけないこと多いな
>>____except FileNotFoundError as e:
>>________print(e, file=sys.stderr)
>これエラー表示してるだけだから、p_err_files.append(p) しといた方が良くない?
動作確認に使ってるだけなんで、printじゃなくpassでいいかと思ってます。
この例外のメッセージから有用な情報は得られませんでした
例外が発生する以前に、pathlib.globに限らずファイル関連の関数・クラスの挙動があやしいです
pathlib.globは試した範囲では1番挙動がまともでした
アドバイスありがとうございます。
内包表記覚えたいと思ってるんですがなかなか身につかないです
glob.glob使っていてpathlib.globに書き直したのでpathlibの他の機能何も知らない状態です
勉強しなきゃいけないこと多いな
>>____except FileNotFoundError as e:
>>________print(e, file=sys.stderr)
>これエラー表示してるだけだから、p_err_files.append(p) しといた方が良くない?
動作確認に使ってるだけなんで、printじゃなくpassでいいかと思ってます。
この例外のメッセージから有用な情報は得られませんでした
例外が発生する以前に、pathlib.globに限らずファイル関連の関数・クラスの挙動があやしいです
pathlib.globは試した範囲では1番挙動がまともでした
116デフォルトの名無しさん
2021/10/09(土) 13:10:11.80ID:A9QtIjdU >>114
>________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
j.match(i.name+'/*')] の部分なんですが、pathlibは'/'で決め打ちして大丈夫なんですか?
pythonが'/'と'\\'をどう使い分けてるかよくわからないです。
取得したパスが'/'と'\\'混在してたりするし・・・
>________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
j.match(i.name+'/*')] の部分なんですが、pathlibは'/'で決め打ちして大丈夫なんですか?
pythonが'/'と'\\'をどう使い分けてるかよくわからないです。
取得したパスが'/'と'\\'混在してたりするし・・・
117デフォルトの名無しさん
2021/10/09(土) 13:20:34.47ID:A9QtIjdU118デフォルトの名無しさん
2021/10/09(土) 13:22:15.13ID:TxyuJC/9 >>116
どっち使ってもいいし混在してもいいみたいですよ
>>____except FileNotFoundError as e:
>>________print(e, file=sys.stderr)
これ有益な情報が得られないとあるけど、どのディレクトリかファイルで例外発生したかは分かったの?
分からなかったらpも表示させた方がいいんでない?
どっち使ってもいいし混在してもいいみたいですよ
>>____except FileNotFoundError as e:
>>________print(e, file=sys.stderr)
これ有益な情報が得られないとあるけど、どのディレクトリかファイルで例外発生したかは分かったの?
分からなかったらpも表示させた方がいいんでない?
119デフォルトの名無しさん
2021/10/09(土) 13:49:18.15ID:A9QtIjdU >>118
例外発生したディレクトリの名前が信用できないんです
except FileNotFoundError as e: のところで分かるのは、発生したということだけです
恐らく発生したと思われるディレクトリ名は既にp_err_filesに入ってます
例外が発生したときのみ全件エラーにするなら何かフラグを立てたほうがいいと思います
今回はドットで終わるものを見つけたら、エラーログにp_err_filesを書き出して
全件処理しないのでこれで十分かと
その後、手作業でエラーログのすべてに対応すると思うので、例外発生個所の情報は使いません
例外発生したディレクトリの名前が信用できないんです
except FileNotFoundError as e: のところで分かるのは、発生したということだけです
恐らく発生したと思われるディレクトリ名は既にp_err_filesに入ってます
例外が発生したときのみ全件エラーにするなら何かフラグを立てたほうがいいと思います
今回はドットで終わるものを見つけたら、エラーログにp_err_filesを書き出して
全件処理しないのでこれで十分かと
その後、手作業でエラーログのすべてに対応すると思うので、例外発生個所の情報は使いません
120デフォルトの名無しさん
2021/10/09(土) 14:29:12.42ID:TxyuJC/9 >>119
いやいや、例外が発生する箇所はp = next(p_glob)のところで
そこからexcept FileNotFoundError as e: にジャンプしてくるわけですから
p_err_filesには入りません(p_err_filesに入るのは例外が発生しない場合です)
で、おそらくpの変数に代入する前のnext(p_glob)で例外が発生するから
その場合except FileNotFoundError as e:でpを表示させた場合は例外が発生する前のpなわけで
そのpの次にアクセスするディレクトリかファイルで例外が発生するということですよ、きっと
あと/と\\なんですけど、これはファイルパスの区切り文字でLinuxとかが/でWindowsは\\です
Pythonではどっち指定してもいいんですが、これをstr()で文字列にすると文字が違うわけですから
同じパスでも違うパスと判定してしまうので注意です
if str(i).startswith(str(j)):は危険です
いやいや、例外が発生する箇所はp = next(p_glob)のところで
そこからexcept FileNotFoundError as e: にジャンプしてくるわけですから
p_err_filesには入りません(p_err_filesに入るのは例外が発生しない場合です)
で、おそらくpの変数に代入する前のnext(p_glob)で例外が発生するから
その場合except FileNotFoundError as e:でpを表示させた場合は例外が発生する前のpなわけで
そのpの次にアクセスするディレクトリかファイルで例外が発生するということですよ、きっと
あと/と\\なんですけど、これはファイルパスの区切り文字でLinuxとかが/でWindowsは\\です
Pythonではどっち指定してもいいんですが、これをstr()で文字列にすると文字が違うわけですから
同じパスでも違うパスと判定してしまうので注意です
if str(i).startswith(str(j)):は危険です
121デフォルトの名無しさん
2021/10/09(土) 14:45:18.21ID:A9QtIjdU >>120
詳しく書きますね
最初ドットで終わるディレクトリに入れなくて例外すると考えていました。
テストしているとそうではないと思うようになってきました。
例外が発生原因はドットで終わるディレクトリです
でも必ず例外が発生するわけではありません
pathlib.globが最後に探索する箇所がドットで終わるディレクトリの場合、例外は発生しません
この状態でドットで終わるディレクトリのうしろに問題のないディレクトリを追加します
そうすると、ドットで終わるディレクトリではやはり例外は発生しません
例外が発生するのは次の問題のないディレクトリです
このとき、間違ったファイル名で処理をしようとしてFileNotFoundErrorが発生していると思われます
例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
詳しく書きますね
最初ドットで終わるディレクトリに入れなくて例外すると考えていました。
テストしているとそうではないと思うようになってきました。
例外が発生原因はドットで終わるディレクトリです
でも必ず例外が発生するわけではありません
pathlib.globが最後に探索する箇所がドットで終わるディレクトリの場合、例外は発生しません
この状態でドットで終わるディレクトリのうしろに問題のないディレクトリを追加します
そうすると、ドットで終わるディレクトリではやはり例外は発生しません
例外が発生するのは次の問題のないディレクトリです
このとき、間違ったファイル名で処理をしようとしてFileNotFoundErrorが発生していると思われます
例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
122デフォルトの名無しさん
2021/10/09(土) 15:09:43.07ID:TxyuJC/9 >>121
よく分かりました。それなら言われたとおり例外はpassするだけでいいですね
ところで
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
ですが、、
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
に訂正します
matchの中のstr(i/'*') は文字列にした場合区切り文字が\\になります
これをstr(i) + '/*'として/と\\を混在させてもmatchでは正常に動くようです
よく分かりました。それなら言われたとおり例外はpassするだけでいいですね
ところで
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(i.name+'/*')]
ですが、、
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
に訂正します
matchの中のstr(i/'*') は文字列にした場合区切り文字が\\になります
これをstr(i) + '/*'として/と\\を混在させてもmatchでは正常に動くようです
123デフォルトの名無しさん
2021/10/09(土) 15:30:28.23ID:Ngy1mnu3 printと書かない以外でなんか出力するのある?
124デフォルトの名無しさん
2021/10/09(土) 16:19:52.75ID:/xiMgjvY sys.stdout.write()
125デフォルトの名無しさん
2021/10/09(土) 16:24:43.13ID:dPZPc1xL WindowsというかDOSの頃から内部は/でもパス区切りできて
バックスラッシュ要求するのはシェルや一部のアプリ
単体プログラムなら/で書いたほうがポータビリティある
バックスラッシュ要求するのはシェルや一部のアプリ
単体プログラムなら/で書いたほうがポータビリティある
126デフォルトの名無しさん
2021/10/09(土) 18:09:17.61ID:JVX7Q22F >>121
Path.globでイテレータを作成した後に追加・削除されたファイルやディレクトリは
イテレーションに含まれるか含まれないかは不定なので
それでも困らないような使い方じゃなければ使い方が悪い
>例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
問題のないディレクトリなのに間違ったファイル名なのか・・・・
全部読んでないからかよくわからん
Path.globでイテレータを作成した後に追加・削除されたファイルやディレクトリは
イテレーションに含まれるか含まれないかは不定なので
それでも困らないような使い方じゃなければ使い方が悪い
>例外で取得できるのは問題のないディレクトリにアクセスするときの間違ったファイル名です
問題のないディレクトリなのに間違ったファイル名なのか・・・・
全部読んでないからかよくわからん
127デフォルトの名無しさん
2021/10/09(土) 19:07:55.16ID:Ngy1mnu3 統合環境?総合環境?
おすすめの教えて
winでもマックでもリヌクスでもいいです
おすすめの教えて
winでもマックでもリヌクスでもいいです
128デフォルトの名無しさん
2021/10/09(土) 19:13:36.12ID:/xiMgjvY eric4
129デフォルトの名無しさん
2021/10/09(土) 19:19:03.79ID:A9QtIjdU130デフォルトの名無しさん
2021/10/09(土) 21:23:39.35ID:aguDhBGS >>127
Jupyter Notebook、Notebookの後継であるJupyterLab、
VSCode, Google Collaboratory
YouTube などで、よく紹介されているのは、Google Collaboratory
他には、WSL2, Linux, Docker
多言語のversion manager なら、asdf とか、
日本人が作った、バージョンマネージャーのanyenv とか
anyenvでは、19言語を統一された方法で、
nodenv, phpenv, pyenv, rbenv, goenv, jlenv などを使う。
Python ならpyenv、Julia ならjlenv
Python標準では、venv
多くの言語で、version manager の使い方を統一したいのなら、asdf, anyenv
Jupyter Notebook、Notebookの後継であるJupyterLab、
VSCode, Google Collaboratory
YouTube などで、よく紹介されているのは、Google Collaboratory
他には、WSL2, Linux, Docker
多言語のversion manager なら、asdf とか、
日本人が作った、バージョンマネージャーのanyenv とか
anyenvでは、19言語を統一された方法で、
nodenv, phpenv, pyenv, rbenv, goenv, jlenv などを使う。
Python ならpyenv、Julia ならjlenv
Python標準では、venv
多くの言語で、version manager の使い方を統一したいのなら、asdf, anyenv
131デフォルトの名無しさん
2021/10/09(土) 23:27:09.55ID:cIVnj/jm132130
2021/10/10(日) 00:15:53.95ID:lB7MFpHR プロ用では、anyenv から、Docker へ移行していくだろう
133デフォルトの名無しさん
2021/10/10(日) 05:07:59.49ID:wTu2fZfo tkinterにドラッグアンドドロップつける
tkinterDnD2というやつ
dnd_root.bind(<Drop>, callback)
callback(ev):
__files = dnd_root.splitlist(ev.data)
みたいに書きます
このevてdndEventクラスで
http://tkinterdnd.sourceforge.net/TkinterDnD.html#DnDEvent
にあるように、いくつかの属性にアクセスできるんだけど
この属性のそれぞれが何を意味してるのかっていうのは、どこに書いてあるんでしょうか
ドキュメント的なものを探してるんだけど、見当たらなくて
tkinterDnD2というやつ
dnd_root.bind(<Drop>, callback)
callback(ev):
__files = dnd_root.splitlist(ev.data)
みたいに書きます
このevてdndEventクラスで
http://tkinterdnd.sourceforge.net/TkinterDnD.html#DnDEvent
にあるように、いくつかの属性にアクセスできるんだけど
この属性のそれぞれが何を意味してるのかっていうのは、どこに書いてあるんでしょうか
ドキュメント的なものを探してるんだけど、見当たらなくて
134デフォルトの名無しさん
2021/10/10(日) 08:00:27.46ID:kKlMir+m >>133
https://www.ellogon.org/petasis/index.php/tcltk-projects/tkdnd/tkdnd-man-page#lbAI
TkinterDnD.pyは読んでる前提
https://www.ellogon.org/petasis/index.php/tcltk-projects/tkdnd/tkdnd-man-page#lbAI
TkinterDnD.pyは読んでる前提
135デフォルトの名無しさん
2021/10/10(日) 09:09:58.87ID:wTu2fZfo >>134
おー助かりました
おー助かりました
136デフォルトの名無しさん
2021/10/10(日) 09:10:27.91ID:YLnhElYI137デフォルトの名無しさん
2021/10/10(日) 11:33:12.15ID:ykpYSE0z 私の開発環境はIDLEとGVIMだわ、大したことやってないし
138デフォルトの名無しさん
2021/10/10(日) 12:39:25.44ID:H4xzBt6k importで頭が混乱してきました
https://pastebin.com/tRafMmRt
sample0.pyのimport sample2で、sample2内のsample1がimportされると思ったのですが
結果、importはされませんでした
そう判断したのは、sample0→sample2でのsample1のimportで
printもされず、BASEのランダムも生成されなかったからです
これは、sample0.pyでsample1をすでにimportしているので
sample2内のsample1のimportは省略というか、
sample0でのsample1のimportを引き継いだ
みたいなことでいいのでしょうか・・?
https://pastebin.com/tRafMmRt
sample0.pyのimport sample2で、sample2内のsample1がimportされると思ったのですが
結果、importはされませんでした
そう判断したのは、sample0→sample2でのsample1のimportで
printもされず、BASEのランダムも生成されなかったからです
これは、sample0.pyでsample1をすでにimportしているので
sample2内のsample1のimportは省略というか、
sample0でのsample1のimportを引き継いだ
みたいなことでいいのでしょうか・・?
139デフォルトの名無しさん
2021/10/10(日) 13:16:40.64ID:kKlMir+m >>138
そう
あちこちにあるimport sys他が都度走るのはいやだし
https://docs.python.org/ja/3/reference/import.html
他の動作も可能だけれどフレームワーク実装とか特殊なケースでなければ
モジュール側でうまく対応した方が良い。
そう
あちこちにあるimport sys他が都度走るのはいやだし
https://docs.python.org/ja/3/reference/import.html
他の動作も可能だけれどフレームワーク実装とか特殊なケースでなければ
モジュール側でうまく対応した方が良い。
140デフォルトの名無しさん
2021/10/10(日) 13:24:05.94ID:H4xzBt6k >>139
なるほど・・
どうもimportするたびに新規発行されるみたいなイメージが強くなってしまって・・
>あちこちにあるimport sys他が都度走る
たしかにそうですよね
ありがとうございました
なるほど・・
どうもimportするたびに新規発行されるみたいなイメージが強くなってしまって・・
>あちこちにあるimport sys他が都度走る
たしかにそうですよね
ありがとうございました
141デフォルトの名無しさん
2021/10/10(日) 14:08:59.72ID:PpP5FnLO >>114
>>122
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
for j in p_err_files:
if str(i).replace("/", "\\").startswith(str(j).replace("/", "\\")):
if len(str(i)) > len(str(j)):
p_err_files.remove(i)
7秒
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
97秒
p_err_filesの内容によってどう変わるかわかりませんがかなり遅いです
綺麗な書き方だけにどうにかしたい
報告です。質問じゃないです
>>122
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
for j in p_err_files:
if str(i).replace("/", "\\").startswith(str(j).replace("/", "\\")):
if len(str(i)) > len(str(j)):
p_err_files.remove(i)
7秒
for x in range(500000):
p_err_files = p_err_files_org.copy()
for i in p_err_files:
p_err_files = [j for j in p_err_files if not j.match(str(i/'*'))]
97秒
p_err_filesの内容によってどう変わるかわかりませんがかなり遅いです
綺麗な書き方だけにどうにかしたい
報告です。質問じゃないです
142デフォルトの名無しさん
2021/10/10(日) 15:13:50.14ID:ykpYSE0z >>141
ふむ、matchが遅いのだろうね、、じゃあ二人の良いところをドッキングしよう
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________i = str(i).replace("/", "\\") + '\\' #replaceのせいで見にくいからあえて別にしてみました
________p_err_files = [j for j in p_err_files if not str(j).replace("/", "\\").startswith(i)]
これは3秒いっちゃうんじゃない?
ところで/と\\って混在するの? pathlib.Pathをstr変換するとOSに合わせた区切り文字で文字列化しない?
replaceいらないんじゃない? いや、私も昔混在しててエラーになった経験があるんだけども
それって文字列化してから自分でスラッシュを足して混在させてたような気がしてきた
今適当にやってみても混在しないし・・さ
ふむ、matchが遅いのだろうね、、じゃあ二人の良いところをドッキングしよう
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________i = str(i).replace("/", "\\") + '\\' #replaceのせいで見にくいからあえて別にしてみました
________p_err_files = [j for j in p_err_files if not str(j).replace("/", "\\").startswith(i)]
これは3秒いっちゃうんじゃない?
ところで/と\\って混在するの? pathlib.Pathをstr変換するとOSに合わせた区切り文字で文字列化しない?
replaceいらないんじゃない? いや、私も昔混在しててエラーになった経験があるんだけども
それって文字列化してから自分でスラッシュを足して混在させてたような気がしてきた
今適当にやってみても混在しないし・・さ
143デフォルトの名無しさん
2021/10/10(日) 16:01:08.25ID:PpP5FnLO144デフォルトの名無しさん
2021/10/10(日) 16:15:29.74ID:PpP5FnLO 混在するのいやだから自分でつなぐときos.path.join使ってます
今ソース確認したけど"/"使ってない
今ソース確認したけど"/"使ってない
145デフォルトの名無しさん
2021/10/10(日) 16:23:35.36ID:ykpYSE0z146デフォルトの名無しさん
2021/10/10(日) 17:00:09.47ID:PpP5FnLO 取得したばかだから混在はないですね
最終形
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not str(j).startswith(str(i) + os.sep)]
最終形
for x in range(500000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________p_err_files = [j for j in p_err_files if not str(j).startswith(str(i) + os.sep)]
147デフォルトの名無しさん
2021/10/10(日) 17:10:38.07ID:ykpYSE0z >>146
う、美しい、、os.sepもエレガント
う、美しい、、os.sepもエレガント
148デフォルトの名無しさん
2021/10/10(日) 20:43:45.45ID:PpP5FnLO ありゃ、バグってたかも(最終形じゃないやつ)
新コード 14秒
for x in range(5000):
____p_err_files = [str(p) for p in p_err_files_org]
____for i_idx, i in enumerate(p_err_files[:-1]):
________for j in p_err_files[i_idx + 1:]:
____________if j.startswith(i + os.sep):
________________p_err_files.remove(j)
____p_err_files = [pathlib.Path(p) for p in p_err_files]
最終形って書いたコード 56秒
新コードがバグってないかよくテストしなければ
新コード 14秒
for x in range(5000):
____p_err_files = [str(p) for p in p_err_files_org]
____for i_idx, i in enumerate(p_err_files[:-1]):
________for j in p_err_files[i_idx + 1:]:
____________if j.startswith(i + os.sep):
________________p_err_files.remove(j)
____p_err_files = [pathlib.Path(p) for p in p_err_files]
最終形って書いたコード 56秒
新コードがバグってないかよくテストしなければ
149デフォルトの名無しさん
2021/10/10(日) 21:08:00.05ID:PpP5FnLO 最初のデータだと
新コード 14秒
最終形って書いたコード 4秒
件数が多いと新コードが早い
新コード 14秒
最終形って書いたコード 4秒
件数が多いと新コードが早い
150デフォルトの名無しさん
2021/10/10(日) 21:41:11.57ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i.is_dir():
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
最速のコード・・できました、、これは2秒台かもしれん
最後がドットのディレクトリでis_dir()ができるのか知りませんが
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i.is_dir():
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
最速のコード・・できました、、これは2秒台かもしれん
最後がドットのディレクトリでis_dir()ができるのか知りませんが
151デフォルトの名無しさん
2021/10/10(日) 22:14:56.87ID:PpP5FnLO152デフォルトの名無しさん
2021/10/10(日) 22:25:50.37ID:PpP5FnLO 件数の多いデータ loop回数減らしてます
新コード 2秒
最終形って書いたコード 11秒
isdir 60秒
新コード 2秒
最終形って書いたコード 11秒
isdir 60秒
153デフォルトの名無しさん
2021/10/10(日) 22:53:16.01ID:fsOtTZsl > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
154デフォルトの名無しさん
2021/10/10(日) 23:14:16.55ID:kKlMir+m is_dir()はos.stat(fstat)つかってそうだし遅いだろうね
事後処理多すぎるしos.walk()のが適当かも
事後処理多すぎるしos.walk()のが適当かも
155デフォルトの名無しさん
2021/10/10(日) 23:25:00.22ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx, i in enumerate(p_err_files[:-1], start=1):
________i = str(i) + os.sep #これは出した方が速いの?変わらない?
________p_err_files = [j for j in p_err_files[idx:] if not str(j).startswith(i)]
界王拳3倍だぁああああ
____p_err_files = p_err_files_org.copy()
____for idx, i in enumerate(p_err_files[:-1], start=1):
________i = str(i) + os.sep #これは出した方が速いの?変わらない?
________p_err_files = [j for j in p_err_files[idx:] if not str(j).startswith(i)]
界王拳3倍だぁああああ
156デフォルトの名無しさん
2021/10/10(日) 23:36:40.30ID:ykpYSE0z やっぱ>>155は無し
このp_err_files[:-1]やp_err_files[idx:]ってダメな気がする
途中でp_err_filesの要素抜くからバグる気がするんだけど・・
新コードと最終形の結果同じなんだよね?
このp_err_files[:-1]やp_err_files[idx:]ってダメな気がする
途中でp_err_filesの要素抜くからバグる気がするんだけど・・
新コードと最終形の結果同じなんだよね?
157デフォルトの名無しさん
2021/10/10(日) 23:50:06.43ID:PpP5FnLO >>155
最初のデータ(件数の少ないやつ)
新コード 14秒
155のやつ 2秒
件数の多いデータ 466件
新コード 28秒
155のやつ 32秒
件数の多いほうほぼ互角ですね
>________i = str(i) + os.sep #これは出した方が速いの?変わらない?
圧倒的に速いです
最初のデータ(件数の少ないやつ)
新コード 14秒
155のやつ 2秒
件数の多いデータ 466件
新コード 28秒
155のやつ 32秒
件数の多いほうほぼ互角ですね
>________i = str(i) + os.sep #これは出した方が速いの?変わらない?
圧倒的に速いです
158デフォルトの名無しさん
2021/10/10(日) 23:51:21.86ID:PpP5FnLO159デフォルトの名無しさん
2021/10/10(日) 23:57:12.93ID:ykpYSE0z for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i in p_err_files:
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
はい、これ最後にするわw inで抜いた要素の場合は処理を飛ばすです
is_dir()みたいに遅いかも? お疲れっした!
____p_err_files = p_err_files_org.copy()
____for i in p_err_files:
________if i in p_err_files:
____________i = str(i) + os.sep
____________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
はい、これ最後にするわw inで抜いた要素の場合は処理を飛ばすです
is_dir()みたいに遅いかも? お疲れっした!
160デフォルトの名無しさん
2021/10/11(月) 00:00:41.38ID:Z6IULiPa161デフォルトの名無しさん
2021/10/11(月) 07:20:20.01ID:nIh2l5lJ 出来ました、これが本当の最後! globで作られるリストでは先にディレクトリが並び、
後にそのディレクトリ内のファイルが並ぶことを利用して
消えるのは常にidxの後ろのファイルであることを考慮したものです
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx in range(len(p_err_files)):
________try:
____________i = str(p_err_files[idx]) + os.sep
________except IndexError:
____________break
________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
見てくださいこのカッコイイボディー、1秒台を叩き出すポテンシャルが伺えます
後にそのディレクトリ内のファイルが並ぶことを利用して
消えるのは常にidxの後ろのファイルであることを考慮したものです
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____for idx in range(len(p_err_files)):
________try:
____________i = str(p_err_files[idx]) + os.sep
________except IndexError:
____________break
________p_err_files = [j for j in p_err_files if not str(j).startswith(i)]
見てくださいこのカッコイイボディー、1秒台を叩き出すポテンシャルが伺えます
162デフォルトの名無しさん
2021/10/11(月) 14:30:12.13ID:Z6IULiPa 最新コードです
メインループはリスト、サブループは集合
リストは長さでソート
集合で in を高速にし、内包表記で削除するデータを集め差集合を求める
件数が多い場合に焦点を当ててます
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____p_err_list = sorted([str(p) for p in p_err_files], key = len)
____p_err_set = set(p_err_list)
____for i in p_err_list:
________if i in p_err_set:
____________i += os.sep
____________p_err_set -= {j for j in p_err_set if j.startswith(i)}
____p_err_files = [pathlib.Path(p) for p in p_err_set]
測定結果は後ほど
メインループはリスト、サブループは集合
リストは長さでソート
集合で in を高速にし、内包表記で削除するデータを集め差集合を求める
件数が多い場合に焦点を当ててます
for x in range(5000):
____p_err_files = p_err_files_org.copy()
____p_err_list = sorted([str(p) for p in p_err_files], key = len)
____p_err_set = set(p_err_list)
____for i in p_err_list:
________if i in p_err_set:
____________i += os.sep
____________p_err_set -= {j for j in p_err_set if j.startswith(i)}
____p_err_files = [pathlib.Path(p) for p in p_err_set]
測定結果は後ほど
163デフォルトの名無しさん
2021/10/11(月) 15:03:13.08ID:yoxInkMN p_err_files_orgを含めてideoneあたりに貼ってくれんかな
164デフォルトの名無しさん
2021/10/11(月) 15:04:52.03ID:Z6IULiPa 最初のデータ(件数の少ないやつ) 500,000ループ
最新コード 14秒
新コード 13秒
最終形って書いたコード 4秒
159 3秒
161 3秒
件数の多いデータ 466件 5,000ループ
最新コード 4秒
新コード 14秒
最終形って書いたコード 54秒
159 28秒
161 13秒
巨大ディレクトリテスト 122496件 1ループ
最新コード 223秒
新コード 277秒
最終形って書いたコード 測定不能ギブアップ
159 ギブアップ
161 ギブアップ
最新コード 14秒
新コード 13秒
最終形って書いたコード 4秒
159 3秒
161 3秒
件数の多いデータ 466件 5,000ループ
最新コード 4秒
新コード 14秒
最終形って書いたコード 54秒
159 28秒
161 13秒
巨大ディレクトリテスト 122496件 1ループ
最新コード 223秒
新コード 277秒
最終形って書いたコード 測定不能ギブアップ
159 ギブアップ
161 ギブアップ
165デフォルトの名無しさん
2021/10/11(月) 15:38:36.71ID:9gfKW03X > ID:PpP5FnLO, ID:ykpYSE0z
そろそろやめてもらっていいですか
そろそろやめてもらっていいですか
166デフォルトの名無しさん
2021/10/11(月) 15:38:47.81ID:nIh2l5lJ >>164
ブラボー、集合速い!
ちなみに最新コードのsetで順番が変わった結果は、これで戻せると思います
____p_err_files = sorted([pathlib.Path(p) for p in p_err_set] , key=p_err_files_org.index)
ブラボー、集合速い!
ちなみに最新コードのsetで順番が変わった結果は、これで戻せると思います
____p_err_files = sorted([pathlib.Path(p) for p in p_err_set] , key=p_err_files_org.index)
167デフォルトの名無しさん
2021/10/12(火) 00:09:42.22ID:QANgax+i >>165
ガイジに話が通じると思ってる奴もガイジ
ガイジに話が通じると思ってる奴もガイジ
168デフォルトの名無しさん
2021/10/12(火) 13:14:04.41ID:Y4+OaxqJ uuid含む辞書 のリストの検索って
やっぱ内包表記が一番早いですか?
item = [d for d in db if d[id] == _id][0]
やっぱ内包表記が一番早いですか?
item = [d for d in db if d[id] == _id][0]
169デフォルトの名無しさん
2021/10/12(火) 14:22:16.90ID:65IdcDyl170デフォルトの名無しさん
2021/10/12(火) 17:12:16.40ID:db3N35kL171デフォルトの名無しさん
2021/10/12(火) 18:55:46.32ID:rbfrUXN4 線形探索に変わりはないから本質的には変わらない
規模と目的にもよるが事前にハッシュテーブルを作成するなりしたらいいんじゃない?
規模と目的にもよるが事前にハッシュテーブルを作成するなりしたらいいんじゃない?
172デフォルトの名無しさん
2021/10/12(火) 19:05:49.73ID:rbfrUXN4 >>170
最初の1つを取得したいなら素直にfor文で回して見つけ次第breakすればいいんじゃない?
最初の1つを取得したいなら素直にfor文で回して見つけ次第breakすればいいんじゃない?
173デフォルトの名無しさん
2021/10/12(火) 19:27:30.01ID:db3N35kL174デフォルトの名無しさん
2021/10/12(火) 19:48:08.27ID:Y4+OaxqJ 謎のなりすましw
175デフォルトの名無しさん
2021/10/12(火) 20:14:27.30ID:DOoMLgfj tkinterとMVCを勉強中なんですが
view用のtkvarってmodel(db)に置くんですか?
view側が持つのですか?
view用のtkvarってmodel(db)に置くんですか?
view側が持つのですか?
176デフォルトの名無しさん
2021/10/12(火) 20:38:17.90ID:db3N35kL >>174
答えは見つかりましたか?
答えは見つかりましたか?
177デフォルトの名無しさん
2021/10/13(水) 00:27:53.69ID:zS1AsSBo178デフォルトの名無しさん
2021/10/13(水) 04:42:48.68ID:+txmauo5 >>175
view
ウィジェットとtkvar(表示(view)に関わる)
model
変数(データ実体)
controller
view.widget.tkvar.set(mode.var)
おれの認識
view
ウィジェットとtkvar(表示(view)に関わる)
model
変数(データ実体)
controller
view.widget.tkvar.set(mode.var)
おれの認識
179デフォルトの名無しさん
2021/10/13(水) 08:21:06.00ID:5N5C/lUt180デフォルトの名無しさん
2021/10/13(水) 08:46:20.82ID:XAFUKX/t 内包表記ってなんですか?
181デフォルトの名無しさん
2021/10/13(水) 10:54:11.99ID:V99uCirA [_ for _ in (1,2,3)]
182デフォルトの名無しさん
2021/10/13(水) 12:56:21.92ID:xAxceSCu どんなに複雑なコードでも内包表記で書こうとするような奴はPython向いてないとは思う
183デフォルトの名無しさん
2021/10/13(水) 13:38:38.75ID:znbxIIJY 馬鹿の一つ覚え
184デフォルトの名無しさん
2021/10/13(水) 14:17:57.86ID:k/aGOBxZ next filterは見た目いいけどそのままだと例外飛ぶからdefault指定すべき
あとid検索をしょっちゅうやるつもりなら171の言う通りidをキーに持つハッシュテーブルにしたほうがいい
あとid検索をしょっちゅうやるつもりなら171の言う通りidをキーに持つハッシュテーブルにしたほうがいい
185デフォルトの名無しさん
2021/10/13(水) 15:04:27.22ID:i0OqJqsg ネストする時は内包表記でもインデントしてね
186デフォルトの名無しさん
2021/10/13(水) 15:48:08.21ID:5N5C/lUt >>184
お、褒められたw default指定か、なるほど、、じゃあこう
item = next(filter(lambda d: d[id] == _id, db), None)
ハッシュテーブルって辞書のことですよね?
お、褒められたw default指定か、なるほど、、じゃあこう
item = next(filter(lambda d: d[id] == _id, db), None)
ハッシュテーブルって辞書のことですよね?
187デフォルトの名無しさん
2021/10/14(木) 08:52:02.98ID:tO9afOB/ >>178
Viewは簡単に生き死にするから、変数(データ実体) をtkvarにしてModelに持たせる方がいいと思うよ。
形式変換などが必要なときは、Modelにそれ用のアクセサを付ければいい。
ControllerがModelとViewのインスタンスを持ち、ViewはControllerだけを参照する。
Modelは基本的にController、Viewの参照をどっちも持たない。
Viewは簡単に生き死にするから、変数(データ実体) をtkvarにしてModelに持たせる方がいいと思うよ。
形式変換などが必要なときは、Modelにそれ用のアクセサを付ければいい。
ControllerがModelとViewのインスタンスを持ち、ViewはControllerだけを参照する。
Modelは基本的にController、Viewの参照をどっちも持たない。
188デフォルトの名無しさん
2021/10/14(木) 09:10:49.38ID:Exint/Io 作り方にもよるけど
tkinterをqtに変えようとか、移植に伴ってツールキットを交換することを考えると
modelをtkverのデータ置きにすると全面的な書き直しがいると思うつーか、そうなった
ので俺は最近modelには一般の変数とロジックだけ置く
viewには可能な限りtkinter固有の全部を置く。vcmdとかも
で全操作をcontrollerに書く。コイツが全部の発信源
よくviewがmodel見る三角形図あるけど、個人的にはviewの影響を限定的にしたい
https://i.imgur.com/a7HUCYH.png
tkinterをqtに変えようとか、移植に伴ってツールキットを交換することを考えると
modelをtkverのデータ置きにすると全面的な書き直しがいると思うつーか、そうなった
ので俺は最近modelには一般の変数とロジックだけ置く
viewには可能な限りtkinter固有の全部を置く。vcmdとかも
で全操作をcontrollerに書く。コイツが全部の発信源
よくviewがmodel見る三角形図あるけど、個人的にはviewの影響を限定的にしたい
https://i.imgur.com/a7HUCYH.png
189デフォルトの名無しさん
2021/10/14(木) 09:42:03.64ID:tO9afOB/ 確かに、tkinterのVarはデータバインディング(しかも双方向可能)の考え方そのものなので、
MVCに少しそぐわない(ViewModelっていうんだっけ?)。
どっちにしろ、データベースやネットワークサービスがデータソースになる場合は、Varは単なるバスみたいな使い方になるし。
MVCに少しそぐわない(ViewModelっていうんだっけ?)。
どっちにしろ、データベースやネットワークサービスがデータソースになる場合は、Varは単なるバスみたいな使い方になるし。
190デフォルトの名無しさん
2021/10/14(木) 11:40:53.17ID:wCUDNz+i まあ移植性を捨てればtkvarはdbに置いて
bindingと最小限のイベントハンドラをcontrollerに置いて
あとはm-v間でやってくれぇ〜というのが一番書きやすいだろう
真面目にやるとcontroller薄くなりすぎるはずなのでc-vとmに分けるっていうのも良いと思う。わしはこれが好き
GUI(tk.Tk):
_super().__init__()
云々
GUI.mainloop()するやつ
bindingと最小限のイベントハンドラをcontrollerに置いて
あとはm-v間でやってくれぇ〜というのが一番書きやすいだろう
真面目にやるとcontroller薄くなりすぎるはずなのでc-vとmに分けるっていうのも良いと思う。わしはこれが好き
GUI(tk.Tk):
_super().__init__()
云々
GUI.mainloop()するやつ
191デフォルトの名無しさん
2021/10/15(金) 16:12:08.85ID:Tty/f66M PythonでLZ4を使うと、lz4.frame,lz4.block,lz4.streamっていうのがあるみたいなのですが
それぞれ何がどう違うのでしょうか
検索すると英語の情報が多いのですが、アホなので分かりません
それぞれ何がどう違うのでしょうか
検索すると英語の情報が多いのですが、アホなので分かりません
192デフォルトの名無しさん
2021/10/15(金) 16:25:20.62ID:yvxpjjvp 質問ですが、defaultdictに対して.getを使った場合、値が存在しない場合でもメモリを使ってしまうのですか?
193デフォルトの名無しさん
2021/10/15(金) 18:54:50.40ID:TUcBd+bC >>192
https://docs.python.org/ja/3/library/collections.html#collections.defaultdict.__missing__
> もし default_factory 属性が None でない場合、このメソッドは引数なしで呼び出され、与えらえた key に対応するデフォルト値を提供します。この値は、辞書内に key に対応して登録され、最後に返されます。
なんでデフォルト値の分消費する。(各種オーバーヘッドは未考慮)
>>> help(collections.defaultdict)
困ったらhelp
同じことが書かれてる
https://docs.python.org/ja/3/library/collections.html#collections.defaultdict.__missing__
> もし default_factory 属性が None でない場合、このメソッドは引数なしで呼び出され、与えらえた key に対応するデフォルト値を提供します。この値は、辞書内に key に対応して登録され、最後に返されます。
なんでデフォルト値の分消費する。(各種オーバーヘッドは未考慮)
>>> help(collections.defaultdict)
困ったらhelp
同じことが書かれてる
194デフォルトの名無しさん
2021/10/15(金) 19:07:39.63ID:4mSLIm8m >>193
ありがとうございます。
ありがとうございます。
195デフォルトの名無しさん
2021/10/16(土) 23:48:05.88ID:7DXC85u5 >>321
youtube-dl --skip-download --dateafter now-3days --get-title --get-id --get-description --get-duration -i "チャンネルURL"
youtube-dl --skip-download --dateafter now-3days --get-title --get-id --get-description --get-duration -i "チャンネルURL"
196デフォルトの名無しさん
2021/10/17(日) 14:11:08.72ID:7C23oe5i Mike Python
197デフォルトの名無しさん
2021/10/17(日) 17:37:19.17ID:kbVq19bl > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
198デフォルトの名無しさん
2021/10/17(日) 19:55:12.60ID:t5hHOLNv Python3.9で、souted()とラムダ式を勉強しているところです
sorted()のkeyに指定するラムダで、戻り値にマイナスを付けるコードがあり、
これは何だろうと思って以下のリストを作成してsorted()にかけて出力してみました
(コメント行として書いている箇所が出力結果です)
li = [('a', 1), ('b', 200), ('c', 50), ('e', -3), ('h', -55000), ('d', 10)]
print(sorted(li, key=lambda x: x[0]))
# [('a', 1), ('b', 200), ('c', 50), ('d', 10), ('e', -3), ('h', -55000)]
print(sorted(li, key=lambda x: -x[0]))
# TypeError bad operand type for unary -: 'str'
print(sorted(li, key=lambda x: x[1]))
# [('h', -55000), ('e', -3), ('a', 1), ('d', 10), ('c', 50), ('b', 200)]
print(sorted(li, key=lambda x: -x[1]))
# [('b', 200), ('c', 50), ('d', 10), ('a', 1), ('e', -3), ('h', -55000)]
出力結果を見るに、マイナスを付けるとreverse=Trueを指定したときと
同じ結果が得られるということなのかなと思ったのですが
1つだけTypeErrorになってしまいました
これは何故なのでしょうか
sorted()のkeyに指定するラムダで、戻り値にマイナスを付けるコードがあり、
これは何だろうと思って以下のリストを作成してsorted()にかけて出力してみました
(コメント行として書いている箇所が出力結果です)
li = [('a', 1), ('b', 200), ('c', 50), ('e', -3), ('h', -55000), ('d', 10)]
print(sorted(li, key=lambda x: x[0]))
# [('a', 1), ('b', 200), ('c', 50), ('d', 10), ('e', -3), ('h', -55000)]
print(sorted(li, key=lambda x: -x[0]))
# TypeError bad operand type for unary -: 'str'
print(sorted(li, key=lambda x: x[1]))
# [('h', -55000), ('e', -3), ('a', 1), ('d', 10), ('c', 50), ('b', 200)]
print(sorted(li, key=lambda x: -x[1]))
# [('b', 200), ('c', 50), ('d', 10), ('a', 1), ('e', -3), ('h', -55000)]
出力結果を見るに、マイナスを付けるとreverse=Trueを指定したときと
同じ結果が得られるということなのかなと思ったのですが
1つだけTypeErrorになってしまいました
これは何故なのでしょうか
199デフォルトの名無しさん
2021/10/17(日) 20:06:53.96ID:hODn77KL sorted関係ないしエラーメッセージがまんま理由
>>> -'a'
…
TypeError: bad operand type for unary -: 'str'
>>> -'a'
…
TypeError: bad operand type for unary -: 'str'
200デフォルトの名無しさん
2021/10/17(日) 20:42:04.88ID:t5hHOLNv >>199
ありがとうございます
戻り値が'a'というstr型なのに負の値にしようとして怒られてるってことでしょうか
key=lambda x: -x[N] という書き方は、reverseオプションの代替ではなく
戻り値に-1を掛けている…という認識であってますか?
(そのため結果として逆順にソートされたように見える)
ありがとうございます
戻り値が'a'というstr型なのに負の値にしようとして怒られてるってことでしょうか
key=lambda x: -x[N] という書き方は、reverseオプションの代替ではなく
戻り値に-1を掛けている…という認識であってますか?
(そのため結果として逆順にソートされたように見える)
201デフォルトの名無しさん
2021/10/17(日) 20:47:32.06ID:NeddvKFI -x[0] の演算順序は、どっち?
-x が先なのか、-(x[0]) のカッコ内が先なのか?
前者なら、xが文字列型で、
後者なら、x[0]が文字列型で、エラー
-x が先なのか、-(x[0]) のカッコ内が先なのか?
前者なら、xが文字列型で、
後者なら、x[0]が文字列型で、エラー
202デフォルトの名無しさん
2021/10/17(日) 23:08:28.45ID:ChJOOsVw >>198
・lambda x: 〜のxには('a', 1)とかが入る
・lambda x: 〜の返り値(〜の計算結果)でソートされる
・文字列型にマイナスを掛ける操作(符号反転)は定義されてないのでエラー
・符号反転がreverse=Trueと等価か?についてはそう考えていいけど数値でないと符号反転操作ができないので万能ではない
・符号反転が役立つのは文字列(例では第1要素)は辞書順でソートして数値(例では第2要素)は降順でソートするとか昇順降順降り混ぜたソートをしたいとき
Effective Pythonからの受け売りなので立ち読みとかできるなら読んでみるといい
・lambda x: 〜のxには('a', 1)とかが入る
・lambda x: 〜の返り値(〜の計算結果)でソートされる
・文字列型にマイナスを掛ける操作(符号反転)は定義されてないのでエラー
・符号反転がreverse=Trueと等価か?についてはそう考えていいけど数値でないと符号反転操作ができないので万能ではない
・符号反転が役立つのは文字列(例では第1要素)は辞書順でソートして数値(例では第2要素)は降順でソートするとか昇順降順降り混ぜたソートをしたいとき
Effective Pythonからの受け売りなので立ち読みとかできるなら読んでみるといい
203デフォルトの名無しさん
2021/10/17(日) 23:47:35.33ID:W3iDPsRK モドリッチ
204デフォルトの名無しさん
2021/10/18(月) 13:59:02.18ID:bl1s8YLW values = [2, 1, 0, 1, 2]
orders = []
values[i]が右より大きいならorders.append[i]
その条件を満たすまでi+nで見ていく.最大値len(values)
上記の例だと[0, 1, 4, 3, 2]
が得たいんだけど、どう書いたらいいですか?
なんか超低速か無限ループにはまってしまって…
orders = []
values[i]が右より大きいならorders.append[i]
その条件を満たすまでi+nで見ていく.最大値len(values)
上記の例だと[0, 1, 4, 3, 2]
が得たいんだけど、どう書いたらいいですか?
なんか超低速か無限ループにはまってしまって…
205デフォルトの名無しさん
2021/10/18(月) 14:01:45.68ID:bl1s8YLW あ valuesはランダムな整数のランダムな長さの配列(1〜10くらい)です
206デフォルトの名無しさん
2021/10/18(月) 14:16:32.64ID:zNA2BH7N なんで01432になるんだろ
01444じゃないの
01444じゃないの
207デフォルトの名無しさん
2021/10/18(月) 14:17:00.26ID:N0fetjcl208デフォルトの名無しさん
2021/10/18(月) 14:18:36.21ID:zNA2BH7N つか問題文は自分の言葉で伝え直さないでコピペするべき
209デフォルトの名無しさん
2021/10/18(月) 15:32:14.49ID:r9t2S6+p コピペばれると退学だから
それと判らないように質問してるんだろう
それと判らないように質問してるんだろう
210デフォルトの名無しさん
2021/10/18(月) 20:16:41.07ID:2nbXAeQ6 言わんとしていることはわかる
ランク付けだろ
rank =[i for i in range(len(values))]
でdrop駆使していけるはずだ
ランク付けだろ
rank =[i for i in range(len(values))]
でdrop駆使していけるはずだ
211デフォルトの名無しさん
2021/10/18(月) 21:39:27.07ID:jVCGujj+ >>3
機械学習で最適なクロール間隔を学習しろ
機械学習で最適なクロール間隔を学習しろ
212デフォルトの名無しさん
2021/10/19(火) 10:06:30.06ID:10EXZk67 def hoge(*,a,b):
_print(a,b)
m="a"
n="b"
eval( f"hoge({m}=10,{n}=20)" )
こういう引数必須で、動的に引数名を指定したい場合
evalを使うのが定石でしょうか?
_print(a,b)
m="a"
n="b"
eval( f"hoge({m}=10,{n}=20)" )
こういう引数必須で、動的に引数名を指定したい場合
evalを使うのが定石でしょうか?
213デフォルトの名無しさん
2021/10/19(火) 10:27:13.40ID:K7fU3Cbr そんな回りくどい処理が必要な状況が、
俺には全く想定できない。
俺には全く想定できない。
214デフォルトの名無しさん
2021/10/19(火) 10:41:06.36ID:LLvKMRJR215デフォルトの名無しさん
2021/10/19(火) 11:38:40.18ID:DE2IVg3K タプルのリストをlist.sort()するとき
同じ値なら元のインデックスが若い順に並びますか?
l = [('あ', 0), ('い', 1), ('う', 0)]
l.sort(key = lambda x:x[1])
必ず
[('あ', 0), ('う', 0), ('い', 1)]
ですか?
場合によって
[('う', 0), ('あ', 0), ('い', 1)]
になりうる?
同じ値なら元のインデックスが若い順に並びますか?
l = [('あ', 0), ('い', 1), ('う', 0)]
l.sort(key = lambda x:x[1])
必ず
[('あ', 0), ('う', 0), ('い', 1)]
ですか?
場合によって
[('う', 0), ('あ', 0), ('い', 1)]
になりうる?
216デフォルトの名無しさん
2021/10/19(火) 11:43:32.81ID:z0N9htUT >>215
https://docs.python.org/ja/3/howto/sorting.html#sort-stability-and-complex-sorts
python list.sort stable
とかでググる
https://docs.python.org/ja/3/howto/sorting.html#sort-stability-and-complex-sorts
python list.sort stable
とかでググる
217デフォルトの名無しさん
2021/10/19(火) 11:47:54.98ID:10EXZk67 >>213,214
ありがとうございます
datetimeのtimedeltaを使いたいのですが
timedelta(seconds=3000)
な感じで、secondsの部分がminutesやdaysにしたいときがあるので
条件分岐していたのですが、他の方法があるのかなと思いまして
ありがとうございます
datetimeのtimedeltaを使いたいのですが
timedelta(seconds=3000)
な感じで、secondsの部分がminutesやdaysにしたいときがあるので
条件分岐していたのですが、他の方法があるのかなと思いまして
218デフォルトの名無しさん
2021/10/19(火) 11:51:51.94ID:kFYLNe28 そもそもですがタプルってなんですか?
219デフォルトの名無しさん
2021/10/19(火) 11:59:21.79ID:10EXZk67 自己解決?したかもです
daysやらminutesやらデフォルト値を0に設定して
timedelta(days=days・・・,seconds=seconds)
みたいに全部ぶっこめばいい気がしてきました
daysやらminutesやらデフォルト値を0に設定して
timedelta(days=days・・・,seconds=seconds)
みたいに全部ぶっこめばいい気がしてきました
220デフォルトの名無しさん
2021/10/19(火) 12:01:28.19ID:DE2IVg3K221デフォルトの名無しさん
2021/10/19(火) 12:11:27.56ID:LLvKMRJR >>219
timedelta()の引数は全部任意でデフォルト値0が設定されてるから自分で指定する必要はないよ
timedelta()の引数は全部任意でデフォルト値0が設定されてるから自分で指定する必要はないよ
222デフォルトの名無しさん
2021/10/19(火) 12:18:41.33ID:10EXZk67 >>221
def hoge(u,v):
_timedelta(ここ=v)
hoge("seconds",3000)みたいなとき
ここ、の部分をどうやって指定するのでしょうか?
if u=="days":
_timedelta(days=v)
略
みたいにしていたのですが
timedelta(days=days,,,,seconds=seconds)
でもいいのかなぁと
def hoge(u,v):
_timedelta(ここ=v)
hoge("seconds",3000)みたいなとき
ここ、の部分をどうやって指定するのでしょうか?
if u=="days":
_timedelta(days=v)
略
みたいにしていたのですが
timedelta(days=days,,,,seconds=seconds)
でもいいのかなぁと
223デフォルトの名無しさん
2021/10/19(火) 12:25:04.75ID:K7fU3Cbr a=minutes=3
timedelta(a)でいいんでない?
timedelta(a)でいいんでない?
224デフォルトの名無しさん
2021/10/19(火) 12:25:09.04ID:10EXZk67 さらに自己解決?したかもです
timedelta(**{"seconds":3000} )
でイケました
timedelta(**{"seconds":3000} )
でイケました
225デフォルトの名無しさん
2021/10/19(火) 12:25:47.01ID:10EXZk67226デフォルトの名無しさん
2021/10/19(火) 12:26:11.41ID:K7fU3Cbr いや、できんかった。スマンw
227デフォルトの名無しさん
2021/10/19(火) 12:26:52.98ID:10EXZk67 と、思いましたが>223だとdaysに入ってしまうようです?
連投すいません
連投すいません
228デフォルトの名無しさん
2021/10/19(火) 12:27:10.83ID:K7fU3Cbr dayとして扱われるわ
229デフォルトの名無しさん
2021/10/19(火) 14:30:29.56ID:LLvKMRJR >>222
それはdictionaryで渡して、アスタリスクx2でunpackingする
def hoge(kargs):
__return timedelta(**kargs)
delta = hoge({“seconds”: 3000})
それはdictionaryで渡して、アスタリスクx2でunpackingする
def hoge(kargs):
__return timedelta(**kargs)
delta = hoge({“seconds”: 3000})
230デフォルトの名無しさん
2021/10/19(火) 19:13:22.75ID:p2X/wkWb hoge(u="seconds",v=3000)という呼び出し方しかできないようにする。
def hoge(*, u, v):
...
>>229みたいなのは使う側に優しくないので、引数がわかり切っているときは使わない。
def hoge(*, u, v):
...
>>229みたいなのは使う側に優しくないので、引数がわかり切っているときは使わない。
231デフォルトの名無しさん
2021/10/20(水) 09:19:40.59ID:OEiI06HQ >>212
setattr
setattr
232デフォルトの名無しさん
2021/10/20(水) 19:49:22.13ID:EZ3+LSel ネタがなくても月3万円を稼ぐブログなら誰でも作れる。後はやるかやらないかだけ
ブログで稼ごうと思ったら簡単だよ。
身の回りにあるものをとにかく写真に撮りまくれ!
そのカメラに撮った商品を使い込め!それも徹底的にな!
あとは、お前の感じた感想をそのままブログに書き込むんだ!
その紹介した商品にAmazonのアフィリエイトを忘れるなよ。
これをひたすら続ければ、月に数万円は余裕。
先程の書き込みにも書いてあったとおりなんですが、手順は簡単、次の3ステップです。
1身の回りにあるモノの写真をデジカメで撮りまくる
2写真に撮ったモノを徹底的に使い込む
3モノの使用感を自分の感じたままブログに書き殴る
ブログで稼ごうと思ったら簡単だよ。
身の回りにあるものをとにかく写真に撮りまくれ!
そのカメラに撮った商品を使い込め!それも徹底的にな!
あとは、お前の感じた感想をそのままブログに書き込むんだ!
その紹介した商品にAmazonのアフィリエイトを忘れるなよ。
これをひたすら続ければ、月に数万円は余裕。
先程の書き込みにも書いてあったとおりなんですが、手順は簡単、次の3ステップです。
1身の回りにあるモノの写真をデジカメで撮りまくる
2写真に撮ったモノを徹底的に使い込む
3モノの使用感を自分の感じたままブログに書き殴る
233デフォルトの名無しさん
2021/10/21(木) 05:44:05.86ID:2FnoPHWW 3万円なんてお小遣いにもならねえな
234デフォルトの名無しさん
2021/10/21(木) 06:53:33.05ID:udHqGeXx スライスの使い方誤解してたわ
list = [10,20,30,40,50,60]
|10|20|30|40|50|60|
要するにサンドイッチのパンに要素が挟まってて
左のパンからスライス[0]位置、スライス[1]位置ということなのか
del list[2:4]
なら、|30|40|が除かれて|10|20|50|60|になるのか
なんかあんまり直感的じゃないな
del list[2:3]だと結局|30|しか取り除かない事になるからdel list[2]とかわらないよね?
list = [10,20,30,40,50,60]
|10|20|30|40|50|60|
要するにサンドイッチのパンに要素が挟まってて
左のパンからスライス[0]位置、スライス[1]位置ということなのか
del list[2:4]
なら、|30|40|が除かれて|10|20|50|60|になるのか
なんかあんまり直感的じゃないな
del list[2:3]だと結局|30|しか取り除かない事になるからdel list[2]とかわらないよね?
235デフォルトの名無しさん
2021/10/21(木) 08:45:58.03ID:POpI6QwK236デフォルトの名無しさん
2021/10/21(木) 08:47:32.47ID:rE4toNa0 どっちのやり方が良いかは場合によるんではっきり言えないけど、swiftやrubyを除けばメジャーな言語の多くがindexは0始まり、範囲は開始位置、終了位置+1で指定するんで、多くのプログラマにとってはpythonのやり方のほうが慣れ親しんでいるとは言えるかも
ちなみにswift、rubyは終了位置、終了位置+1のどちらの記法も使える
ちなみにswift、rubyは終了位置、終了位置+1のどちらの記法も使える
237デフォルトの名無しさん
2021/10/21(木) 12:27:44.59ID:moBizkab round(val, n)
みたいな簡単な書き方で、小数点○桁以下切り捨て、っていうのは無いのですかね?
浮動小数点の誤差については気にしないです
123.4567を小数点2桁で切り捨てなら、
123.45 (またはそれに限りなく近い数値)になってほしいです
math floorは桁指定できないですよね
探してもdecimalだとか10^nしてintしてから割るとかやることに対してちょっと大げさなものしか見つかりませんでした
みたいな簡単な書き方で、小数点○桁以下切り捨て、っていうのは無いのですかね?
浮動小数点の誤差については気にしないです
123.4567を小数点2桁で切り捨てなら、
123.45 (またはそれに限りなく近い数値)になってほしいです
math floorは桁指定できないですよね
探してもdecimalだとか10^nしてintしてから割るとかやることに対してちょっと大げさなものしか見つかりませんでした
238デフォルトの名無しさん
2021/10/21(木) 12:46:20.72ID:/d/0VOpU floor(x*10**n)/10**n
239デフォルトの名無しさん
2021/10/21(木) 13:17:26.48ID:T2C3Q12E さすがにそれは
240デフォルトの名無しさん
2021/10/21(木) 16:14:53.89ID:8ILWSSPd フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
掲載案件数15万件突破!さらにリモートワークの掲載案件数4,000件突破!
ITフリーランスの独立支援サービス『テックビズ』&定額制全国住み放題『ADDress』提携開始
ITフリーランスの独立支援サービス『テックビズ』とフリーランス向け報酬即日払いサービス『先払い』提携開始
新型コロナの影響で、常駐型フリーランスエンジニアのリモート対応が増加
フリーランスエンジニア必見!リモートワークや週3案件があるサービス5
高報酬案件を求めるフリーランスエンジニアのための案件マッチングプラットフォーム
「Pro Connect Enginner(プロコネクトエンジニア)」正式版、2021年2月28日リリース!
掲載案件数15万件突破!さらにリモートワークの掲載案件数4,000件突破!
ITフリーランスの独立支援サービス『テックビズ』&定額制全国住み放題『ADDress』提携開始
ITフリーランスの独立支援サービス『テックビズ』とフリーランス向け報酬即日払いサービス『先払い』提携開始
新型コロナの影響で、常駐型フリーランスエンジニアのリモート対応が増加
フリーランスエンジニア必見!リモートワークや週3案件があるサービス5
高報酬案件を求めるフリーランスエンジニアのための案件マッチングプラットフォーム
「Pro Connect Enginner(プロコネクトエンジニア)」正式版、2021年2月28日リリース!
241デフォルトの名無しさん
2021/10/21(木) 16:18:34.28ID:yuVpO81C "1×2.txt"のように"×"が文字列に入ったファイル名を処理しようとしています。
files = sys.argv[1]
で受け取って
print(files)
すると、×がなくなって
12.txt
に化けています。避ける方法はありませんか?
files = sys.argv[1]
で受け取って
print(files)
すると、×がなくなって
12.txt
に化けています。避ける方法はありませんか?
242デフォルトの名無しさん
2021/10/21(木) 16:22:23.38ID:gR5+oZUI243デフォルトの名無しさん
2021/10/21(木) 16:26:13.82ID:s+STdMnX244デフォルトの名無しさん
2021/10/21(木) 16:27:35.45ID:s+STdMnX filesのbyte列を出力してみろ
245デフォルトの名無しさん
2021/10/21(木) 18:35:03.76ID:yuVpO81C >244
やってみました。
print(files.encode())
b'12.txt'
どこで消えてるんだろう…全角の×なので、普通に通ると思っていたのですが…
やってみました。
print(files.encode())
b'12.txt'
どこで消えてるんだろう…全角の×なので、普通に通ると思っていたのですが…
246デフォルトの名無しさん
2021/10/21(木) 18:41:59.80ID:iSzsEmw9247デフォルトの名無しさん
2021/10/21(木) 18:54:37.47ID:yuVpO81C OS: Win11Pro
シェル: PowerShell 7.1.5
Python: Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32
VS Codeのworkspace.jsonに
"args" : ["1×2.txt"]
呼び出しは
files = sys.argv[1]
files = files.encode()
print(files)
です。>246さん、なにかわかりますでしょうか? お願いします。
シェル: PowerShell 7.1.5
Python: Python 3.10.0 (tags/v3.10.0:b494f59, Oct 4 2021, 19:00:18) [MSC v.1929 64 bit (AMD64)] on win32
VS Codeのworkspace.jsonに
"args" : ["1×2.txt"]
呼び出しは
files = sys.argv[1]
files = files.encode()
print(files)
です。>246さん、なにかわかりますでしょうか? お願いします。
248デフォルトの名無しさん
2021/10/21(木) 19:04:23.86ID:YezGVy7K >>240
サンキュー!こんなとこで宣伝するなんてろくでもないとこだろうからローカルプロキシにNGブチこんどくわ!
サンキュー!こんなとこで宣伝するなんてろくでもないとこだろうからローカルプロキシにNGブチこんどくわ!
249デフォルトの名無しさん
2021/10/21(木) 19:10:04.13ID:wgFCmdkg エラー吐かずにスルーする目的でtryを使うのは
行儀としてどうですか?
やめたほうがいいのでしょうか
for:
_try:
__エラーが出ても次の処理を実行
_except Exception as e:
__print(e)
__pass
__continue
みたいな感じです
行儀としてどうですか?
やめたほうがいいのでしょうか
for:
_try:
__エラーが出ても次の処理を実行
_except Exception as e:
__print(e)
__pass
__continue
みたいな感じです
250デフォルトの名無しさん
2021/10/21(木) 19:54:31.39ID:yqrc4/Lg >>247
ターミナルの引数の時点で×が消えてるからvscode側の問題かな
ターミナルの引数の時点で×が消えてるからvscode側の問題かな
251デフォルトの名無しさん
2021/10/21(木) 20:02:45.41ID:T2C3Q12E >>249
ぜんぜんいいけど
Exceptionじゃなくて想定している例外にしないと
想定外の問題が発生してもすり抜けるのでダメ
実際に例外だしてそれを指定してあげる
たとえば配列の範囲外ならIndexErrorなど
ぜんぜんいいけど
Exceptionじゃなくて想定している例外にしないと
想定外の問題が発生してもすり抜けるのでダメ
実際に例外だしてそれを指定してあげる
たとえば配列の範囲外ならIndexErrorなど
252デフォルトの名無しさん
2021/10/21(木) 20:07:36.86ID:yuVpO81C >250
切り分けありがとうございます。
vscodeのスレで聞いてみます。
切り分けありがとうございます。
vscodeのスレで聞いてみます。
253デフォルトの名無しさん
2021/10/21(木) 21:35:10.28ID:iSzsEmw9 >>247
シェルのエンコーディングとフォント、ファイル名のエンコーディングを確認するといいんでないかな
UTF-8のファイルで文字列を受け取って、UTF-8のファイルに出力してみて
出力の中身をエディタで確認して問題ないか確認して切り分けしてみれば?
シェルのエンコーディングとフォント、ファイル名のエンコーディングを確認するといいんでないかな
UTF-8のファイルで文字列を受け取って、UTF-8のファイルに出力してみて
出力の中身をエディタで確認して問題ないか確認して切り分けしてみれば?
254デフォルトの名無しさん
2021/10/21(木) 22:23:10.34ID:yuVpO81C >253
1×2 とUTF-8で書いたtxtを openしてreadしたところ、×が表示されました。
シェルはUTF-8、jsonもUTF-8です。やはりvscodeがなにか悪さしてるのでしょうか?
1×2 とUTF-8で書いたtxtを openしてreadしたところ、×が表示されました。
シェルはUTF-8、jsonもUTF-8です。やはりvscodeがなにか悪さしてるのでしょうか?
255デフォルトの名無しさん
2021/10/21(木) 22:28:15.67ID:EiXMJcNZ >>249
スルーしていいエラーならいいよ
スルーしていいエラーならいいよ
256デフォルトの名無しさん
2021/10/22(金) 12:09:19.87ID:KhubwY06257デフォルトの名無しさん
2021/10/22(金) 13:08:40.17ID:pSuh16SX >256
-a--- 2021/10/21 22:08 8 1×2.txt
表示されます!
なんかvscodeのバグなのか仕様なのかのせいなんですかね…
-a--- 2021/10/21 22:08 8 1×2.txt
表示されます!
なんかvscodeのバグなのか仕様なのかのせいなんですかね…
258デフォルトの名無しさん
2021/10/22(金) 13:09:12.13ID:pSuh16SX vscodeでのデバッグのときだけみたいなんで、半分諦めです。
259デフォルトの名無しさん
2021/10/22(金) 14:11:33.51ID:X7QNDBcm PySimpleGUIをつかってスクレイピング用のスクリプトをGUIにしてpyinstallerでexe化(コンソール無し設定)しました。exeで起動するとなにかしらのアクションですぐにコードが強制終了します。調べたところ、スクレイピングに使っているクロームドライバーの自動更新ライブラリがサブプロセスを開始しようとするときにコンソールを封じられているために落ちるってことらしいのですが回避方法がわからないです。知っている方がいたら教えてください。
260デフォルトの名無しさん
2021/10/22(金) 15:26:37.44ID:NCC4eAK/ >>241 >>258
すまんこれvscodeじゃなくてpowershellのモジュールの方だった
https://social.technet.microsoft.com/Forums/ja-JP/862dda39-0c53-447c-b4bd-05e147a4f9e4/powershell
vscodeからの実行はコピペ+enterで実現してるようでPSReadLineのバグに引っかかる
ターミナル上でRemove-Module PSReadlineを実行した後は正常
当然シェルをbashやコマンドプロンプトに変更でも回避可能
すまんこれvscodeじゃなくてpowershellのモジュールの方だった
https://social.technet.microsoft.com/Forums/ja-JP/862dda39-0c53-447c-b4bd-05e147a4f9e4/powershell
vscodeからの実行はコピペ+enterで実現してるようでPSReadLineのバグに引っかかる
ターミナル上でRemove-Module PSReadlineを実行した後は正常
当然シェルをbashやコマンドプロンプトに変更でも回避可能
261デフォルトの名無しさん
2021/10/22(金) 16:28:01.92ID:pSuh16SX262デフォルトの名無しさん
2021/10/22(金) 16:46:07.04ID:DsjZYzXm >>259
AllocConsole
AllocConsole
263デフォルトの名無しさん
2021/10/22(金) 17:23:28.01ID:X7QNDBcm >>262
ごめん。調べたけどそれだけじゃわからんかった。OSにGUI用のコンソールを用意してもらうってことなんかな。だとしても実装方法が皆目見当つかん。
ごめん。調べたけどそれだけじゃわからんかった。OSにGUI用のコンソールを用意してもらうってことなんかな。だとしても実装方法が皆目見当つかん。
264デフォルトの名無しさん
2021/10/22(金) 20:02:41.52ID:5ieIGpLh 辞書のソート方法を探してたんだけど
https://techacademy.jp/magazine/19309
このページ見たら
dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())
で出来るって書いてあったがこれ、type(dic2)やったらlistになっとるやんけ
辞書のままソートする方法を普通書かないか?
https://techacademy.jp/magazine/19309
このページ見たら
dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())
で出来るって書いてあったがこれ、type(dic2)やったらlistになっとるやんけ
辞書のままソートする方法を普通書かないか?
265デフォルトの名無しさん
2021/10/22(金) 20:08:47.66ID:5ieIGpLh これ、元の辞書を並べ替える場合って
dic1.clear
で
dic2(実はリスト)を
dic1.update(dic2)
ってやるしかないの?
dic1.clear
で
dic2(実はリスト)を
dic1.update(dic2)
ってやるしかないの?
266デフォルトの名無しさん
2021/10/22(金) 20:13:56.45ID:5ieIGpLh ちょっと間違えてたから書き直した
dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())
dic.clear()
dic.update(dic2)
これで辞書のkeyでの並び替えが出来るっぽいんだけど、これ以外に方法ある?
dic = {"X": 80, "A": 200, "E": 5, "R": 20, "S": 40}
dic2 = sorted(dic.items())
dic.clear()
dic.update(dic2)
これで辞書のkeyでの並び替えが出来るっぽいんだけど、これ以外に方法ある?
267デフォルトの名無しさん
2021/10/22(金) 20:57:16.61ID:szev1NjN どうしてdictionaryをsortしたいの?
268デフォルトの名無しさん
2021/10/22(金) 21:15:58.94ID:QiF9wMqh dictがOrderedDict相当になったとき
順序に依存するコードが増えたら嫌だなとおもったけど
処理コスト変わらんのに便利さを選ばないのも偏狭なんだろうな
>>266
dict(sorted(dic.items()))
順序に依存するコードが増えたら嫌だなとおもったけど
処理コスト変わらんのに便利さを選ばないのも偏狭なんだろうな
>>266
dict(sorted(dic.items()))
269デフォルトの名無しさん
2021/10/22(金) 21:47:08.80ID:5ieIGpLh270デフォルトの名無しさん
2021/10/22(金) 22:05:03.21ID:szev1NjN お、おう。
271デフォルトの名無しさん
2021/10/22(金) 22:32:57.50ID:0c+YzSoZ アンチパターンってやつやな
272デフォルトの名無しさん
2021/10/22(金) 22:59:32.08ID:8L7RGAQS 例えば以下のように、デスクトップにショートカットを作って、
コマンドプロンプトから、Ruby スクリプトを起動すると、
C:\Program Files/ みたいに、半角空白が入っているパスで、バグる
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
(注意。書き込めないので間に、@を入れました)
これをショートカットからコマンドプロンプトを通さず、
直接、Ruby スクリプトを起動すると、正常に動く
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
とにかく、コマンドプロンプト・Power Shell と、
Linux 系の動的言語との通信には、
半角空白・日本語のファイルパスなど、文字列のバグが多い
VSCode は、WSL2 などLinux, Docker にも対応しているので、動的言語でもバグらない。
バグるのは、コマンドプロンプト・Power Shellの部分
コマンドプロンプトから、Ruby スクリプトを起動すると、
C:\Program Files/ みたいに、半角空白が入っているパスで、バグる
C:\Windows\System32\cmd@.exe /k "ruby C:/Users/Owner/Documents/a.rb"
(注意。書き込めないので間に、@を入れました)
これをショートカットからコマンドプロンプトを通さず、
直接、Ruby スクリプトを起動すると、正常に動く
C:\Ruby25-x64\bin\ruby.exe C:/Users/Owner/Documents/a.rb
とにかく、コマンドプロンプト・Power Shell と、
Linux 系の動的言語との通信には、
半角空白・日本語のファイルパスなど、文字列のバグが多い
VSCode は、WSL2 などLinux, Docker にも対応しているので、動的言語でもバグらない。
バグるのは、コマンドプロンプト・Power Shellの部分
273デフォルトの名無しさん
2021/10/23(土) 01:41:10.93ID:L2XVMbSO pilで複数の画像を1枚の背景に貼り付けたい
入力される画像の位置がランダムbbox(x1,y1,x2,y2)なんだけど
すべての座標を含む最小範囲の背景(0,0,x2,y2)ってどうやって計算したらいいのですか?
入力される画像の位置がランダムbbox(x1,y1,x2,y2)なんだけど
すべての座標を含む最小範囲の背景(0,0,x2,y2)ってどうやって計算したらいいのですか?
274デフォルトの名無しさん
2021/10/23(土) 03:20:28.76ID:L2XVMbSO あー
bgbbox = min(x1s),min(y1s),max(x2s),max(y2s)
か
ペースト時x系に-abs(min(x1s)), y系に-abs(min(y1s))
※pip 基点0,0なので
?
bgbbox = min(x1s),min(y1s),max(x2s),max(y2s)
か
ペースト時x系に-abs(min(x1s)), y系に-abs(min(y1s))
※pip 基点0,0なので
?
275デフォルトの名無しさん
2021/10/23(土) 05:04:17.46ID:n7GT2TeK >>270
超初心者相手にそういう意味の分からん反応止めてくれや
東大が公開してるPythonプログラミング入門の例題に
https://utokyo-ipp.github.io/3/3-1.html
辞書 dic1 と文字列 str1 が引数として与えられたとき、 以下のように dic1 を変更する関数 handle_collision を作成してください。 ただし、dic1 のキーは整数、キーに対応する値は文字列を要素とするリストとします。
dic1 に str1 の長さ n がキーとして登録されていない場合、str1 のみを要素とするリスト ls を作成し、 dic1 にキー n、n に対応する値 ls を登録します。
dic1 に str1 の長さ n がキーとして登録されている場合、そのキーに対応する値(リスト)に str1 を追加します。
以下のセルの ... のところを書き換えて handle_collision(dic1, str1) を作成してください。
def handle_collision(dic1, str1):
...
ってのがあって、その回答が
def handle_collision(dic1, str1):
if dic1.get(len(str1)) is None:
ls = [str1]
else:
ls = dic1[len(str1)]
ls.append(str1)
dic1[len(str1)] = ls
#handle_collision({3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}, 'tea')
だったんだよ
超初心者相手にそういう意味の分からん反応止めてくれや
東大が公開してるPythonプログラミング入門の例題に
https://utokyo-ipp.github.io/3/3-1.html
辞書 dic1 と文字列 str1 が引数として与えられたとき、 以下のように dic1 を変更する関数 handle_collision を作成してください。 ただし、dic1 のキーは整数、キーに対応する値は文字列を要素とするリストとします。
dic1 に str1 の長さ n がキーとして登録されていない場合、str1 のみを要素とするリスト ls を作成し、 dic1 にキー n、n に対応する値 ls を登録します。
dic1 に str1 の長さ n がキーとして登録されている場合、そのキーに対応する値(リスト)に str1 を追加します。
以下のセルの ... のところを書き換えて handle_collision(dic1, str1) を作成してください。
def handle_collision(dic1, str1):
...
ってのがあって、その回答が
def handle_collision(dic1, str1):
if dic1.get(len(str1)) is None:
ls = [str1]
else:
ls = dic1[len(str1)]
ls.append(str1)
dic1[len(str1)] = ls
#handle_collision({3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}, 'tea')
だったんだよ
276デフォルトの名無しさん
2021/10/23(土) 05:08:31.39ID:n7GT2TeK で、このコード実行すると
dic1_orig = {3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}
handle_collision(dic1_orig, 'tea')
{3: ['ham', 'egg', 'tea'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}
これになるんだけど、'tea'以外のやついれたらどうなるのかな、って試してみたら
handle_collision(dic1_orig, 'pp')
{3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken'], 2: ['pp']}
って 2のキーが最後尾に追加されてなんかモヤったからキーを順序どおりの並びにするにはどうすんのかな、って思ったわけ
dic1_orig = {3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}
handle_collision(dic1_orig, 'tea')
{3: ['ham', 'egg', 'tea'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken']}
これになるんだけど、'tea'以外のやついれたらどうなるのかな、って試してみたら
handle_collision(dic1_orig, 'pp')
{3: ['ham', 'egg'], 6: ['coffee', 'brandy'], 9: ['port wine'], 15: ['curried chicken'], 2: ['pp']}
って 2のキーが最後尾に追加されてなんかモヤったからキーを順序どおりの並びにするにはどうすんのかな、って思ったわけ
277デフォルトの名無しさん
2021/10/23(土) 07:39:54.83ID:uHOK1QLC 1. str1 の長さ n がキーとして登録されていない場合は、追加
2. str1 の長さ n がキーとして登録されている場合は、更新
存在しなければ追加・存在すれば更新は、データベースでも、よくある処理
そりゃ、2文字は登録されていないから、追加される。
2: ['pp']
2. str1 の長さ n がキーとして登録されている場合は、更新
存在しなければ追加・存在すれば更新は、データベースでも、よくある処理
そりゃ、2文字は登録されていないから、追加される。
2: ['pp']
278277
2021/10/23(土) 07:45:14.89ID:uHOK1QLC 一般的には、辞書・集合には順序がない。
まれに、辞書・集合へ追加した順番を、記憶している言語もある
だから、順序よく並べたいなら、ソートする
まれに、辞書・集合へ追加した順番を、記憶している言語もある
だから、順序よく並べたいなら、ソートする
279デフォルトの名無しさん
2021/10/23(土) 11:44:43.09ID:Y/CMfyXG280デフォルトの名無しさん
2021/10/23(土) 11:51:35.15ID:qhVW7VS5 >>275
お、おう、すまんかった
表示する時にきれいに並べたいだけならpretty printで
from pprint import pprint
pprint(dic)
3.7以降の辞書は挿入順で並んでることが保証されてるんだけど
表示目的のためだけに新しい辞書を作成して挿入しなおして並び替えることは普通やらない
同じ並び替えを何度も繰り返し実行しないといけない場合なら無駄ではないんだけど
その場合は他のデータ構造を使ったほうがいい可能性が高いので
わざわさ並べ直した辞書が欲しい用途ってなんだろうと思って聞いてみた
お、おう、すまんかった
表示する時にきれいに並べたいだけならpretty printで
from pprint import pprint
pprint(dic)
3.7以降の辞書は挿入順で並んでることが保証されてるんだけど
表示目的のためだけに新しい辞書を作成して挿入しなおして並び替えることは普通やらない
同じ並び替えを何度も繰り返し実行しないといけない場合なら無駄ではないんだけど
その場合は他のデータ構造を使ったほうがいい可能性が高いので
わざわさ並べ直した辞書が欲しい用途ってなんだろうと思って聞いてみた
281デフォルトの名無しさん
2021/10/23(土) 12:26:09.46ID:VN/PPZMZ 教えてください
「keyerrorがでるけどどこがだめなのかわからない」 https://teratail.com/questions/365802?sip=n0070000_019&uid=199109 #teratail #python
「keyerrorがでるけどどこがだめなのかわからない」 https://teratail.com/questions/365802?sip=n0070000_019&uid=199109 #teratail #python
282デフォルトの名無しさん
2021/10/23(土) 12:32:34.22ID:n7GT2TeK283デフォルトの名無しさん
2021/10/23(土) 12:41:34.85ID:qhVW7VS5 >>281
KeyError: 'びわこ'
KeyError: 'びわこ'
284デフォルトの名無しさん
2021/10/23(土) 12:51:17.61ID:+0P0mc8U >>281
dict_stadiumに'琵琶湖'はあっても'びわこ'はない
dict_stadiumに'琵琶湖'はあっても'びわこ'はない
285デフォルトの名無しさん
2021/10/23(土) 13:19:57.09ID:DsNdyrVS テラタよりこっちのが回答早いのか
286デフォルトの名無しさん
2021/10/23(土) 17:01:23.55ID:TEk5cWky re.complie(パターン)
complie済みのパターンが複数ある場合
パターン同士を結合するのってどうやるのでしょうか?
complie済みのパターンが複数ある場合
パターン同士を結合するのってどうやるのでしょうか?
287デフォルトの名無しさん
2021/10/23(土) 18:18:18.96ID:skaucHgA Djangoを始めました
view.pyの中にある変数の中身を確認したいですが方法が分かりません
デバッグ方法はちゃんと分かってませんが一応環境は作りました
見たいのはDjangoチュートリアルにもあるlatest_question_list = Question.objects.order_by('-pub_date')[:5]
の中身です
エディターはvscodeです
view.pyの中にある変数の中身を確認したいですが方法が分かりません
デバッグ方法はちゃんと分かってませんが一応環境は作りました
見たいのはDjangoチュートリアルにもあるlatest_question_list = Question.objects.order_by('-pub_date')[:5]
の中身です
エディターはvscodeです
288デフォルトの名無しさん
2021/10/23(土) 18:45:21.20ID:skaucHgA289デフォルトの名無しさん
2021/10/23(土) 21:09:29.62ID:qhVW7VS5290デフォルトの名無しさん
2021/10/23(土) 21:54:12.92ID:uHOK1QLC Ruby なら、Regexp.union でパターンを、OR で合成できる
p Regexp.union(/a/, "*") # => /(?-mix:a)|\*/
p Regexp.union(/a/, /b/, /c/) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
arr = [/a/, /b/, /c/]
p Regexp.union(arr) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
p Regexp.union(/a/, "*") # => /(?-mix:a)|\*/
p Regexp.union(/a/, /b/, /c/) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
arr = [/a/, /b/, /c/]
p Regexp.union(arr) # => /(?-mix:a)|(?-mix:b)|(?-mix:c)/
291デフォルトの名無しさん
2021/10/23(土) 23:19:51.40ID:oBaQvszz ルビキチってどこにでも涌くのな
292デフォルトの名無しさん
2021/10/24(日) 09:17:16.16ID:ju8sH4Lg この板の外にも湧いてるんだぞ
293デフォルトの名無しさん
2021/10/24(日) 12:57:50.65ID:nICPJrT1 >>289
ありがとうございますパターンが取れました
ptn1 = re.compile("\.gif$").pattern
ptn2 = re.compile("\.jpg$|\.png$",re.IGNORECASE).pattern
ptn2が
"\.jpg$|\.JPG$|\.png$|\.PNG$"
な感じだったらよかったんですけどね
re.compile(ptn1+"|"+ptn2,re.IGNORECASE)
だと
"\.gif$|\.GIF$|\.jpg$|\.JPG$|\.png$|\.PNG$"
と同等?になってしまうので
ありがとうございますパターンが取れました
ptn1 = re.compile("\.gif$").pattern
ptn2 = re.compile("\.jpg$|\.png$",re.IGNORECASE).pattern
ptn2が
"\.jpg$|\.JPG$|\.png$|\.PNG$"
な感じだったらよかったんですけどね
re.compile(ptn1+"|"+ptn2,re.IGNORECASE)
だと
"\.gif$|\.GIF$|\.jpg$|\.JPG$|\.png$|\.PNG$"
と同等?になってしまうので
294デフォルトの名無しさん
2021/10/24(日) 13:06:47.73ID:nICPJrT1 改めてぐぐってみると
そもそもフラグの記述はいろいろあるみたいですね >>293
(?フラグ:パターン)
これなら基本は文字列でもcompile済でもどちらでもいい気がしました
ptns = ["\.gif$","(?i:\.jpg$|\.png$)"]
ptn = re.compile("|".join(ptns))
そもそもフラグの記述はいろいろあるみたいですね >>293
(?フラグ:パターン)
これなら基本は文字列でもcompile済でもどちらでもいい気がしました
ptns = ["\.gif$","(?i:\.jpg$|\.png$)"]
ptn = re.compile("|".join(ptns))
295デフォルトの名無しさん
2021/10/24(日) 14:04:30.70ID:9GD27ADQ296デフォルトの名無しさん
2021/10/24(日) 15:34:01.95ID:dQwbGYLm Ruby で、漏れは自分で関数を作っている
拡張子を小文字に変換してから、それが配列内にあるかどうか
ただし、jxr はブラウザで表示できない
ary = %w(png jpg jpeg gif webp) # 画像の拡張子
extname = "JPeg"
extname.downcase! # 小文字へ変換する
p ary.include? extname # 含まれている?
#=> true
拡張子を小文字に変換してから、それが配列内にあるかどうか
ただし、jxr はブラウザで表示できない
ary = %w(png jpg jpeg gif webp) # 画像の拡張子
extname = "JPeg"
extname.downcase! # 小文字へ変換する
p ary.include? extname # 含まれている?
#=> true
297デフォルトの名無しさん
2021/10/24(日) 16:09:48.63ID:nICPJrT1298デフォルトの名無しさん
2021/10/24(日) 18:40:19.51ID:ugUepsfY vscodeでdjangoやってます
views.pyでrenderの第2引数に指定したhtmlやreverseの第1引数のアプリ名:urlネームに書いてあるその場所にGo toしたいのですが方法ありますか?
djangoに限らずpath書いてないとgo to definitionできない感じですか?
views.pyでrenderの第2引数に指定したhtmlやreverseの第1引数のアプリ名:urlネームに書いてあるその場所にGo toしたいのですが方法ありますか?
djangoに限らずpath書いてないとgo to definitionできない感じですか?
299デフォルトの名無しさん
2021/10/25(月) 17:14:48.98ID:MOhV5cOT class hoge:
_items = []
_def each(self,callback=None):
__res=[]
___argcount=callback.__code__.co_argcount
__if _argcount==1:
___for item in self.items:
____res.append(callback(item))
__elif _argcount==2:
___for i,item in enumerate(self.items):
____res.append(callback(i,item))
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )
print( h.each(lambda i,item: str(i)+"_"+str(item)) )
#['_a', '_b', '_c']
#['0_a', '1_b', '2_c']
callbackでindexも取りたいので↑のように書いたのですが
こうするしかないのでしょうか?
今は引数は、(item)と(i,item)しかとりませんが
仮にcallback内でitemやindexとは別の何か引数を引き継ぎたくなったという場合
どう拡張していけばいいのかな、と思いました
_items = []
_def each(self,callback=None):
__res=[]
___argcount=callback.__code__.co_argcount
__if _argcount==1:
___for item in self.items:
____res.append(callback(item))
__elif _argcount==2:
___for i,item in enumerate(self.items):
____res.append(callback(i,item))
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )
print( h.each(lambda i,item: str(i)+"_"+str(item)) )
#['_a', '_b', '_c']
#['0_a', '1_b', '2_c']
callbackでindexも取りたいので↑のように書いたのですが
こうするしかないのでしょうか?
今は引数は、(item)と(i,item)しかとりませんが
仮にcallback内でitemやindexとは別の何か引数を引き継ぎたくなったという場合
どう拡張していけばいいのかな、と思いました
300デフォルトの名無しさん
2021/10/25(月) 18:13:43.66ID:YeRcjGgP *argsとか**kwargsで可変長の引数を取るようにすればいい、とかそういう話か?
301デフォルトの名無しさん
2021/10/25(月) 19:23:30.01ID:MOhV5cOT >>300
すこし違います
*指定だとインスタンス側でcallbackを書くときに
常にcallback(*arg)とか、callback(**kwards)とかを書かなければならない気がします
>>299の例の場合
each対象はself.itemsなのでcallbackの中身を書くときの引数は
callback(ここでの引数名はitemsに入る値に関係する名前)
にしたいのです
299の例だと拡張されたのはインデックスのみなので、
インデックスが欲しいかほしくないかに関わらずインデックスを取ることにすると
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
__for i,item in enumerate(self.items):
___res.append(callback(item,i))#itemの方が使用頻度高いので引数を逆に渡す
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )#エラー
print( h.each(lambda item,i: str(i)+"_"+str(item)) )
と書けると思いましたが
無い引数を渡すとエラーが出てしまいました
この辺の慣習とかあるのか、そもそもそんなことしなくてもいい(継承できるようなテクニックがある)のか
というのがわからないので
iを使わない場合も、callback(i,item)と書けばいいのでは?とか
index情報を持ったitemオブジェクトを返却して、item.itemでitem取得
みたいな方法は保留してます
今考えているのは
callback.__code__.co_varnames[:callback.__code__.co_argcount]
使ってみたりの条件分岐です
すこし違います
*指定だとインスタンス側でcallbackを書くときに
常にcallback(*arg)とか、callback(**kwards)とかを書かなければならない気がします
>>299の例の場合
each対象はself.itemsなのでcallbackの中身を書くときの引数は
callback(ここでの引数名はitemsに入る値に関係する名前)
にしたいのです
299の例だと拡張されたのはインデックスのみなので、
インデックスが欲しいかほしくないかに関わらずインデックスを取ることにすると
class hoge:
_items = []
_def each(self,callback=None):
__res=[]
__for i,item in enumerate(self.items):
___res.append(callback(item,i))#itemの方が使用頻度高いので引数を逆に渡す
__return res
h=hoge()
h.items = ["a","b","c"]
print( h.each(lambda item: "_"+str(item)) )#エラー
print( h.each(lambda item,i: str(i)+"_"+str(item)) )
と書けると思いましたが
無い引数を渡すとエラーが出てしまいました
この辺の慣習とかあるのか、そもそもそんなことしなくてもいい(継承できるようなテクニックがある)のか
というのがわからないので
iを使わない場合も、callback(i,item)と書けばいいのでは?とか
index情報を持ったitemオブジェクトを返却して、item.itemでitem取得
みたいな方法は保留してます
今考えているのは
callback.__code__.co_varnames[:callback.__code__.co_argcount]
使ってみたりの条件分岐です
302デフォルトの名無しさん
2021/10/25(月) 20:51:56.35ID:LSRIz4jp リスト内包表記で得られたリスト
[’金額¥150’,’金額¥222’,’’,’’,’金額¥0’,’金額¥465’]のうち、’’を’金額¥0’に置換するにはどのようにしたらいいですか?
[money.replace("","¥0") for money in moneys]ではだめでした。
[’金額¥150’,’金額¥222’,’’,’’,’金額¥0’,’金額¥465’]のうち、’’を’金額¥0’に置換するにはどのようにしたらいいですか?
[money.replace("","¥0") for money in moneys]ではだめでした。
303デフォルトの名無しさん
2021/10/25(月) 21:10:11.44ID:utaK2F0U >>302
>>> ['金額¥0' if money == '' else money for money in moneys ]
['金額¥150', '金額¥222', '金額¥0', '金額¥0', '金額\0', '金額\465']
ていうか、動くコード貼れよ
>>> ['金額¥0' if money == '' else money for money in moneys ]
['金額¥150', '金額¥222', '金額¥0', '金額¥0', '金額\0', '金額\465']
ていうか、動くコード貼れよ
304デフォルトの名無しさん
2021/10/25(月) 21:43:12.61ID:i1JdqDPj > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
在日朝鮮人は強姦と窃盗してる犯罪者!
在日朝鮮人は皆殺しにすべし!
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
在日朝鮮人は強姦と窃盗してる犯罪者!
在日朝鮮人は皆殺しにすべし!
305デフォルトの名無しさん
2021/10/25(月) 22:45:53.76ID:sv7Zp2+/ >>301
コールバック関数のシグニチャが違えば違うAPIを用意するのが普通
Pythonに限らずJS以外の言語ではそれが普通だと思う
Rubyで言うeachとeach_with_index
HogeをIterableにして
print([f”_{item}” for item in hoge]) や
print([f”{i}_{item}” for i, item in enumerate(hoge)]) することのほうがPythonでは多いと思う
コールバック関数のシグニチャが違えば違うAPIを用意するのが普通
Pythonに限らずJS以外の言語ではそれが普通だと思う
Rubyで言うeachとeach_with_index
HogeをIterableにして
print([f”_{item}” for item in hoge]) や
print([f”{i}_{item}” for i, item in enumerate(hoge)]) することのほうがPythonでは多いと思う
306デフォルトの名無しさん
2021/10/26(火) 18:26:21.05ID:58PW1UcQ javascriptに限った話じゃないんだけど、
Max Retry、っていったら純粋に"リトライ"の回数でカウントする?それとも総実行回数を指す?
MaxRetry=5なら
初回の1回含めて最大6回やるのか、5回なのか。
なんか気になって。
Max Retry、っていったら純粋に"リトライ"の回数でカウントする?それとも総実行回数を指す?
MaxRetry=5なら
初回の1回含めて最大6回やるのか、5回なのか。
なんか気になって。
307デフォルトの名無しさん
2021/10/26(火) 18:34:57.12ID:qzAOjqD0 そんな名前絶対につけないけど、その名前なら6回でしょ
308デフォルトの名無しさん
2021/10/26(火) 19:14:57.68ID:BNqSw8pO 最初の試行は"Re"tryじゃないから6回だわな
309デフォルトの名無しさん
2021/10/27(水) 13:56:39.52ID:0D9sPP+O ???????????????????
?????????????????????????????
?????????????????????????????
310デフォルトの名無しさん
2021/10/27(水) 16:50:18.70ID:rwCBpLuv pyodbcの接続時にスキーマまで指定する方法ありませんか
接続文字列に入れてもエラーになってしまいます
接続文字列に入れてもエラーになってしまいます
311デフォルトの名無しさん
2021/10/27(水) 18:14:05.36ID:CtZ0vCqQ 変数の名付けでちょうど良い具合がわからない
たとえば文字列の長さの変数をstr1_wordlengthとしたんだけど
---------------------
str1 = 'apple'
str1_wordlength = len(str1) # 5
#文字列と文字数を格納する辞書dic1をつくる
dic1 = {str1_wordlength: str1} # {5: 'apple'}
---------------------
「str1_wordlength ならたぶん意味が通じると思うけど長過ぎじゃね? 毎回これ書くのか?」とも思うし
この変数「名付けするの面倒だからいっそ a でいいんじゃね?」とも思うし
「そもそも変数作る必要あるか? len(str1)は変数名より短いじゃん?」とも思うし
練習問題やってるうちはぶっちゃけ何でも良いと思うんだが
後々を考えるとどうしたらいいんだろうな、と
たとえば文字列の長さの変数をstr1_wordlengthとしたんだけど
---------------------
str1 = 'apple'
str1_wordlength = len(str1) # 5
#文字列と文字数を格納する辞書dic1をつくる
dic1 = {str1_wordlength: str1} # {5: 'apple'}
---------------------
「str1_wordlength ならたぶん意味が通じると思うけど長過ぎじゃね? 毎回これ書くのか?」とも思うし
この変数「名付けするの面倒だからいっそ a でいいんじゃね?」とも思うし
「そもそも変数作る必要あるか? len(str1)は変数名より短いじゃん?」とも思うし
練習問題やってるうちはぶっちゃけ何でも良いと思うんだが
後々を考えるとどうしたらいいんだろうな、と
312デフォルトの名無しさん
2021/10/27(水) 18:15:13.83ID:sQbCpqyG >>310
DSN側で設定しておくんじゃない?
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases
ここのDB別の文書読んでみて
DSN側で設定しておくんじゃない?
https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-databases
ここのDB別の文書読んでみて
313デフォルトの名無しさん
2021/10/28(木) 02:31:25.25ID:bnoFQANv strの特殊メソッドつかったらprintにも反応するんですね・・
class pr:
_value="aa"
_def __str__(self):
__return self.value+"bb"
p=pr()
print(p)
def __str__の中にエラー処理いれてたらprintでエラー引っかかっていて
気づくのに時間かかりました・・
class pr:
_value="aa"
_def __str__(self):
__return self.value+"bb"
p=pr()
print(p)
def __str__の中にエラー処理いれてたらprintでエラー引っかかっていて
気づくのに時間かかりました・・
314デフォルトの名無しさん
2021/10/28(木) 04:45:57.20ID:Nbft1WLw PythonやDjangoでオススメの本ありますか?
315デフォルトの名無しさん
2021/10/28(木) 06:56:16.71ID:dSweiYMb 特殊メソッドは使わんほうが無難
ていうかPythonはクラス自体使わない方がいい
昔ながらの構造化言語としてシンプルに使うのがベスト
ていうかPythonはクラス自体使わない方がいい
昔ながらの構造化言語としてシンプルに使うのがベスト
316デフォルトの名無しさん
2021/10/28(木) 07:27:59.28ID:p07hGs8T データを構造化するためにclassを使うだろ
317デフォルトの名無しさん
2021/10/28(木) 07:52:44.16ID:xUl7Twuj 今どきクラス使うなとか言うアホは放置で
318デフォルトの名無しさん
2021/10/28(木) 08:10:34.09ID:X05RtFia 関数間で状態を保持するときにのみクラスは有効
319デフォルトの名無しさん
2021/10/28(木) 10:18:44.69ID:MKFZM1zj >>312神
結果的にはファイルdnsで出来ますた
結果的にはファイルdnsで出来ますた
320デフォルトの名無しさん
2021/10/28(木) 12:42:04.06ID:RV1LSDaq PythonでマイクロソフトAccessをDBとして使う実例は多いけど、単にAccessをマクロ起動かける例が無いんです
誰か成功した人は居ますか?
誰か成功した人は居ますか?
321デフォルトの名無しさん
2021/10/28(木) 12:56:15.77ID:XVuwIiyB Access側のマクロのエントリポイント用の関数を造っておく
pywin32でその関数を呼ぶ
pywin32でその関数を呼ぶ
322デフォルトの名無しさん
2021/10/28(木) 13:09:38.96ID:XVuwIiyB323デフォルトの名無しさん
2021/10/28(木) 13:19:37.36ID:RV1LSDaq324デフォルトの名無しさん
2021/10/28(木) 14:14:58.06 from datetime import datetime
now=str(datetime.now())
#2021-10-28 05:12:03.857881
#この文字列を、datetime型に変換したい
_at=now.split(" ")
_at[0]=_at[0].split("-")
_at[1]=_at[1].split(":")
print( datetime(int(_at[0][0]),int(_at[0][1]),int(_at[0][2]),int(_at[1][0]),int(_at[1][1]),int(float(_at[1][2].split("+")[0])) ) )
としたのですがこれってスマートなやり方ではないですよね・・?
ようはstr(datetime)でフォーマットが決まってるのだから、もっと簡単にその文字列からdatetime型に変換できたらいいのに
と思うのですが・・
now=str(datetime.now())
#2021-10-28 05:12:03.857881
#この文字列を、datetime型に変換したい
_at=now.split(" ")
_at[0]=_at[0].split("-")
_at[1]=_at[1].split(":")
print( datetime(int(_at[0][0]),int(_at[0][1]),int(_at[0][2]),int(_at[1][0]),int(_at[1][1]),int(float(_at[1][2].split("+")[0])) ) )
としたのですがこれってスマートなやり方ではないですよね・・?
ようはstr(datetime)でフォーマットが決まってるのだから、もっと簡単にその文字列からdatetime型に変換できたらいいのに
と思うのですが・・
325デフォルトの名無しさん
2021/10/28(木) 14:17:08.33ID:Fr3tDLQH326デフォルトの名無しさん
2021/10/28(木) 14:17:55.41ID:JRDKMzLv datetime.fromisoformat
327デフォルトの名無しさん
2021/10/28(木) 16:09:10.81328デフォルトの名無しさん
2021/10/28(木) 17:41:33.23ID:Nbft1WLw329デフォルトの名無しさん
2021/10/28(木) 17:46:38.21ID:IFkzxSt8 テキストとかだと
list = [0]*10 は [0,0,0,0,0,0,0,0,0,0] になるから初期値作るのに使えるぞ
とか書いてあるのに
list1 = [[0,0,0]]*3
list2 = [[0,0,0],[0,0,0],[0,0,0]]
list3 = [[0,0,0]] + [[0,0,0]] + [[0,0,0]]
print(list1 == list2)
print(list2 == list3)
--------------------
True
True
この結果は両方Trueなんだけど
list1[0][0] = 1
list2[0][0] = 1
list3[0][0] = 1
print(list1)
print(list2)
print(list3)
--------------------------------
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
こうなるのって結構罠じゃね?
list = [0]*10 は [0,0,0,0,0,0,0,0,0,0] になるから初期値作るのに使えるぞ
とか書いてあるのに
list1 = [[0,0,0]]*3
list2 = [[0,0,0],[0,0,0],[0,0,0]]
list3 = [[0,0,0]] + [[0,0,0]] + [[0,0,0]]
print(list1 == list2)
print(list2 == list3)
--------------------
True
True
この結果は両方Trueなんだけど
list1[0][0] = 1
list2[0][0] = 1
list3[0][0] = 1
print(list1)
print(list2)
print(list3)
--------------------------------
[[1, 0, 0], [1, 0, 0], [1, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
[[1, 0, 0], [0, 0, 0], [0, 0, 0]]
こうなるのって結構罠じゃね?
330デフォルトの名無しさん
2021/10/28(木) 17:54:29.27ID:Mv6YjZts listのコピーはcopyでやれ定期やね
331デフォルトの名無しさん
2021/10/28(木) 17:54:51.49ID:Nbft1WLw332デフォルトの名無しさん
2021/10/28(木) 20:34:34.97ID:o6HAoERy https://gist.github.com/srndpty/43c76d74188884f25716f25a44ef0818
だれか、これpythonに翻訳して。
だれか、これpythonに翻訳して。
333デフォルトの名無しさん
2021/10/28(木) 21:08:20.17ID:WnlLUDNQ os.walkで一発だろ。
334デフォルトの名無しさん
2021/10/28(木) 21:20:53.36ID:3jEWrZM3 django2.2、vscode、venvでプロジェクト作りました
models.py
の
from django import models
が
Import "django.utils" could not be resolved from source Pylance
とエラーになります
解決策ありますか?
因みにdjango3.2で作ったプロジェクトではエラーでませんがpythonインタープリターがPython3.9.7 64-bit ('mysite': venv) ./mysite/bin/pythonとなってます
2.2でのプロジェクトではPython 3.9.7 64-bit /opt/homebrew/bin/python3となってます
models.py
の
from django import models
が
Import "django.utils" could not be resolved from source Pylance
とエラーになります
解決策ありますか?
因みにdjango3.2で作ったプロジェクトではエラーでませんがpythonインタープリターがPython3.9.7 64-bit ('mysite': venv) ./mysite/bin/pythonとなってます
2.2でのプロジェクトではPython 3.9.7 64-bit /opt/homebrew/bin/python3となってます
335デフォルトの名無しさん
2021/10/29(金) 00:14:03.10ID:qT0pkZDa >>329
Ruby では「たのしいRuby」みたいな入門書に書いてあるけど、
配列を初期化する際に、ブロックを渡さないと、
浅いコピー、つまり参照だけのコピーとなり、
実体が1つしかないので、同じオブジェクトを指してしまう
初期化時にブロックを渡すと、3つの実体が作られる
ary = Array.new( 3, [ 0, 0, 0 ] )
ary[ 0 ][ 1 ] = 1
p ary #=> [ [0, 1, 0], [0, 1, 0], [0, 1, 0] ]
ary2 = Array.new( 3 ) { [ 0, 0, 0 ] }
ary2[ 0 ][ 1 ] = 1
p ary2 #=> [ [0, 1, 0], [0, 0, 0], [0, 0, 0] ]
Ruby では「たのしいRuby」みたいな入門書に書いてあるけど、
配列を初期化する際に、ブロックを渡さないと、
浅いコピー、つまり参照だけのコピーとなり、
実体が1つしかないので、同じオブジェクトを指してしまう
初期化時にブロックを渡すと、3つの実体が作られる
ary = Array.new( 3, [ 0, 0, 0 ] )
ary[ 0 ][ 1 ] = 1
p ary #=> [ [0, 1, 0], [0, 1, 0], [0, 1, 0] ]
ary2 = Array.new( 3 ) { [ 0, 0, 0 ] }
ary2[ 0 ][ 1 ] = 1
p ary2 #=> [ [0, 1, 0], [0, 0, 0], [0, 0, 0] ]
336デフォルトの名無しさん
2021/10/29(金) 00:29:20.81ID:qT0pkZDa Ruby on Rails では、Node.js も使うから、
日本人が作った、バージョンマネージャーのanyenv で、
19 言語を、統一した使い方で管理している
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
which ruby
/home/<ユーザー名>/.anyenv/envs/rbenv/shims/ruby
which node
/home/<ユーザー名>/.anyenv/envs/nodenv/shims/node
venv はPython の標準だけど、多言語を使う際、
各言語のバージョンマネージャーの使い方が異なるから、覚えられない
基本、主要フレームワーク・ゲームエンジンなどは、掌田津耶乃が本を出している。
ただし、猿向きで簡単だけど、知識は少なめだから、1冊目には良い
例えば、Railsでは黒田努の本の方が、本格的
日本人が作った、バージョンマネージャーのanyenv で、
19 言語を、統一した使い方で管理している
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
which ruby
/home/<ユーザー名>/.anyenv/envs/rbenv/shims/ruby
which node
/home/<ユーザー名>/.anyenv/envs/nodenv/shims/node
venv はPython の標準だけど、多言語を使う際、
各言語のバージョンマネージャーの使い方が異なるから、覚えられない
基本、主要フレームワーク・ゲームエンジンなどは、掌田津耶乃が本を出している。
ただし、猿向きで簡単だけど、知識は少なめだから、1冊目には良い
例えば、Railsでは黒田努の本の方が、本格的
337デフォルトの名無しさん
2021/10/29(金) 02:18:31.85ID:FnWw468S338デフォルトの名無しさん
2021/10/29(金) 04:57:41.89ID:oTw6PnKg vscodeのpylanceのauto importが機能してないんだけど皆は使えてるの?
339デフォルトの名無しさん
2021/10/29(金) 10:21:09.67ID:fhDC1KF/ seleniumを起動してchromeドライバから下記を行うとyahooはすぐにページ接続して遷移できるのに楽天はページ接続に時間がかかります。
seleniumではなく、普通にchromeを起動して手動でurlを入力する場合は楽天もすぐにページに接続できます。
原因や対応わかるかた教えてください。
janlist = ["4976365125510","4976365200934","4976365158013"]
for jan in janlist:
url=f"https://search.rakuten.co.jp/search/mall/{jan}/?filter=fs-fsl&s=2"
driver.get(url)
url=f"https://shopping.yahoo.co.jp/search?p={jan}&X=2"
driver.get(url)
seleniumではなく、普通にchromeを起動して手動でurlを入力する場合は楽天もすぐにページに接続できます。
原因や対応わかるかた教えてください。
janlist = ["4976365125510","4976365200934","4976365158013"]
for jan in janlist:
url=f"https://search.rakuten.co.jp/search/mall/{jan}/?filter=fs-fsl&s=2"
driver.get(url)
url=f"https://shopping.yahoo.co.jp/search?p={jan}&X=2"
driver.get(url)
340デフォルトの名無しさん
2021/10/29(金) 12:21:35.03ID:koELjqeu Selenium内のコンソールログを確認
341デフォルトの名無しさん
2021/10/29(金) 12:24:28.38ID:eVsBtFEb コンソールログってどうやって確認するの?
342デフォルトの名無しさん
2021/10/29(金) 12:32:43.97ID:9CukeuuL >333
os.walk 勉強中。
すっごい便利機能だけど高機能すぎて、forループでサブフォルダーを回していくつもりだったから困惑。
どうすればいいんだ!
os.walk 勉強中。
すっごい便利機能だけど高機能すぎて、forループでサブフォルダーを回していくつもりだったから困惑。
どうすればいいんだ!
343デフォルトの名無しさん
2021/10/29(金) 17:17:25.29ID:d8BIZQAf classの__init__()するclassmethodが使いたいんだけどできますか?
c = Class()
c.method()
を一行で書きたいだけです
Class.method()
c = Class()
c.method()
を一行で書きたいだけです
Class.method()
344デフォルトの名無しさん
2021/10/29(金) 17:24:18.67ID:R4ZBjJpK345デフォルトの名無しさん
2021/10/29(金) 18:16:59.51ID:zHkN81gu pythonの資格って難しいですか?
346デフォルトの名無しさん
2021/10/29(金) 20:26:40.87ID:/8Rm9/az347デフォルトの名無しさん
2021/10/29(金) 20:36:40.03ID:1Pi4hxs1 >>343
import this
import this
348デフォルトの名無しさん
2021/10/29(金) 21:26:19.76ID:AIexy1X9 このページの404エラーの箇所をベースに学習しています
https://docs.djangoproject.com/ja/3.2/intro/tutorial03/
DjangoにHttp404というクラスがあります
Exceptionクラスを継承しています(これはBaseExceptionを継承しています)
コントローラーにてtry文のexceptの中に
raise Http404("これは404です")
を書くと推移先の画面にはPage Not found(404)と表示されます
しかし自分でExceptionを継承した、passが書かれたクラスAを作って上記と同様にこのクラスをraiseすると画面にはA at /polls/
これは404です
と表示されます(Page Not found(404)とは表示されない)
一体どの段階でHttp404クラスに特別な実装が行われたんですか?
https://docs.djangoproject.com/ja/3.2/intro/tutorial03/
DjangoにHttp404というクラスがあります
Exceptionクラスを継承しています(これはBaseExceptionを継承しています)
コントローラーにてtry文のexceptの中に
raise Http404("これは404です")
を書くと推移先の画面にはPage Not found(404)と表示されます
しかし自分でExceptionを継承した、passが書かれたクラスAを作って上記と同様にこのクラスをraiseすると画面にはA at /polls/
これは404です
と表示されます(Page Not found(404)とは表示されない)
一体どの段階でHttp404クラスに特別な実装が行われたんですか?
349デフォルトの名無しさん
2021/10/29(金) 23:15:06.20ID:krcALBmR350デフォルトの名無しさん
2021/10/29(金) 23:43:42.33ID:ZYpuK0cb >>349
おお!
どうもです
後で見てみます
そのexeption.pyでviewなどでraiseされた例外を捕まえてフロントに適切なHttpResponseオブジェクトを送ってるんですかね?あとでそのモジュール見てみます
おお!
どうもです
後で見てみます
そのexeption.pyでviewなどでraiseされた例外を捕まえてフロントに適切なHttpResponseオブジェクトを送ってるんですかね?あとでそのモジュール見てみます
351デフォルトの名無しさん
2021/10/30(土) 01:26:36.60ID:fDTZDMBU >>342
馬鹿には無理
馬鹿には無理
352デフォルトの名無しさん
2021/10/30(土) 10:12:33.06ID:V5MhI+QS >>343
即席だけど何度も使うつもりなら、シングルトンにしておいた方がいいだろう。
class Hoge:
__instance = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
Hoge().method()
即席だけど何度も使うつもりなら、シングルトンにしておいた方がいいだろう。
class Hoge:
__instance = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
Hoge().method()
353デフォルトの名無しさん
2021/10/30(土) 11:36:54.55ID:a9WSKAoR class Klass:
@classmethod
def method(c):
return Klass()
これじゃいかんの
@classmethod
def method(c):
return Klass()
これじゃいかんの
354デフォルトの名無しさん
2021/10/30(土) 12:49:58.82ID:xUY0JK8T 他クラスのインスタンスを生成するならともかく
自クラスなら__init__で対応したほうがいい
自クラスなら__init__で対応したほうがいい
355デフォルトの名無しさん
2021/10/30(土) 17:28:58.03ID:6LdaSTDR >351
ありがとう。walkの使い方わかってきたよ。
フォルダの深さが1段ならできた。2段だと想定外の動きになるのでまだ検討が必要。
多層になるとforで回して掘っていった方が良いのかな?
ありがとう。walkの使い方わかってきたよ。
フォルダの深さが1段ならできた。2段だと想定外の動きになるのでまだ検討が必要。
多層になるとforで回して掘っていった方が良いのかな?
356デフォルトの名無しさん
2021/10/31(日) 02:00:51.68ID:hGI7wBpw Ruby には、walk 無いから、glob でやってる
VB のコードでは、しょっちゅう再帰で、子の階層へ降りていく。
これが典型的な馬鹿の見本w
VB のコードでは、しょっちゅう再帰で、子の階層へ降りていく。
これが典型的な馬鹿の見本w
357デフォルトの名無しさん
2021/10/31(日) 03:36:26.99ID:Fmzj87Tl type(a)で
<class 'sqlalchemy.sql.elements.BooleanClauseList'>
と出るオブジェクトaを
if a==None:
みたいにifに入れたら
Boolean value of this clause is not defined
ってエラーがでました
条件分岐に入れることでそもそもエラーがでる
という今まで経験したことないエラーが出ました
こういう場合、どうやって条件分岐すればいいのでしょうか
<class 'sqlalchemy.sql.elements.BooleanClauseList'>
と出るオブジェクトaを
if a==None:
みたいにifに入れたら
Boolean value of this clause is not defined
ってエラーがでました
条件分岐に入れることでそもそもエラーがでる
という今まで経験したことないエラーが出ました
こういう場合、どうやって条件分岐すればいいのでしょうか
358デフォルトの名無しさん
2021/10/31(日) 04:35:13.37ID:oq4cmHqY a is None
359デフォルトの名無しさん
2021/10/31(日) 06:55:40.09ID:wNGz0WbD 関数Aからしか呼ばれないとわかっている関数Bがある場合、
BをAの内側に定義してしまうスタイルってありですかね
こうすれば見た目にも局所的であるとわかるし、
Aの外からBを呼ぶことはできないから安全と思うのですが
※関数内関数はクロージャっていう機能でも使うらしいんですが、
そっちはよくわからんので置いておくとして…
BをAの内側に定義してしまうスタイルってありですかね
こうすれば見た目にも局所的であるとわかるし、
Aの外からBを呼ぶことはできないから安全と思うのですが
※関数内関数はクロージャっていう機能でも使うらしいんですが、
そっちはよくわからんので置いておくとして…
360デフォルトの名無しさん
2021/10/31(日) 12:40:55.03ID:Fmzj87Tl >>358
ありがとうございますできました!
なぜそうなるのかはわかりませんが一応検証です
from sqlalchemy import and_,or_,text
id_q=or_(*[text("id=1"),text("id=2")])
name_q=or_(*[text('name="tarou"'),text('name="tanaka"')])
q=and_(*[id_q,name_q])
def ck1(q):
_try:
__if q is None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)
def ck2(q):
_try:
__if q==None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)
print("### is None")
ck1(q)
ck1(None)
print("")
print("### ==None")
ck2(q)
ck2(None)
### is None
(id=1 OR id=2) AND (name="tarou" OR name="tanaka")
q is None
### ==None
Boolean value of this clause is not defined
q is None
ありがとうございますできました!
なぜそうなるのかはわかりませんが一応検証です
from sqlalchemy import and_,or_,text
id_q=or_(*[text("id=1"),text("id=2")])
name_q=or_(*[text('name="tarou"'),text('name="tanaka"')])
q=and_(*[id_q,name_q])
def ck1(q):
_try:
__if q is None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)
def ck2(q):
_try:
__if q==None:
___print("q is None")
__else:
___print(q)
_except Exception as e:
__print(e)
print("### is None")
ck1(q)
ck1(None)
print("")
print("### ==None")
ck2(q)
ck2(None)
### is None
(id=1 OR id=2) AND (name="tarou" OR name="tanaka")
q is None
### ==None
Boolean value of this clause is not defined
q is None
361デフォルトの名無しさん
2021/10/31(日) 13:07:50.21ID:F/sAbtyW >>356
だよな。VBやってるやつはrubyの次に馬鹿だわ
だよな。VBやってるやつはrubyの次に馬鹿だわ
362デフォルトの名無しさん
2021/10/31(日) 13:21:43.76ID:e6cnICXj363デフォルトの名無しさん
2021/10/31(日) 14:21:08.43ID:a/o9PbUa PILのimageオブジェクトを複数扱うとき
その画像固有の色々なデータをどこかに保管しといて使い回すんだけど
sizeとかのプロパティと同じじゃんと思ってimageオブジェクトごとにインスタンス変数としてぶちこんでたんです
im1.x_rate = yyy
みたいな。
重いデータを押し付けるわけでないので現状別に困ってはいないけど、なにか問題ありますか? アクセス速度とか、データ保持周りの都合とかで
普通は辞書とかで管理しますよね
あとこういうインスタンスに、本来無いメンバーをねじ込むことができるのって、他の言語にはあまりない特徴なのですか?
その画像固有の色々なデータをどこかに保管しといて使い回すんだけど
sizeとかのプロパティと同じじゃんと思ってimageオブジェクトごとにインスタンス変数としてぶちこんでたんです
im1.x_rate = yyy
みたいな。
重いデータを押し付けるわけでないので現状別に困ってはいないけど、なにか問題ありますか? アクセス速度とか、データ保持周りの都合とかで
普通は辞書とかで管理しますよね
あとこういうインスタンスに、本来無いメンバーをねじ込むことができるのって、他の言語にはあまりない特徴なのですか?
364デフォルトの名無しさん
2021/10/31(日) 14:52:05.62ID:e6cnICXj365デフォルトの名無しさん
2021/10/31(日) 15:21:43.12ID:Q9Xu5pvX >>364
勉強になります
勉強になります
366デフォルトの名無しさん
2021/10/31(日) 17:14:53.49ID:Yc4PEJna 動的言語のいいところでもあり悪いところでもある。
当然こういうのを徹底的に嫌う人はいる。
当然こういうのを徹底的に嫌う人はいる。
367デフォルトの名無しさん
2021/10/31(日) 17:19:32.57ID:Q9Xu5pvX まあ入れたかどうか分かりづらい
自分で全部把握してないとしんどいですね
あとpylanceがすげえ怒ってる
自分で全部把握してないとしんどいですね
あとpylanceがすげえ怒ってる
368デフォルトの名無しさん
2021/10/31(日) 17:24:06.26ID:WrAvX4Kw 彼女によく言われます
> 入れたかどうか分かりづらい
> 入れたかどうか分かりづらい
369デフォルトの名無しさん
2021/10/31(日) 17:34:27.39ID:sRnAlDBM つづり間違いを許容する言語なら避けられない
370デフォルトの名無しさん
2021/10/31(日) 18:11:50.92ID:4KbMhR6u バグの温床
371デフォルトの名無しさん
2021/11/01(月) 11:52:01.98ID:f7xOE2SJ def _is(f):
_if f:
__return True
_else:
__raise Exception("error")
try:
__is(True)
_print("success")
except Exception as e:
_print(e)
何もしない、もしくはエラーを吐く
という_is()の行が、一行で完結していると
個人的に可視性が悪いように感じるのですが工夫や慣習とかあるのでしょうか?
例えば_isをTrueもしくはFalseを返すようにして
if not _is(True):
_raise Exception("error")
みたいにすれば「ここで条件分岐していますよ」というのがパット見で
どう分岐しているのかがわかります
しかし関数実行で一行で完結してるだけだと何してるかわからないし
関数名に「エラーかどうかチェックし、エラーがあるならエラーを吐く」的な名前を付けるにも
どういうのが適切なのかわかりません
_if f:
__return True
_else:
__raise Exception("error")
try:
__is(True)
_print("success")
except Exception as e:
_print(e)
何もしない、もしくはエラーを吐く
という_is()の行が、一行で完結していると
個人的に可視性が悪いように感じるのですが工夫や慣習とかあるのでしょうか?
例えば_isをTrueもしくはFalseを返すようにして
if not _is(True):
_raise Exception("error")
みたいにすれば「ここで条件分岐していますよ」というのがパット見で
どう分岐しているのかがわかります
しかし関数実行で一行で完結してるだけだと何してるかわからないし
関数名に「エラーかどうかチェックし、エラーがあるならエラーを吐く」的な名前を付けるにも
どういうのが適切なのかわかりません
372デフォルトの名無しさん
2021/11/01(月) 12:51:54.43ID:MaHd86e9 isはboolを返すようにする
if is_foo()
else
try:
check_foo()
except
あるいは
try_foo()
if try_foo()
else
が自然
if is_foo()
else
try:
check_foo()
except
あるいは
try_foo()
if try_foo()
else
が自然
373デフォルトの名無しさん
2021/11/01(月) 12:53:04.27ID:1SV0gAru374デフォルトの名無しさん
2021/11/01(月) 14:26:50.37ID:z/x9VzKb 文法以前に本人の頭が混乱してるな
病院池
病院池
375デフォルトの名無しさん
2021/11/01(月) 16:23:27.64ID:SSiHi0ki まずはPythonスレでインデントをアンダーバーで代替するのやめて全角空白「 」にしたらどうかな?
376デフォルトの名無しさん
2021/11/01(月) 16:25:48.35ID:4nNYTPSv >>375
それ
それ
377デフォルトの名無しさん
2021/11/01(月) 16:26:48.66ID:4nNYTPSv と思ったら全角スペースかい
なんでやねん
なんでやねん
378デフォルトの名無しさん
2021/11/01(月) 16:50:34.49ID:SSiHi0ki379デフォルトの名無しさん
2021/11/01(月) 17:10:45.07ID:+PGSxGGW class Cls(object):
def __new__(cls):
self = object.__new__(cls)
print('__new__ :', str(id(self)))
return self
def __init__(self):
print('__init__:', str(id(self)))
self.attr = 'Hello, world!'
obj = Cls()
def __new__(cls):
self = object.__new__(cls)
print('__new__ :', str(id(self)))
return self
def __init__(self):
print('__init__:', str(id(self)))
self.attr = 'Hello, world!'
obj = Cls()
380デフォルトの名無しさん
2021/11/01(月) 17:11:37.02ID:+PGSxGGW >>378
chmateだと大丈夫っぽい
chmateだと大丈夫っぽい
381デフォルトの名無しさん
2021/11/01(月) 17:17:16.17 テスト
連続全角スペース 2個
「 」
連続半角スペース 2個
「 」
連続アンダーバー 2個
「__」
連続全角スペース 2個
「 」
連続半角スペース 2個
「 」
連続アンダーバー 2個
「__」
382デフォルトの名無しさん
2021/11/01(月) 17:19:02.31 続いてテスト
先頭空白の、
連続全角スペース 2個
」
連続半角スペース 2個
」
連続アンダーバー 2個
__
先頭空白の、
連続全角スペース 2個
」
連続半角スペース 2個
」
連続アンダーバー 2個
__
383デフォルトの名無しさん
2021/11/01(月) 17:22:16.44ID:er84fHxI 2ch初心者かてw
384デフォルトの名無しさん
2021/11/01(月) 17:33:20.31ID:usQd0Ibl まあ
全角スペース積んで
それらしいインデント表現できるなら
とはいえ全角スペースって…
あと>>379はパソコンで表示できねーのでやめとけ
全角スペース積んで
それらしいインデント表現できるなら
とはいえ全角スペースって…
あと>>379はパソコンで表示できねーのでやめとけ
385デフォルトの名無しさん
2021/11/01(月) 17:46:32.90ID:bBJfHO04 コーディングでアンダーバーってあんま聞かない
386デフォルトの名無しさん
2021/11/01(月) 17:48:52.19 ちなみに過去スレみても全角スペースインデント派が極端に少ないように思えるけどなぜ
387デフォルトの名無しさん
2021/11/01(月) 17:50:38.30ID:SSiHi0ki Pythonはインデントそのものに文法的な意味があるから、他言語スレのような雑なコピペ、やりにくい
388デフォルトの名無しさん
2021/11/01(月) 17:51:32.34 専ブラによってはAA補正機能ONだと全角スペースはズレるから、とかかな
389デフォルトの名無しさん
2021/11/01(月) 17:51:53.67ID:rjS1S2Zt >>1も読めないのか
390デフォルトの名無しさん
2021/11/01(月) 17:54:59.57ID:QIRv2mIK 意味があるからこそアンダーバーで表現してるんでしょ
5ch内では_が確実
コピペするなら^_*くらい置換しろよ
5ch内では_が確実
コピペするなら^_*くらい置換しろよ
391デフォルトの名無しさん
2021/11/01(月) 17:57:14.59ID:SSiHi0ki >>390
__init__ とか __main__ みたいにアンダーバーで始まる予約キーワードがあるから厳しいかも
__init__ とか __main__ みたいにアンダーバーで始まる予約キーワードがあるから厳しいかも
392デフォルトの名無しさん
2021/11/01(月) 18:06:02.27 >>1
if エラーを解決したい場合:
print('表示されたエラーの全文')
print('実行環境')
else:
if インデントが崩れてチヌ:
コードうp用サイトに貼ってこいください()
else:
ご自由に()
#エラー解決が目的でなく、ただの質問なら自由でおk
if エラーを解決したい場合:
print('表示されたエラーの全文')
print('実行環境')
else:
if インデントが崩れてチヌ:
コードうp用サイトに貼ってこいください()
else:
ご自由に()
#エラー解決が目的でなく、ただの質問なら自由でおk
393デフォルトの名無しさん
2021/11/01(月) 18:21:31.02ID:lFi5lRVR アンダバダバ
394デフォルトの名無しさん
2021/11/01(月) 18:32:01.31ID:SSiHi0ki お前の力はそんなものか
395デフォルトの名無しさん
2021/11/01(月) 18:37:52.01ID:4nNYTPSv さっさと掲示板の設定変えろよタコ管理人
396デフォルトの名無しさん
2021/11/01(月) 18:38:19.50ID:4nNYTPSv アンダーバーの代わりに全部🐙にするか
397デフォルトの名無しさん
2021/11/01(月) 20:11:25.62ID:nDDBE8sn 馬鹿に優しすぎるスレも考え物
398デフォルトの名無しさん
2021/11/01(月) 20:47:47.51ID:b8DEaY2C くだらない質問スレの略なんだから
くだらない人間も許容範囲だろう
くだらない人間も許容範囲だろう
399デフォルトの名無しさん
2021/11/01(月) 20:56:53.14ID:+3mYHrQj 全角スペースでいい
行頭からの全角スペース連続なら簡単に置換できる
行頭からの全角スペース連続なら簡単に置換できる
400デフォルトの名無しさん
2021/11/01(月) 21:03:19.83ID:+3mYHrQj   でテスト
space(0)
space(1)
space(2)
space(3)
space(4)
space(0)
space(1)
space(2)
space(3)
space(4)
401デフォルトの名無しさん
2021/11/01(月) 21:05:46.67ID:+3mYHrQj これ使えるじゃん
402デフォルトの名無しさん
2021/11/01(月) 21:32:35.81ID:sInySGRJ 少なくともwebブラウザでは使えてないですよ
403デフォルトの名無しさん
2021/11/01(月) 21:39:19.38ID:SSiHi0ki 今一歩じゃったのう
404デフォルトの名無しさん
2021/11/01(月) 21:43:46.72ID:+3mYHrQj じゃ、スペース併用で
space(0)
space(1)
space(2)
space(3)
space(4)
もう一つのパターン
space(0)
space(1)
space(2)
space(3)
space(4)
space(0)
space(1)
space(2)
space(3)
space(4)
もう一つのパターン
space(0)
space(1)
space(2)
space(3)
space(4)
405デフォルトの名無しさん
2021/11/01(月) 21:44:11.57ID:+3mYHrQj はは、全滅w
406デフォルトの名無しさん
2021/11/01(月) 21:46:15.35ID:SSiHi0ki 情けなや
407デフォルトの名無しさん
2021/11/01(月) 22:04:51.14ID:FRFHTlVD408デフォルトの名無しさん
2021/11/01(月) 22:07:56.25ID:FRFHTlVD すまん間違って書き込んでしもた
& だとどうか
space(0)
space(1)
space(2)
space(3)
space(4)
& だとどうか
space(0)
space(1)
space(2)
space(3)
space(4)
409デフォルトの名無しさん
2021/11/01(月) 22:10:07.03ID:vUqioc9F space(0)
space(1)
space(2)
space(3)
space(4)
space(1)
space(2)
space(3)
space(4)
410デフォルトの名無しさん
2021/11/01(月) 22:11:42.44ID:SSiHi0ki 諸行無常よのう
411デフォルトの名無しさん
2021/11/01(月) 22:23:30.61ID:b8DEaY2C ババア100円くれてやるから大人しくゲームやってろ
412デフォルトの名無しさん
2021/11/01(月) 22:38:15.86ID:SSiHi0ki ありがたや
413デフォルトの名無しさん
2021/11/01(月) 22:56:34.54ID:sInySGRJ 結局のところ専ブラによって半角スペースの扱いと同等とみなす文字違うから
トリッキーな事するくらいなら>>1のサイト使った方がいいかと
トリッキーな事するくらいなら>>1のサイト使った方がいいかと
414デフォルトの名無しさん
2021/11/02(火) 00:04:30.18ID:cL54tPf/ 別サイトに散らすと、そちらのほうが消えれば集合知としての掲示板の意味がなくなる
415デフォルトの名無しさん
2021/11/02(火) 00:09:02.19ID:lNPw5frO pythonどころか5ch初心者ですが質問いいですか?
anacondaでのライブラリのロードが出来ない事での質問です
anacondaでのライブラリのロードが出来ない事での質問です
416デフォルトの名無しさん
2021/11/02(火) 09:39:34.41ID:px0qcy1y anaconda より pip
417デフォルトの名無しさん
2021/11/02(火) 14:07:05.67ID:9BPbJ83e ターミナルからライブラリ自体はダウンロード出来て、それがライブラリとして存在しているのは確認出来たのですが、
本文
#%matplotlib inline
import numpy as np
from scipy import sparse
#import matplotlib.pyplot as plt
import pandas as pd
#import matplotlib
import mglearn
from IPython.display import display
import sys
import scipy as sp
エラー内容
ImportError: dlopen(/opt/anaconda3/lib/python3.8/site-packages/PIL/_imaging.cpython-38-darwin.so, 2): Library not loaded: @rpath/libjpeg.9.dylib
Referenced from: /opt/anaconda3/lib/python3.8/site-packages/PIL/_imaging.cpython-38-darwin.so
Reason: Incompatible library version: _imaging.cpython-38-darwin.so requires version 14.0.0 or later, but libjpeg.9.dylib provides version 12.0.0
やってみたこと
ライブラリのバージョンダウン
本文
#%matplotlib inline
import numpy as np
from scipy import sparse
#import matplotlib.pyplot as plt
import pandas as pd
#import matplotlib
import mglearn
from IPython.display import display
import sys
import scipy as sp
エラー内容
ImportError: dlopen(/opt/anaconda3/lib/python3.8/site-packages/PIL/_imaging.cpython-38-darwin.so, 2): Library not loaded: @rpath/libjpeg.9.dylib
Referenced from: /opt/anaconda3/lib/python3.8/site-packages/PIL/_imaging.cpython-38-darwin.so
Reason: Incompatible library version: _imaging.cpython-38-darwin.so requires version 14.0.0 or later, but libjpeg.9.dylib provides version 12.0.0
やってみたこと
ライブラリのバージョンダウン
418デフォルトの名無しさん
2021/11/02(火) 14:09:16.74ID:9BPbJ83e 環境
python3.8
ide : anaconda juster notebook
os : macos catalina 10.15.7
python3.8
ide : anaconda juster notebook
os : macos catalina 10.15.7
419デフォルトの名無しさん
2021/11/02(火) 14:49:20.75ID:bBu0w1jV 別のlijpeg.dylibを読んでるな
これだからanacondaのクソッタレは
これだからanacondaのクソッタレは
420デフォルトの名無しさん
2021/11/02(火) 15:31:56.15ID:px0qcy1y anaconda が糞な訳じゃなくて >>415 があほなんだと思う
421デフォルトの名無しさん
2021/11/02(火) 16:28:48.44ID:43SS6bxs 既存の環境にぐちゃぐちゃ絡みつくからなあ
venv+pipよ
venv+pipよ
422デフォルトの名無しさん
2021/11/02(火) 17:41:01.75ID:9BPbJ83e libjpeg.dylib調べてきます。
ほんと初心者でわからんことばっかっす。
ほんと初心者でわからんことばっかっす。
423デフォルトの名無しさん
2021/11/02(火) 19:29:02.24ID:0Xy7v0Wb pipenvって少数派なのかな
424デフォルトの名無しさん
2021/11/02(火) 19:38:43.07ID:EooZJJGk pythonのパッケージマネージャーはもうpoetry一択って結論出てる
PEP582が実現すればいずれPDMも選択肢に入るかもしれない
いずれにせよ現時点ではpoetry以外を使う理由はない
PEP582が実現すればいずれPDMも選択肢に入るかもしれない
いずれにせよ現時点ではpoetry以外を使う理由はない
425デフォルトの名無しさん
2021/11/02(火) 20:21:58.23ID:wdD0/4p6 俺はvenv一択だわ
426デフォルトの名無しさん
2021/11/02(火) 20:59:02.62ID:28sKmwTr 標準使うのが一番、便利な流行り機能はどうせ標準に取り込まれるんだから
あちゃこちゃ手出すよりvenv一択!
あちゃこちゃ手出すよりvenv一択!
427デフォルトの名無しさん
2021/11/02(火) 21:20:27.32ID:cQGNBQWf cpython + pipで困ったことねぇぞ
428デフォルトの名無しさん
2021/11/02(火) 21:27:18.90ID:U4IKz2Wy そういやエレキバンとかいう湿布薬あったよな
429デフォルトの名無しさん
2021/11/02(火) 21:47:58.98ID:fH8EJWuw >>428
p!p
p!p
430デフォルトの名無しさん
2021/11/02(火) 22:59:40.27ID:AuiSCc2n 湿布じゃねぇ、磁石だよ
431デフォルトの名無しさん
2021/11/02(火) 23:04:27.39ID:6VLiUVJr 漏れは、WSL2, Ubuntu 18.04 で、
日本人が作った、バージョンマネージャーのanyenv を使っている
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
これで、ruby, node.js などの多言語のバージョンを、統一的に扱える。
各バージョンマネージャーの使い方を覚えなくても良いので楽
which ruby
~/.anyenv/envs/rbenv/shims/ruby
which node
~/.anyenv/envs/nodenv/shims/node
日本人が作った、バージョンマネージャーのanyenv を使っている
Renv, crenv, denv, erlenv, exenv
goenv, hsenv, jenv, jlenv, luaenv
nodenv, phpenv, plenv, pyenv, rbenv
sbtenv, scalaenv, swiftenv, tfenv
これで、ruby, node.js などの多言語のバージョンを、統一的に扱える。
各バージョンマネージャーの使い方を覚えなくても良いので楽
which ruby
~/.anyenv/envs/rbenv/shims/ruby
which node
~/.anyenv/envs/nodenv/shims/node
432デフォルトの名無しさん
2021/11/02(火) 23:20:25.55ID:v7s6xs3o この業界で日本人が作った、ってデバフでしかないが
433431
2021/11/03(水) 00:00:30.86ID:XfZZ+0lv でも、有名な多言語のバージョンマネージャーは、asdf/anyenv しかないでしょ?
434431
2021/11/03(水) 00:09:48.64ID:XfZZ+0lv 特に、node.js では、ndenv がnodenv へ乗り換えるように言ってて、
他には、nvm, n を使う人もいる
バージョンマネージャーが乱立していて、訳が分からない
他には、nvm, n を使う人もいる
バージョンマネージャーが乱立していて、訳が分からない
435デフォルトの名無しさん
2021/11/03(水) 00:25:34.93ID:U7i9huA/ 全然訳が分からなくない
nvm以外は泡沫
日本のみnodebrewのシェアが少し高いくらい
env系使ってるのは他言語から渡ってきて「ヤダヤダ、違うの覚えるのヤダー!」ってダダ捏ねてる無能のみ
nvm以外は泡沫
日本のみnodebrewのシェアが少し高いくらい
env系使ってるのは他言語から渡ってきて「ヤダヤダ、違うの覚えるのヤダー!」ってダダ捏ねてる無能のみ
436デフォルトの名無しさん
2021/11/03(水) 01:28:38.00ID:f3FJf/OR そこまで多言語に対応する必要ないんだよね
自分で使う言語選べる立場だからさ
糖質でも採用されるようなクソザコの下請けと違うんだよ
自分で使う言語選べる立場だからさ
糖質でも採用されるようなクソザコの下請けと違うんだよ
437デフォルトの名無しさん
2021/11/03(水) 05:23:29.54ID:ixyj7YWU 何とかenvの乱立がPython普及の足かせになってる
ググるとオワコンenvの情報が膨大に引っかかってくるので
初心者が最適解を見つけるのはまず不可能
ブログやQiitaに古い記事を置きっぱなしのやつらは
汚染源になっていることを自覚して欲しい
ググるとオワコンenvの情報が膨大に引っかかってくるので
初心者が最適解を見つけるのはまず不可能
ブログやQiitaに古い記事を置きっぱなしのやつらは
汚染源になっていることを自覚して欲しい
438デフォルトの名無しさん
2021/11/03(水) 07:43:38.65ID:BG+5d98e >>437
今現在の最適解は教えてくれないの?w
今現在の最適解は教えてくれないの?w
439デフォルトの名無しさん
2021/11/03(水) 08:11:09.61ID:0vsVupAD venv+pip で良いのでは?
440デフォルトの名無しさん
2021/11/03(水) 08:14:46.32ID:Ubw2Gqz6 docker + poetry
仮想環境なんか使う必要ない
コンテナイメージ変える方がシンプルで取り回しがいい
仮想環境なんか使う必要ない
コンテナイメージ変える方がシンプルで取り回しがいい
441デフォルトの名無しさん
2021/11/03(水) 08:42:58.91ID:RAebC74D seleniumの設定について教えてください。
navigator.webdriverをFalseにしたいです。
普段は下記で起動しているのですが、何を追加したらnavigator.webdriverをFalseにできますか?
from selenium.webdriver import Chrome, ChromeOptions, Remote
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
import lxml.html
import random
import time
import re
import numpy as np
options = ChromeOptions()
#windowサイズを決める
options.add_argument('--window-size=1920,1600')
#プロファイルを追加する
options.add_argument('--user-data-dir=/home/goya/crawler/profile')
#ヘッドレスモードを有効にさせる場合は、次の行のコメントアウトを解除する
#options.headless = True
#ChromeのWebDriverオブジェクトを作成する。
driver = Chrome(options=options)
navigator.webdriverをFalseにしたいです。
普段は下記で起動しているのですが、何を追加したらnavigator.webdriverをFalseにできますか?
from selenium.webdriver import Chrome, ChromeOptions, Remote
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.action_chains import ActionChains
import lxml.html
import random
import time
import re
import numpy as np
options = ChromeOptions()
#windowサイズを決める
options.add_argument('--window-size=1920,1600')
#プロファイルを追加する
options.add_argument('--user-data-dir=/home/goya/crawler/profile')
#ヘッドレスモードを有効にさせる場合は、次の行のコメントアウトを解除する
#options.headless = True
#ChromeのWebDriverオブジェクトを作成する。
driver = Chrome(options=options)
442デフォルトの名無しさん
2021/11/03(水) 10:11:10.96ID:ixyj7YWU443431
2021/11/03(水) 11:56:46.09ID:XfZZ+0lv anyenv update
で、anyenvで入れた、**env系の全てをアップデートできる
anyenv-git は、
anyenv git pull
で、anyenvで入れた、**env系の全てのgitコマンドを実行する
rbenv install -l
3.0.2
nodenv install -l
17.0.1
多言語をやる人は、操作が統一されているから良い
で、anyenvで入れた、**env系の全てをアップデートできる
anyenv-git は、
anyenv git pull
で、anyenvで入れた、**env系の全てのgitコマンドを実行する
rbenv install -l
3.0.2
nodenv install -l
17.0.1
多言語をやる人は、操作が統一されているから良い
444デフォルトの名無しさん
2021/11/03(水) 12:02:48.24ID:6fv+OhcH445デフォルトの名無しさん
2021/11/03(水) 12:29:05.33ID:sUOJ6x6J446デフォルトの名無しさん
2021/11/03(水) 13:02:51.65ID:RAebC74D447デフォルトの名無しさん
2021/11/03(水) 13:58:05.52ID:RAebC74D >>444
navigator.webdriverをFalseにできました!!
設定できてからしばらくはクローリングできてたんですけど、すぐにまたbot認定されてしまいました。
ほかに何をすればbot認定回避できるんだろう?
昨日まではnavigator.webdriverをFalseにしてなくても問題なくクローリングできてたのに。。。
navigator.webdriverをFalseにできました!!
設定できてからしばらくはクローリングできてたんですけど、すぐにまたbot認定されてしまいました。
ほかに何をすればbot認定回避できるんだろう?
昨日まではnavigator.webdriverをFalseにしてなくても問題なくクローリングできてたのに。。。
448デフォルトの名無しさん
2021/11/03(水) 14:02:36.28ID:YDDGMZzD webdriverをFalseにしても駄目ならそのサイトがどういうbot対策してるか次第だろう
一般的な回答はない
一般的な回答はない
449デフォルトの名無しさん
2021/11/03(水) 14:09:18.92ID:t3xorxmT450デフォルトの名無しさん
2021/11/03(水) 15:29:02.45ID:RAebC74D >>448
ログインせずにamazonをスクレイピングしてたんだ。
新品出品者一覧ページだけが今日からどうしても取れなくなった。
navigator.webdriverをFalseにしてもだめ。
useragentのクロームのバージョンをいじると少しの間はスクレイピングできるんだが、少しするとロボット対策ページがでるようになる
ログインせずにamazonをスクレイピングしてたんだ。
新品出品者一覧ページだけが今日からどうしても取れなくなった。
navigator.webdriverをFalseにしてもだめ。
useragentのクロームのバージョンをいじると少しの間はスクレイピングできるんだが、少しするとロボット対策ページがでるようになる
451デフォルトの名無しさん
2021/11/03(水) 16:15:33.24ID:aF9H0I8F Amazonみたいな大企業がマジメに対策してるんだから諦めて別の手段を考えろ
452デフォルトの名無しさん
2021/11/03(水) 16:51:02.51ID:ge6GYHfK >>442
venv一択
venv一択
453デフォルトの名無しさん
2021/11/03(水) 17:08:14.27ID:seSNXpAW 標準モジュールだしな
454デフォルトの名無しさん
2021/11/03(水) 19:46:52.23ID:RAebC74D >>449のundetected_chromedriverも試してみたけどだめそうだ
今日から急にできなくなったから他の人にも影響でて誰か解決策を見つけてくれることを祈ろう
今日から急にできなくなったから他の人にも影響でて誰か解決策を見つけてくれることを祈ろう
455デフォルトの名無しさん
2021/11/03(水) 21:06:34.94ID:Q82Zq3XZ ツイッターで見かけたんだけど
tkinterのentryで
選択範囲に何かすると検証可否に関わらず選択範囲と中身が消える挙動って
こんだけしないと回避できないの?
https://i.imgur.com/ldiCdw0.jpg
tkinterのentryで
選択範囲に何かすると検証可否に関わらず選択範囲と中身が消える挙動って
こんだけしないと回避できないの?
https://i.imgur.com/ldiCdw0.jpg
456デフォルトの名無しさん
2021/11/03(水) 21:37:10.82ID:seSNXpAW 目的がAmazonの商品情報ならAPIつかえばいいのに
習作ならAmazonに固執する必要ないし
習作ならAmazonに固執する必要ないし
457デフォルトの名無しさん
2021/11/03(水) 22:14:34.64ID:nn1iuVsd APIは無料じゃないので。
458デフォルトの名無しさん
2021/11/04(木) 00:07:35.54ID:EUukbb+u そりゃそうだ
459デフォルトの名無しさん
2021/11/04(木) 03:13:20.72ID:vgkZPDuF venv環境内でpip install --user 自作のパッケージのpath としてもERROR: Can not perform a "--user" install. User site-package are not visible in this virtualenv.と出て出来ません
どうすればいいですか?
どうすればいいですか?
460デフォルトの名無しさん
2021/11/04(木) 03:18:07.61ID:vgkZPDuF いやvnevの中だから--user要らないのか
解決しました
解決しました
461デフォルトの名無しさん
2021/11/04(木) 08:04:19.17ID:KwnMOXlw462デフォルトの名無しさん
2021/11/04(木) 11:06:53.47ID:JyTL4wpj463デフォルトの名無しさん
2021/11/05(金) 07:42:42.91ID:aGM278ZV psycopg2でpostgresqlを勉強してるのですが下記のクエリを実行するにはpsycopg2でどう書けばいいですか?
SELECT
user_id
, CASE
WHEN register_device = 1 THEN 'PC'
WHEN register_device = 2 THEN 'SP'
WHEN register_device = 3 THEN ' アプリ '
-- デフォルトの値を指定する場合は ELSE 句を用いる
-- ELSE ''
END AS device_name
FROM mst_users
;
下記で実行してもうまくいきませんでした。
SELECT
user_id
, CASE
WHEN register_device = 1 THEN 'PC'
WHEN register_device = 2 THEN 'SP'
WHEN register_device = 3 THEN ' アプリ '
-- デフォルトの値を指定する場合は ELSE 句を用いる
-- ELSE ''
END AS device_name
FROM mst_users
;
下記で実行してもうまくいきませんでした。
464デフォルトの名無しさん
2021/11/05(金) 07:43:49.46ID:aGM278ZV # psycopg2 モジュールのインポート
import psycopg2
# PostgreSQL Server へ接続
conn = psycopg2.connect('host=localhost port=5432 dbname=〇〇 user=〇〇 password=〇〇')
# カーソルを取得
c = conn.cursor()
#execute()メソッドでSQL文を実行する。
#このスクリプトを何回実行しても同じ結果になるようにするため、mst_usersテーブルが存在する場合は削除する。
c.execute('DROP TABLE IF EXISTS mst_users')
#mst_usersテーブルを作成する。
c.execute("""
CREATE TABLE mst_users(
"user_id" text,
"register_data" text,
"register_device" integer
)
""")
#executemany()メソッドでは複数のパラメーターのリストで指定できる。
#パラメーターの数(ここでは3つ)のSQLを順に実行できる。
c.executemany('INSERT INTO mst_users VALUES(%(user_id)s, %(register_data)s, %(register_device)s)',
[{"user_id":"u003","register_data":"2016-08-27", "register_device":2},
{"user_id":"u004","register_data":"2016-08-28", "register_device":3},
{"user_id":"u005","register_data":"2016-08-29", "register_device":2},
])
import psycopg2
# PostgreSQL Server へ接続
conn = psycopg2.connect('host=localhost port=5432 dbname=〇〇 user=〇〇 password=〇〇')
# カーソルを取得
c = conn.cursor()
#execute()メソッドでSQL文を実行する。
#このスクリプトを何回実行しても同じ結果になるようにするため、mst_usersテーブルが存在する場合は削除する。
c.execute('DROP TABLE IF EXISTS mst_users')
#mst_usersテーブルを作成する。
c.execute("""
CREATE TABLE mst_users(
"user_id" text,
"register_data" text,
"register_device" integer
)
""")
#executemany()メソッドでは複数のパラメーターのリストで指定できる。
#パラメーターの数(ここでは3つ)のSQLを順に実行できる。
c.executemany('INSERT INTO mst_users VALUES(%(user_id)s, %(register_data)s, %(register_device)s)',
[{"user_id":"u003","register_data":"2016-08-27", "register_device":2},
{"user_id":"u004","register_data":"2016-08-28", "register_device":3},
{"user_id":"u005","register_data":"2016-08-29", "register_device":2},
])
465デフォルトの名無しさん
2021/11/05(金) 07:44:04.24ID:aGM278ZV #コードをラベルに置き換えるクエリ(WHEN (条件式) THEN(条件を満たす場合の値))
c.execute("""
SELECT
user_id,
CASE
WHEN register_device = 1 THEN 'PC'
WHEN register_device = 2 THEN 'SP'
WHEN register_device = 3 THEN ' アプリ '
-- デフォルトの値を指定する場合は ELSE 句を用いる
ELSE ''
END AS device_name
FROM mst_users;
""")
#変更をコミット(保存)する
conn.commit()
#保存したデータを取得するSELECT文を実行する
c.execute('SELECT * FROM "mst_users"')
#クエリの結果はfetchall()メソッドで取得できる。
for row in c.fetchall():
#保存したデータを表示する
print(row)
#コネクションを閉じる
conn.close()
c.execute("""
SELECT
user_id,
CASE
WHEN register_device = 1 THEN 'PC'
WHEN register_device = 2 THEN 'SP'
WHEN register_device = 3 THEN ' アプリ '
-- デフォルトの値を指定する場合は ELSE 句を用いる
ELSE ''
END AS device_name
FROM mst_users;
""")
#変更をコミット(保存)する
conn.commit()
#保存したデータを取得するSELECT文を実行する
c.execute('SELECT * FROM "mst_users"')
#クエリの結果はfetchall()メソッドで取得できる。
for row in c.fetchall():
#保存したデータを表示する
print(row)
#コネクションを閉じる
conn.close()
466デフォルトの名無しさん
2021/11/05(金) 08:12:10.06ID:w3w9SeME467デフォルトの名無しさん
2021/11/05(金) 08:26:19.63ID:UU4b+5ML468デフォルトの名無しさん
2021/11/05(金) 10:52:47.15ID:CgcDsDN+ 会話が不自由なのは頭が不自由なのに起因
469デフォルトの名無しさん
2021/11/05(金) 11:16:58.00ID:WAcm7u05470デフォルトの名無しさん
2021/11/05(金) 12:45:07.02ID:bB3TtMEF >>463
まず、DBってデータを永続化させるためのものだから
コメントにあるような「何回実行してもおなじになるように」(←べき等性、という)
のくだりの処理は一般的ではない
メンテしたいならDBbouer(名前うろ覚え)やA5sqlみたいなツールでメンテしたほうがいい
つぎに、テーブルの扱いだけど
テーブル定義の段階で一意キーを定義すれば
上にあるやうなinsert複数回実行したらデータが多重登録されることを防げる
キーに設定したくないときはinsert条件をつけてあげるといい
テーブル定義、データの登録と済んだらつぎにセレクト文でデータを参照できるようになる
まあ、pythonの勉強というよりDBの勉強したほうがよさそうな感じやね
まず、DBってデータを永続化させるためのものだから
コメントにあるような「何回実行してもおなじになるように」(←べき等性、という)
のくだりの処理は一般的ではない
メンテしたいならDBbouer(名前うろ覚え)やA5sqlみたいなツールでメンテしたほうがいい
つぎに、テーブルの扱いだけど
テーブル定義の段階で一意キーを定義すれば
上にあるやうなinsert複数回実行したらデータが多重登録されることを防げる
キーに設定したくないときはinsert条件をつけてあげるといい
テーブル定義、データの登録と済んだらつぎにセレクト文でデータを参照できるようになる
まあ、pythonの勉強というよりDBの勉強したほうがよさそうな感じやね
471デフォルトの名無しさん
2021/11/05(金) 12:56:19.66ID:bB3TtMEF >>465
ついでにそのスクリプトについていうと
まずinsertのあとコミットかけないとポスグレって参照できなかった気がする
1queryごとにwith句でもつかって接続しなおしたほうが分かりやすいのではないかと
つぎに、コメントに「コードをラベルに書き換える」とあって、そのあとまたセレクトかけてるけど
たぶんこれはあなたがセレクト文の性質を誤解してる
最初のセレクト文で端末コードごとに表示文字を切り替えてるけど
実はこのセレクトで既にデータをとり終えて、表示できる状態になってる
また、セレクトはあくまでデータの参照(写像)であって、データの書き換えは行わない
出力の見かけを変更する処理じたいはそれで正しい
ついでにそのスクリプトについていうと
まずinsertのあとコミットかけないとポスグレって参照できなかった気がする
1queryごとにwith句でもつかって接続しなおしたほうが分かりやすいのではないかと
つぎに、コメントに「コードをラベルに書き換える」とあって、そのあとまたセレクトかけてるけど
たぶんこれはあなたがセレクト文の性質を誤解してる
最初のセレクト文で端末コードごとに表示文字を切り替えてるけど
実はこのセレクトで既にデータをとり終えて、表示できる状態になってる
また、セレクトはあくまでデータの参照(写像)であって、データの書き換えは行わない
出力の見かけを変更する処理じたいはそれで正しい
472デフォルトの名無しさん
2021/11/05(金) 15:54:39.51ID:sm1wg6Gg めちゃいい加減なこと言ってるな
君も一緒にDBの勉強したほうがよさそうな感じやね
君も一緒にDBの勉強したほうがよさそうな感じやね
473デフォルトの名無しさん
2021/11/05(金) 17:46:31.97ID:bBlbvk7u うちMySQLdbつこてる
autocommitあるから便利やで
autocommitあるから便利やで
474デフォルトの名無しさん
2021/11/05(金) 18:18:38.34ID:IMIRRurs >>472
同意
同意
475デフォルトの名無しさん
2021/11/05(金) 18:22:58.00ID:IF3gwUAV いろいろ回答ありがとうございます。
もう少しで帰宅できるので帰ったら試してみます。
もう少しで帰宅できるので帰ったら試してみます。
476デフォルトの名無しさん
2021/11/05(金) 18:27:29.76ID:HmBcWh4U >>472
禿同
禿同
477デフォルトの名無しさん
2021/11/05(金) 18:28:54.22ID:IF3gwUAV プログラミングの勉強始めたのが7月からでDBはいじったことがないので苦戦してます
ビッグデータ分析・活用のためのSQLレシピって本買ってみたけど、pythonからpostgresqlいじる方法が乗ってなくて手探りで検索したりしてる
おすすめの本あれば教えてくだしあ
ビッグデータ分析・活用のためのSQLレシピって本買ってみたけど、pythonからpostgresqlいじる方法が乗ってなくて手探りで検索したりしてる
おすすめの本あれば教えてくだしあ
478デフォルトの名無しさん
2021/11/05(金) 18:37:13.50ID:HmBcWh4U >>477
グラス片手にデータベース設計
グラス片手にデータベース設計
479デフォルトの名無しさん
2021/11/05(金) 20:31:14.39ID:d5XheO1i この分野は進歩が早いので
すぐに本が陳腐になる
公式サイトが読めるようになることが必要
すぐに本が陳腐になる
公式サイトが読めるようになることが必要
480デフォルトの名無しさん
2021/11/05(金) 22:12:47.65ID:u2OkzB/r バックエンドのwebプログラマーになるのにhtml/cssの知識は必要ですか?
bootstrapなど面倒くさいです
それを覚える暇があればdbとかフレームワークとか覚えたいんですが駄目ですか?
bootstrapなど面倒くさいです
それを覚える暇があればdbとかフレームワークとか覚えたいんですが駄目ですか?
481デフォルトの名無しさん
2021/11/05(金) 22:20:35.18ID:m7NNpy+h >>480
・フロントエンド
・AWSまたはGCP
・特定のDBMSに関する深い知識
最低どれか一つは欲しいかな
バックエンドは多かれ少なかれオールラウンダーとして動くことが期待されるんで、裏側のコーディングだけできますというのは厳しい
・フロントエンド
・AWSまたはGCP
・特定のDBMSに関する深い知識
最低どれか一つは欲しいかな
バックエンドは多かれ少なかれオールラウンダーとして動くことが期待されるんで、裏側のコーディングだけできますというのは厳しい
482デフォルトの名無しさん
2021/11/05(金) 22:39:14.92ID:6Sctu/0G483デフォルトの名無しさん
2021/11/05(金) 23:35:32.62ID:s+xNbh4M 現場が分業体制でアサインされた分野以外まったく学ぶ気もないなら
都度専門家に聞けば仕事はなりたつだろうし、
そんなの嫌ならDBはRDBMSの説明書あれば困らないくらい
AWSはSAPの試験内容が理解できるくらい?
都度専門家に聞けば仕事はなりたつだろうし、
そんなの嫌ならDBはRDBMSの説明書あれば困らないくらい
AWSはSAPの試験内容が理解できるくらい?
484デフォルトの名無しさん
2021/11/05(金) 23:52:39.03ID:/IlkeVzp プログラミング超初心者の質問
https://mevius.5ch.net/test/read.cgi/tech/1616755673/430-431
ここに書いた
YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者向けサロンの内容
全くの素人は、Cloud9, Heroku, CircleCI, Bootstrap だけで始める
仕事レベルでは、AWS Fargate, Terraform, React, Vue.js, TypeScript もやる。
だから、AWSのくろかわこうへいのサロンにも、入る必要がある
初心者向け、くろかわのお勧め本が、
Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)、
NRIネットコム株式会社、2018
DB はミックの本。
最難関は、国家資格・データベーススペシャリスト
https://mevius.5ch.net/test/read.cgi/tech/1616755673/430-431
ここに書いた
YouTube で有名な、雑食系エンジニア・KENTA の、
Ruby on Rails 初心者向けサロンの内容
全くの素人は、Cloud9, Heroku, CircleCI, Bootstrap だけで始める
仕事レベルでは、AWS Fargate, Terraform, React, Vue.js, TypeScript もやる。
だから、AWSのくろかわこうへいのサロンにも、入る必要がある
初心者向け、くろかわのお勧め本が、
Amazon Web Services パターン別構築・運用ガイド 改訂第2版 (Informatics&IDEA)、
NRIネットコム株式会社、2018
DB はミックの本。
最難関は、国家資格・データベーススペシャリスト
485484
2021/11/06(土) 00:15:30.00ID:x0h3LLto KENTA, 2021/11/04
「強いエンジニア」の定義とは?
https://www.youtube.com/watch?v=vjDOgkrkorA
AWS だけではダメ。GCP もやる。
Ruby だけではダメ。Go もやる
(PHP, Java のような)保守の仕事ばかりをやらない事。
必ず、(Ruby on Rails を使っているような)モダンな企業で、新規案件をやるべき
「強いエンジニア」の定義とは?
https://www.youtube.com/watch?v=vjDOgkrkorA
AWS だけではダメ。GCP もやる。
Ruby だけではダメ。Go もやる
(PHP, Java のような)保守の仕事ばかりをやらない事。
必ず、(Ruby on Rails を使っているような)モダンな企業で、新規案件をやるべき
486デフォルトの名無しさん
2021/11/06(土) 00:43:22.10ID:HcnEcsru >>478
glassなのかgrassなのかでちょっと変わってくるなw
glassなのかgrassなのかでちょっと変わってくるなw
487デフォルトの名無しさん
2021/11/06(土) 02:27:25.73ID:2JPnQnVe 5chってWEB屋さん多いよね
488デフォルトの名無しさん
2021/11/06(土) 11:10:52.20ID:Y8IidGqg webプログラミングは日本のIT系の技術業務の大半を占めるからな
後はゲームプログラミング
アプリ開発とか機器の制御組み込みなんて需要が殆どない
ところでPythonってやろうと思えばそれらが一応全部出来るんだな
PyGameとかtkinterとか仕事は無いけど
後はゲームプログラミング
アプリ開発とか機器の制御組み込みなんて需要が殆どない
ところでPythonってやろうと思えばそれらが一応全部出来るんだな
PyGameとかtkinterとか仕事は無いけど
489デフォルトの名無しさん
2021/11/06(土) 11:13:57.22ID:b1XdA94q KENYAは超初心者
まで読んだ
まで読んだ
490デフォルトの名無しさん
2021/11/06(土) 23:10:49.67ID:6scjaAhI 内包表記のif句で内包表記を使った場合、シーケンスからひとつ取り出すたびに内包表記内の内包表記が実行される?それとも記憶されてて最初だけ?
_ = [i for i in hoge if i in [x for x in fuga]]
_ = [i for i in hoge if i in [x for x in fuga]]
491デフォルトの名無しさん
2021/11/07(日) 00:04:10.88ID:1jV5IOeL めっちゃ時間かかるやつ
492デフォルトの名無しさん
2021/11/07(日) 00:12:43.59ID:1gRJ5IYK range(10000000)とかやって試そう
493デフォルトの名無しさん
2021/11/07(日) 00:28:09.38ID:Gc9uqLet printや副作用ある操作したらわかるやろ
494デフォルトの名無しさん
2021/11/07(日) 00:31:20.69ID:FiWKnTjM495デフォルトの名無しさん
2021/11/07(日) 11:12:17.72ID:8634ItVT xlwingsの良い参考になるサイトや使用例を知りたいです
何かありませんか?
何かありませんか?
496デフォルトの名無しさん
2021/11/07(日) 13:56:48.14ID:KSL7hl+d ありません
497デフォルトの名無しさん
2021/11/07(日) 15:07:34.53ID:dPEzTB6K c#とJavaしかやったことないけど初めてPython始める時に気をつけるべきことある?
セミコロンないってのと()がインデントになるってことくらいしか知らない
セミコロンないってのと()がインデントになるってことくらいしか知らない
498デフォルトの名無しさん
2021/11/07(日) 15:24:39.37ID:7u/wN+Bg >>497
C#とJavaができるならぶっちゃけ楽勝だけど、それらに比べるとPythonはビチグソ遅いという点には注意が必要かな
まとまった量のデータを扱うときにはなるべくpandasやnumpyのような強力なライブラリを使用し、
処理の粒度を大きくしてPythonにできるだけ処理を戻さないことが重要になる
C#とJavaができるならぶっちゃけ楽勝だけど、それらに比べるとPythonはビチグソ遅いという点には注意が必要かな
まとまった量のデータを扱うときにはなるべくpandasやnumpyのような強力なライブラリを使用し、
処理の粒度を大きくしてPythonにできるだけ処理を戻さないことが重要になる
499デフォルトの名無しさん
2021/11/07(日) 15:35:30.62ID:eUZdhF5f 変数のスコープくらいかな
500デフォルトの名無しさん
2021/11/07(日) 16:15:42.23ID:f4OJt/oF >>497
値渡しと参照渡しの違いとそれぞれのタイミング
値渡しと参照渡しの違いとそれぞれのタイミング
501デフォルトの名無しさん
2021/11/07(日) 16:36:23.47ID:sYF1hNAJ Cは関数だけでなく if や for の中にもスコープがあるらしいね
Pythonは関数・クラス・クラス内関数にしかないから
腰を抜かすほど驚いた
Pythonは関数・クラス・クラス内関数にしかないから
腰を抜かすほど驚いた
502デフォルトの名無しさん
2021/11/07(日) 17:05:25.39ID:zFG7xLKK503デフォルトの名無しさん
2021/11/07(日) 17:47:04.33ID:f4OJt/oF ひたすら中かっこ連打して同じ名前の変数を別の意味で使い続けることができちまうんだ
画期的だろ?w
画期的だろ?w
504デフォルトの名無しさん
2021/11/07(日) 19:38:56.22ID:EGKzblaZ np.linalg.inv(np.array([[1,2],[3,4]])) @ np.array([[1,2],[3,4]])
はほぼ単位行列
1 0
0 1
になるのですが
np.linalg.inv(np.array([[1,2,3],[4,5,6],[7,8,9]])) @ np.array([[1,2,3],[4,5,6],[7,8,9]])
の結果が単位行列にならないのは何故?
はほぼ単位行列
1 0
0 1
になるのですが
np.linalg.inv(np.array([[1,2,3],[4,5,6],[7,8,9]])) @ np.array([[1,2,3],[4,5,6],[7,8,9]])
の結果が単位行列にならないのは何故?
505デフォルトの名無しさん
2021/11/07(日) 19:47:09.06ID:ongGZWlK >>504
正則じゃないから
正則じゃないから
506デフォルトの名無しさん
2021/11/07(日) 19:54:49.18ID:EGKzblaZ 解決しましたω
ありがとうωω
こんな例もあるんですねωωω
ありがとうωω
こんな例もあるんですねωωω
507デフォルトの名無しさん
2021/11/07(日) 20:00:28.72ID:RgCygfEf まさのりって何?
508デフォルトの名無しさん
2021/11/07(日) 20:11:28.00ID:e/2wOCv0 俺
509デフォルトの名無しさん
2021/11/07(日) 20:40:31.65ID:JmNYBczp あとデフォルト引数の評価タイミングが関数の定義時
510デフォルトの名無しさん
2021/11/07(日) 21:11:09.29ID:t/1xwUA+ >>509
それは普通じゃない?
それは普通じゃない?
511デフォルトの名無しさん
2021/11/07(日) 21:12:42.76ID:VzSbYdr/ それだけ読むと特異性かんじないけど
結果ミュータブルなインスタンスでも使い回されるから
知らないとハマるかも
結果ミュータブルなインスタンスでも使い回されるから
知らないとハマるかも
512デフォルトの名無しさん
2021/11/07(日) 21:28:16.74ID:zDn3yvq/513デフォルトの名無しさん
2021/11/07(日) 22:09:20.33ID:t/1xwUA+ >>511
他の言語で確認したら普通じゃなかったわ
他の言語で確認したら普通じゃなかったわ
514デフォルトの名無しさん
2021/11/08(月) 00:18:17.83ID:AFFY8UkB515デフォルトの名無しさん
2021/11/08(月) 02:33:37.44ID:J6d/ajGt 基本的に参照だから
関数呼ばれるときに再評価されるような錯覚しがち
関数呼ばれるときに再評価されるような錯覚しがち
516デフォルトの名無しさん
2021/11/08(月) 02:34:48.50ID:J6d/ajGt >それに似せてる
いや
上から順に実行してるだけだからにせるも何も
いや
上から順に実行してるだけだからにせるも何も
517デフォルトの名無しさん
2021/11/08(月) 02:52:44.14ID:pXoKYUcM MDNのJavaScriptのデフォルト引数の説明で
Pythonが名指しで引き合いに出されるくらいには特異
Pythonが名指しで引き合いに出されるくらいには特異
518デフォルトの名無しさん
2021/11/08(月) 03:38:41.76ID:jye9PFXO >>509
うへぇ、これ知ってなきゃハマるやつだ…覚えとこ
うへぇ、これ知ってなきゃハマるやつだ…覚えとこ
519デフォルトの名無しさん
2021/11/08(月) 08:16:14.51ID:mmSscFof520デフォルトの名無しさん
2021/11/08(月) 08:41:01.05ID:qDbA6fow >>519
ふつうは別々に定義した関数には影響しないと思うんだが。どういう使い方?
ふつうは別々に定義した関数には影響しないと思うんだが。どういう使い方?
521デフォルトの名無しさん
2021/11/08(月) 09:15:44.50ID:QzkUvy+x522デフォルトの名無しさん
2021/11/08(月) 11:04:28.92ID:3dYPFnlP "重要な警告: デフォルト値は 1 度だけしか評価されません。デフォルト値がリストや辞書のような変更可能なオブジェクトの時にはその影響がでます。例えば以下の関数は、後に続く関数呼び出しで関数に渡されている引数を累積します:"
https://docs.python.org/ja/3/tutorial/controlflow.html#default-argument-values
ここ見れ
設定を読み込む関数とかで、 if config == None: なんとか みたいな感じでよく使われてる
https://docs.python.org/ja/3/tutorial/controlflow.html#default-argument-values
ここ見れ
設定を読み込む関数とかで、 if config == None: なんとか みたいな感じでよく使われてる
523デフォルトの名無しさん
2021/11/08(月) 11:10:57.60ID:3dYPFnlP 一応この話題もこのスレで見た記憶あるんだけど、はまる人が少ないからか、出てきたときは割と新鮮な感じで受け入れられるよね
524デフォルトの名無しさん
2021/11/08(月) 11:28:47.99ID:pXoKYUcM チュートリアルで重要な警告をしなければいけないことが「普通」ねえ…
525デフォルトの名無しさん
2021/11/08(月) 11:29:31.49ID:3dYPFnlP あとあれ、デフォルト引数にlistじゃなくてtuple使う理由の一つもこれ
526デフォルトの名無しさん
2021/11/08(月) 12:21:09.03ID:kxrCfTp4 そもそもデフォルト値とかいう一般的にconst期待するようなものに動的リストを指定する時点で
殆んどの現場でおいバカやめろってなるだろ
似たようなことするならデコレータ使ったりとかほかにやり方はいくつもあるはずだし
殆んどの現場でおいバカやめろってなるだろ
似たようなことするならデコレータ使ったりとかほかにやり方はいくつもあるはずだし
527デフォルトの名無しさん
2021/11/08(月) 13:16:32.13ID:pTXzqRC7 へえ…
528デフォルトの名無しさん
2021/11/08(月) 13:56:07.01ID:IUmN4sEn >>520
気になったのはこの仕様で助かるって方。
気になったのはこの仕様で助かるって方。
529デフォルトの名無しさん
2021/11/08(月) 18:18:26.84ID:3dYPFnlP >関数を量産
この言葉の方が気になるわ
この言葉の方が気になるわ
530デフォルトの名無しさん
2021/11/08(月) 18:23:35.95ID:GDZdggMg generator
531デフォルトの名無しさん
2021/11/08(月) 19:53:38.72ID:rM583hbx532デフォルトの名無しさん
2021/11/09(火) 06:25:58.20ID:AjdA0gQv 恐いなあ
デフォルト引数は極力使わないようにしとこう
(幸い使ったことはないが)
自分が職場に残したコードが後々悲劇の元にらないように
デフォルト引数は極力使わないようにしとこう
(幸い使ったことはないが)
自分が職場に残したコードが後々悲劇の元にらないように
533デフォルトの名無しさん
2021/11/09(火) 06:58:51.77ID:UCZ76//B534デフォルトの名無しさん
2021/11/09(火) 12:06:27.97ID:AYw2Y4/N __call__便利だなと思って使おうと思うのですが特に罠とかないですよね
535デフォルトの名無しさん
2021/11/09(火) 12:58:39.67ID:68YeN4Dm call -151
536デフォルトの名無しさん
2021/11/09(火) 17:51:14.43ID:gY1b2lRY 整数の1か2か3か4がランダムに入ってる可変長配列がある
すべての要素が奇数か偶数かを求める
算数できないマンなんだけど、これって各要素%2==0するしかない?
算数的に一発で判定できる?
すべての要素が奇数か偶数かを求める
算数できないマンなんだけど、これって各要素%2==0するしかない?
算数的に一発で判定できる?
537デフォルトの名無しさん
2021/11/09(火) 17:52:44.04ID:gY1b2lRY 可変長配列て意味不明ね
各要素が1から4のどれかの、長さランダムな配列の全奇偶判定がしたい
各要素が1から4のどれかの、長さランダムな配列の全奇偶判定がしたい
538デフォルトの名無しさん
2021/11/09(火) 18:01:10.06ID:O2YAvgsT 一発なんてのはないんでない? 知らんけど
list(filter(lambda x: x % 2 == 0, l))
list(filter(lambda x: x % 2 == 0, l))
539デフォルトの名無しさん
2021/11/09(火) 18:08:32.89ID:y4eH/Tjw &1
540デフォルトの名無しさん
2021/11/09(火) 18:09:48.35ID:WraEKl97 next((x for x in l if x % 2 == 0), None) is not None
541デフォルトの名無しさん
2021/11/09(火) 18:22:49.04ID:h26zcWAQ s = sum(i & 1 for i in L)
even = s == 0
odd = s == len(L)
even = s == 0
odd = s == len(L)
542デフォルトの名無しさん
2021/11/09(火) 18:37:52.32ID:8kpY2GOq 全部掛けて奇数なら奇数のみ
543デフォルトの名無しさん
2021/11/09(火) 18:42:49.20ID:LNU/VeL4 ランダムなら先頭から1つずつ見てearly returnしたほうが効率いいよ
実際O(n)になるのはnが十分小さいときだけだから
実際O(n)になるのはnが十分小さいときだけだから
544デフォルトの名無しさん
2021/11/09(火) 19:45:19.14ID:DzPX9Zv+ 全部の要素のANDをとって1bit目が1なら全部奇数
全部の要素のORをとって1bit目が0なら全部偶数
速いかどうかは知らん
全部の要素のORをとって1bit目が0なら全部偶数
速いかどうかは知らん
545デフォルトの名無しさん
2021/11/09(火) 19:48:55.73ID:6aoIkSDY546デフォルトの名無しさん
2021/11/09(火) 20:08:07.20ID:UQ//qCST >>536
各要素の従う確率分布が独立なら全て調べるしかない
各要素の従う確率分布が独立なら全て調べるしかない
547デフォルトの名無しさん
2021/11/09(火) 21:27:08.92ID:ge8vpxBP 割り算って計算コスト高いみたいなはなしなかったっけ
だとしたら割り算一回で済む>>542が優勝か?
だとしたら割り算一回で済む>>542が優勝か?
548デフォルトの名無しさん
2021/11/09(火) 22:25:49.93ID:QGVM/tnv 愚直に掛けたらオーバーフローする可能性があるから>>544じゃね?
549デフォルトの名無しさん
2021/11/09(火) 22:33:14.00ID:eryNNSUL まあ現実的には長さランダムならearly returnでしょうな
550デフォルトの名無しさん
2021/11/09(火) 22:37:04.39ID:LNU/VeL4 CPythonのほうで最適化されてるからか%2と&1で速度的に有意な差は見られないけどな
それより1つでも条件はずれたら処理を打ち切らないと
それより1つでも条件はずれたら処理を打ち切らないと
551デフォルトの名無しさん
2021/11/09(火) 22:57:55.14ID:/aNe03Si こういうのジェネレータ書いてnext()が常套だけど
イテレータに対してfind firstする分かりやすい書き方がないのがな
イテレータに対してfind firstする分かりやすい書き方がないのがな
552デフォルトの名無しさん
2021/11/09(火) 23:22:12.36ID:8kpY2GOq for else
553デフォルトの名無しさん
2021/11/10(水) 01:11:59.13ID:MDwGZUB1 Pythonで書くときはバリバリ日本語で書くべきという主義を広めないか?
554デフォルトの名無しさん
2021/11/10(水) 04:04:29.53ID:YQwPYBK4 >>536
xs.all?(&:odd?) または xs.all?(&:even?)
xs.all?(&:odd?) または xs.all?(&:even?)
555デフォルトの名無しさん
2021/11/10(水) 06:52:37.08ID:Mmr3oxKF SJISのテキストファイルで、全角半角混在の行の長さを
バイト数で知るにはどうすればよいか
len関数は全角文字を1と判定するので、この目的には使えないようだ
バイト数で知るにはどうすればよいか
len関数は全角文字を1と判定するので、この目的には使えないようだ
556デフォルトの名無しさん
2021/11/10(水) 09:21:40.34ID:morNzhKw 数学だけ知っててプログラミング下手な人は
論理的に正しくても実行にかかる時間を考慮しない傾向にあるな
論理的に正しくても実行にかかる時間を考慮しない傾向にあるな
557デフォルトの名無しさん
2021/11/10(水) 09:23:24.08ID:morNzhKw >>555
SJISで半角カタカナ混在は想定してる?除外?
SJISで半角カタカナ混在は想定してる?除外?
558デフォルトの名無しさん
2021/11/10(水) 09:25:16.07ID:morNzhKw そもそも問題の設定が可笑しいな
行の長さをバイト数でってことなら
バイト列で\nから\nまでのバイト数を数えれば良いんじゃね
行の長さをバイト数でってことなら
バイト列で\nから\nまでのバイト数を数えれば良いんじゃね
559デフォルトの名無しさん
2021/11/10(水) 09:25:49.53ID:l5Ahtbnb >>555
str.encode()
str.encode()
560デフォルトの名無しさん
2021/11/10(水) 10:56:18.25ID:BOw4D0hZ x = 0
y = 0
cmd = 0
var = x if cmd else y
var = 1
# x=0, y=1
というのがやりたい.値じゃなくて変数を自体を代入したいんだけど,できますか?
if cmd:
__x = 1
else:
__y = 1
y = 0
cmd = 0
var = x if cmd else y
var = 1
# x=0, y=1
というのがやりたい.値じゃなくて変数を自体を代入したいんだけど,できますか?
if cmd:
__x = 1
else:
__y = 1
561デフォルトの名無しさん
2021/11/10(水) 11:00:38.81ID:pJeuK/iL >>560
最終的な目的がわからんと、全く何がしたいのかわからんわ。
最終的な目的がわからんと、全く何がしたいのかわからんわ。
562デフォルトの名無しさん
2021/11/10(水) 11:05:25.69ID:ABhSQgxq cmdって名前の変数に数値が入ってるのはまだしも、それが条件判断に使われてるのはセンスが凄い
563デフォルトの名無しさん
2021/11/10(水) 11:33:47.73ID:4NOC2kX2 pythonの三項演算子だけは許せない
見にくすぎる
ほかの言語と同じくこの形にしてほしい
hoge = condition ? true_value : false_value
見にくすぎる
ほかの言語と同じくこの形にしてほしい
hoge = condition ? true_value : false_value
564デフォルトの名無しさん
2021/11/10(水) 11:34:23.49ID:enrtMuCa >>556
計算量って考え方がCS独特だからな
計算機科学としてしっかり教えてるような大学か専門課程、またはトレーニングコースで学んでないと身に付きにくい
正解の根拠を数理的な証明じゃなく、出力としてのアサーションに求める時点で
つまり根本的なことろから変わってくるからな
計算量って考え方がCS独特だからな
計算機科学としてしっかり教えてるような大学か専門課程、またはトレーニングコースで学んでないと身に付きにくい
正解の根拠を数理的な証明じゃなく、出力としてのアサーションに求める時点で
つまり根本的なことろから変わってくるからな
565デフォルトの名無しさん
2021/11/10(水) 11:40:16.83ID:ZiQaM7Uu > 560
x = cmd
y = 1 - x
x = cmd
y = 1 - x
566デフォルトの名無しさん
2021/11/10(水) 11:41:15.02ID:l5Ahtbnb >>560
varに変数そのものへの参照を保持するのは無理じゃないかな
変数を参照するための文字列を格納しておいてvars()やlocals()だったり
getattr()やsetattr()を使えばできなくはない
どうしてもそれが必要な場面以外ではまずやらないけど
varに変数そのものへの参照を保持するのは無理じゃないかな
変数を参照するための文字列を格納しておいてvars()やlocals()だったり
getattr()やsetattr()を使えばできなくはない
どうしてもそれが必要な場面以外ではまずやらないけど
567デフォルトの名無しさん
2021/11/10(水) 12:11:38.18ID:/xBD3bqR xy = [0, 0]
var = cmd
xy[var] = 1
あるいは
xy = {'x': 0, 'y': 0}
var = 'x' if cmd else 'y'
xy[var] = 1
var = cmd
xy[var] = 1
あるいは
xy = {'x': 0, 'y': 0}
var = 'x' if cmd else 'y'
xy[var] = 1
568デフォルトの名無しさん
2021/11/10(水) 12:54:40.31ID:n5kix8Fi 再帰して、条件にあったらbreak
という処理をしているのですが
すべて回したけど条件に合わなかった
って場合はどうやればいいのですか
f=False
for i in range(5):
_if i==8:
__f=True
__break
_else:
__f=False
if f:
_print("○")
else:
_print("×")
例えばこの例だとfor抜けたあとにif i==8でも判別できます
しかし、for内外で2回、i==8を使った表現がなんか野暮というか・・
かといってそれを言い出せばわざわざ追加したf=Falseも、ってなりそうですが。
が、これ以上に他の方法なんてあるのでしょうか
という処理をしているのですが
すべて回したけど条件に合わなかった
って場合はどうやればいいのですか
f=False
for i in range(5):
_if i==8:
__f=True
__break
_else:
__f=False
if f:
_print("○")
else:
_print("×")
例えばこの例だとfor抜けたあとにif i==8でも判別できます
しかし、for内外で2回、i==8を使った表現がなんか野暮というか・・
かといってそれを言い出せばわざわざ追加したf=Falseも、ってなりそうですが。
が、これ以上に他の方法なんてあるのでしょうか
569デフォルトの名無しさん
2021/11/10(水) 13:20:24.40ID:pJeuK/iL 0-4で回して8でTrueって意味がわからんけど、
それだとelseは不要だし既に抜けた後に条件に合わなかった場合になってるだろ。
それだとelseは不要だし既に抜けた後に条件に合わなかった場合になってるだろ。
570デフォルトの名無しさん
2021/11/10(水) 13:22:02.64ID:BOw4D0hZ571デフォルトの名無しさん
2021/11/10(水) 13:36:42.37ID:n5kix8Fi572デフォルトの名無しさん
2021/11/10(水) 13:37:10.46ID:FEUt3UaQ573デフォルトの名無しさん
2021/11/10(水) 13:50:56.80ID:n5kix8Fi574デフォルトの名無しさん
2021/11/10(水) 15:17:50.26ID:l5Ahtbnb ヘルパー関数作ってreturn Trueとreturn Falseしたほうがいいと思う
Effective Pythonにもforやwhileのelseブロックは使うなって書いてる
Effective Pythonにもforやwhileのelseブロックは使うなって書いてる
575デフォルトの名無しさん
2021/11/10(水) 17:36:43.66 ヘルパー関数で分けて(処理の中身隠して)見やすくすれば
(ヘルパー関数内で)else句は使ってもいい
って意味ではなく、
そもそもelse句使わない方がいいってことかな
(ヘルパー関数内で)else句は使ってもいい
って意味ではなく、
そもそもelse句使わない方がいいってことかな
576デフォルトの名無しさん
2021/11/10(水) 17:56:41.01ID:HNNUg8pO oddnum = len((x for x in X if x in (1,3)))
allnum == len(X)
if oddnum == allnum > 0:
print('allodd')
elif allnum > 0 == oddnum:
print('alleven')
else:
print('other')
allnum == len(X)
if oddnum == allnum > 0:
print('allodd')
elif allnum > 0 == oddnum:
print('alleven')
else:
print('other')
577デフォルトの名無しさん
2021/11/10(水) 20:44:30.15ID:BOw4D0hZ578555
2021/11/10(水) 21:12:33.58ID:vnM01vTc579デフォルトの名無しさん
2021/11/10(水) 22:28:06.81ID:Ey/Tzzo2 sjisファイルをわざわざデコードしてからエンコードしなおすのかな?
580デフォルトの名無しさん
2021/11/11(木) 00:46:55.85ID:x6810Q1K そもそもループのelseっていわれても
なにやってるのかピンときづらいからな…
3系になってから用途不明の文法が結構増えた気がするわ
なにやってるのかピンときづらいからな…
3系になってから用途不明の文法が結構増えた気がするわ
581デフォルトの名無しさん
2021/11/11(木) 07:09:46.59ID:rdUNi5nM そうかなあ、コレクションから何か探してる時に見つからない時の処理書いたりするのにめっちゃ便利だと思うんだが
https://python.civic-apps.com/else-loop/amp/
まあelseというキーワードがいいかどうかはよくわからんけど他にしっくりくるようなキーワードもなさげだし
https://python.civic-apps.com/else-loop/amp/
まあelseというキーワードがいいかどうかはよくわからんけど他にしっくりくるようなキーワードもなさげだし
582デフォルトの名無しさん
2021/11/11(木) 10:03:23.47ID:SpIFedoW583デフォルトの名無しさん
2021/11/11(木) 12:20:10.51ID:ncCD0/gc 使えるけど使わないほうがいいよって話でしょ
>>581のコード例も探索と出力を分離してない悪い例
>>581のコード例も探索と出力を分離してない悪い例
584デフォルトの名無しさん
2021/11/11(木) 12:27:02.25ID:rdUNi5nM585デフォルトの名無しさん
2021/11/11(木) 12:39:45.52ID:8NRWWnb2 古いバージョンとの互換性がないか、考慮する必要のない場合、
標準で使えるものは使っとくほうが楽
それに対して、別途導入が必要なものは使わないな
標準で使えるものは使っとくほうが楽
それに対して、別途導入が必要なものは使わないな
586デフォルトの名無しさん
2021/11/11(木) 14:03:11.82ID:VFTg6I1W でもループのあとにいきなりelse出て来て
これがどの条件でそこにいくのかすぐに分かるやつおらんのでは?
ループ内でbreakしたあとだよ、とかいえばそのまま信じる人多そう
結局、分岐条件をちゃんと真面目に書いたほうが誤認、誤読を防げてwysiwygみが出る
これがどの条件でそこにいくのかすぐに分かるやつおらんのでは?
ループ内でbreakしたあとだよ、とかいえばそのまま信じる人多そう
結局、分岐条件をちゃんと真面目に書いたほうが誤認、誤読を防げてwysiwygみが出る
587デフォルトの名無しさん
2021/11/11(木) 14:11:28.15ID:1agSgarI windowsのpoetryでキャッシュからパッケージをインストールするとエラーになるやつってまだ修正されてない?
588デフォルトの名無しさん
2021/11/11(木) 18:08:48.51ID:JDtebxVn 辞書に"data"がある限り掘っていき
キー名と値をハイフン文字列で連結する
みたいなことをやりたくて自分で考えてみたのですが
https://ideone.com/o5VIjG
これで一応は出来た(期待する出力)のですが
最適化してもらえないでしょうか
キー名と値をハイフン文字列で連結する
みたいなことをやりたくて自分で考えてみたのですが
https://ideone.com/o5VIjG
これで一応は出来た(期待する出力)のですが
最適化してもらえないでしょうか
589デフォルトの名無しさん
2021/11/11(木) 19:32:31.66ID:M//5twRa590デフォルトの名無しさん
2021/11/11(木) 19:57:35.31ID:R65WwKU7591デフォルトの名無しさん
2021/11/11(木) 20:15:29.73ID:JDtebxVn592デフォルトの名無しさん
2021/11/12(金) 05:11:14.29ID:nOrEz+co593デフォルトの名無しさん
2021/11/12(金) 05:44:51.77ID:69xCA6xu forでelse使えるってしらんだし普通にインデントミスってたのかなと思ってifの所に直しておくかな
594デフォルトの名無しさん
2021/11/12(金) 07:15:43.05ID:Wbl+f+tk595デフォルトの名無しさん
2021/11/12(金) 08:22:54.70ID:bzXu0SPl ややこしくなるだけのものをわざわざ使うことないでしょう
596デフォルトの名無しさん
2021/11/12(金) 09:08:04.32ID:bLCSn2ms 昨日pythonの存在を知ったガチ初心者です
下の解説を参考に国土数値情報を一括DLしようとしましたができません
助力お願いします
https://qiita.com/mits003/items/2c8c77514a09aee99cc0
Win 10
コマンドプロンプトで実行
pyhton 3.9 DL済
ChromeDriver 93.04577 DL済
pip install selenium 実行
cd C:\Users\cucum\mlit-ksj-dl-tool-main
してから
python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を入力すると以下の文がでます
下の解説を参考に国土数値情報を一括DLしようとしましたができません
助力お願いします
https://qiita.com/mits003/items/2c8c77514a09aee99cc0
Win 10
コマンドプロンプトで実行
pyhton 3.9 DL済
ChromeDriver 93.04577 DL済
pip install selenium 実行
cd C:\Users\cucum\mlit-ksj-dl-tool-main
してから
python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を入力すると以下の文がでます
597デフォルトの名無しさん
2021/11/12(金) 09:08:47.83ID:bLCSn2ms C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
Traceback (most recent call last):
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py:50: DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
Traceback (most recent call last):
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 74, in start
self.process = subprocess.Popen(cmd, env=self.env,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] 指定されたファイルが見つかりません。
598デフォルトの名無しさん
2021/11/12(金) 09:09:00.65ID:bLCSn2ms During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 115, in <module>
dl_dir = file_dl(DRIVER_PATH)
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 50, in file_dl
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 90, in __init__
self.service.start()
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 84, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home
Traceback (most recent call last):
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 115, in <module>
dl_dir = file_dl(DRIVER_PATH)
File "C:\Users\cucum\mlit-ksj-dl-tool-main\mlit_ksj_dl.py", line 50, in file_dl
driver = webdriver.Chrome(executable_path=DRIVER_PATH, chrome_options=options)
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 69, in __init__
super(WebDriver, self).__init__(DesiredCapabilities.CHROME['browserName'], "goog",
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 90, in __init__
self.service.start()
File "C:\Users\cucum\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 84, in start
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://chromedriver.chromium.org/home
599デフォルトの名無しさん
2021/11/12(金) 09:09:56.62ID:bLCSn2ms 長文失礼しました
スレチだったら申し訳ありません
よろしくお願いします
スレチだったら申し訳ありません
よろしくお願いします
600デフォルトの名無しさん
2021/11/12(金) 09:42:28.23ID:+FPwLl69 全然知らんのだが、インストールされてるのがselenium4なら
このあたりが怪しいかも
https://qiita.com/yagaodekawasu/items/5813a8cb4c3d73386e7a
このあたりが怪しいかも
https://qiita.com/yagaodekawasu/items/5813a8cb4c3d73386e7a
601デフォルトの名無しさん
2021/11/12(金) 09:56:07.83ID:M7lyd7nj >>598
>selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
>Please see http://chromedriver.chromium.org/home
chrome driver・chromedriver.exe を置いたフォルダを、
ユーザー環境変数(または、システム環境変数)PATH へ追加すれば?
PowerShell を起動して、
$env:Path.split( ";" )
と入力して、chrome driverを置いたフォルダが、表示されるか確かめる
漏れの場合、C:\BrowserDriver と出力される
漏れは、そこにchrome driverを置いて、Ruby で使っている。
C:\BrowserDriver/chromedriver.exe
>selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH.
>Please see http://chromedriver.chromium.org/home
chrome driver・chromedriver.exe を置いたフォルダを、
ユーザー環境変数(または、システム環境変数)PATH へ追加すれば?
PowerShell を起動して、
$env:Path.split( ";" )
と入力して、chrome driverを置いたフォルダが、表示されるか確かめる
漏れの場合、C:\BrowserDriver と出力される
漏れは、そこにchrome driverを置いて、Ruby で使っている。
C:\BrowserDriver/chromedriver.exe
602デフォルトの名無しさん
2021/11/12(金) 10:33:02.94ID:zRf7Ym05 データ取得するのが目的ならソースのonclickにパスまんま書いてる
603デフォルトの名無しさん
2021/11/12(金) 10:37:35.81ID:0ShHeix+ >>600
selenium 3.14に変更してみましたが同様の文がでました
selenium 3.14に変更してみましたが同様の文がでました
604デフォルトの名無しさん
2021/11/12(金) 10:38:15.67ID:0ShHeix+ >>601
試してみます
試してみます
605デフォルトの名無しさん
2021/11/12(金) 11:05:42.02ID:0ShHeix+ >>601
ユーザー環境変数とシステム環境変数にPATHを追加しPowerShellでchrome driverを置いたフォルダが表示されるのを確認しました
再度python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を実行しましたが
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
と表示されます
ユーザー環境変数とシステム環境変数にPATHを追加しPowerShellでchrome driverを置いたフォルダが表示されるのを確認しました
再度python mlit_ksj_dl.py https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
を実行しましたが
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
と表示されます
606デフォルトの名無しさん
2021/11/12(金) 11:07:27.73ID:0ShHeix+607デフォルトの名無しさん
2021/11/12(金) 11:18:39.40ID:+FPwLl69 関係無いけど、昨日Python知った割にはすんなりといろんなことがよくできるな。
もともとLinuxやってた人?
もともとLinuxやってた人?
608デフォルトの名無しさん
2021/11/12(金) 11:21:32.57ID:0ShHeix+609デフォルトの名無しさん
2021/11/12(金) 11:21:59.16ID:du4vJvWd わろたw
そっちの「ソース」をどうやっていじるんだよ。
ドライバのPATH通したなら、
executable_path=DRIVER_PATH,
を削除したらどうだ?
おそらく、上記を設定するとそっちが優先されるだろう。
そっちの「ソース」をどうやっていじるんだよ。
ドライバのPATH通したなら、
executable_path=DRIVER_PATH,
を削除したらどうだ?
おそらく、上記を設定するとそっちが優先されるだろう。
610デフォルトの名無しさん
2021/11/12(金) 11:29:55.18ID:0ShHeix+611デフォルトの名無しさん
2021/11/12(金) 11:35:58.04ID:zRf7Ym05 >>606
そうサイトのHTMLソース
なのでDOM解析してもいいけど、ぶっちゃけ文字列検索で例えば
$ wget https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
$ grep -oP '/ksj/gml/data/.+zip' KsjTmplt-L03-a.html | wget --base https://nlftp.mlit.go.jp -i -
でOK
スレ的には当初の手法で成功してよかった
そうサイトのHTMLソース
なのでDOM解析してもいいけど、ぶっちゃけ文字列検索で例えば
$ wget https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-L03-a.html
$ grep -oP '/ksj/gml/data/.+zip' KsjTmplt-L03-a.html | wget --base https://nlftp.mlit.go.jp -i -
でOK
スレ的には当初の手法で成功してよかった
612デフォルトの名無しさん
2021/11/12(金) 11:56:23.24ID:+D42agk2 やりたいことがあるのは良いことなので
この調子で色んなことに挑戦しよう
この調子で色んなことに挑戦しよう
613デフォルトの名無しさん
2021/11/12(金) 13:04:57.85ID:iYNtaU8H OSのインストールのときの最後に、
カウンドダウンする表示が出てきて、
あと30秒で再起動する、今すぐのときはボタン押せ表示が出てくる。
ああいうのをpythonでやりたいんだが、参考になるものある?
自分ではWinAPIで似たようなの見つけて
from ctypes import *
windll.user32.MessageBoxTimeoutA(None,"YYY","ABC",4,0,30000)
をやってみたんだが、
カウントダウンしてくれないからちょっと違うと思ってる。
カウンドダウンする表示が出てきて、
あと30秒で再起動する、今すぐのときはボタン押せ表示が出てくる。
ああいうのをpythonでやりたいんだが、参考になるものある?
自分ではWinAPIで似たようなの見つけて
from ctypes import *
windll.user32.MessageBoxTimeoutA(None,"YYY","ABC",4,0,30000)
をやってみたんだが、
カウントダウンしてくれないからちょっと違うと思ってる。
614デフォルトの名無しさん
2021/11/12(金) 14:53:07.55ID:MdQVbi6g try:
__if x.has('A') and use :
____foo()
__else:
____bar()
except ValueError:
__bar()
こういうのって例外クラス作ってexceptでまとめて受けたほうがいいですか?
同じ内容のbar()が散乱するのって気になる?
__if x.has('A') and use :
____foo()
__else:
____bar()
except ValueError:
__bar()
こういうのって例外クラス作ってexceptでまとめて受けたほうがいいですか?
同じ内容のbar()が散乱するのって気になる?
615デフォルトの名無しさん
2021/11/12(金) 15:12:27.59ID:a3j0d+bF >>593-594
無能自慢乙w
無能自慢乙w
616デフォルトの名無しさん
2021/11/12(金) 15:56:02.93ID:GHgBaz6z 自分にしか読めないコード書いて悦に浸るとか20年前のコボラーかよ
617デフォルトの名無しさん
2021/11/12(金) 18:01:39.54ID:FV3v58XB ('A')
618デフォルトの名無しさん
2021/11/12(金) 18:16:04.90ID:1KWt8wEr >>614
bar()の意味合い次第だと思うが
引数含めて全く同じ処理をするんならelse句でraiseしてまとめてしまったほうが理解しやすいと思う
それよりどこで発生する例外をexceptで受けてるのかが曖昧なのが気になる
x.has()なのかuse()なのかfoo()なのか
bar()でもValueError発生する可能性があるのかないのかみたいな
bar()の意味合い次第だと思うが
引数含めて全く同じ処理をするんならelse句でraiseしてまとめてしまったほうが理解しやすいと思う
それよりどこで発生する例外をexceptで受けてるのかが曖昧なのが気になる
x.has()なのかuse()なのかfoo()なのか
bar()でもValueError発生する可能性があるのかないのかみたいな
619デフォルトの名無しさん
2021/11/12(金) 18:29:01.39ID:JnXYuZWY from ctypes import *
t = 30000
while(t -= 1):
windll.user32.MessageBoxW(None,"YYY","ABC",0)
t = 30000
while(t -= 1):
windll.user32.MessageBoxW(None,"YYY","ABC",0)
620デフォルトの名無しさん
2021/11/12(金) 18:55:33.33ID:a3j0d+bF621デフォルトの名無しさん
2021/11/12(金) 19:30:16.12ID:xRtlJ9/N こういうのを見るたび「Zen of Python」ってなんだったんだろうなって思ってしまうw
622デフォルトの名無しさん
2021/11/12(金) 19:54:46.68ID:JnXYuZWY >>621
Zenは原理主義じゃないから
Zenは原理主義じゃないから
623デフォルトの名無しさん
2021/11/12(金) 20:27:32.37ID:MdQVbi6g >>618
あーそうかー
has部分だけなんす、tryするの。tryは短くないとですよね
if use :
__try:
____x.has('A'):
________foo()
__except ValueError:
____use =False
if not use:
__var()
んーーーー
あーそうかー
has部分だけなんす、tryするの。tryは短くないとですよね
if use :
__try:
____x.has('A'):
________foo()
__except ValueError:
____use =False
if not use:
__var()
んーーーー
624デフォルトの名無しさん
2021/11/12(金) 20:32:02.95ID:+D42agk2 ('A')が(´A`)に見えた
625デフォルトの名無しさん
2021/11/12(金) 21:16:34.84ID:1KWt8wEr >>623
has()が例外投げる代わりにFalseを返せばいいんでは?
has()が例外投げる代わりにFalseを返せばいいんでは?
626デフォルトの名無しさん
2021/11/12(金) 21:25:29.92ID:1KWt8wEr loopのelse句はGuidoも後悔してる機能
https://mail.python.org/pipermail/python-ideas/2009-October/006157.html
https://mail.python.org/pipermail/python-ideas/2009-October/006157.html
627デフォルトの名無しさん
2021/11/13(土) 00:44:08.28ID:fE0qo4YR >>621
グイドは禅を守る為に戦ってるんだよ
グイドは禅を守る為に戦ってるんだよ
628デフォルトの名無しさん
2021/11/13(土) 01:57:43.67ID:PnBDGE+q そりゃ後悔するわな
629デフォルトの名無しさん
2021/11/13(土) 04:38:52.17ID:qYaZF+ZS Web Designing 2021年12月号
>入門〜上級まで本気で勉強したい人必携。Pythonの利点からWebビジネスで活きる仕組みまで丁寧に解説!
>入門〜上級まで本気で勉強したい人必携。Pythonの利点からWebビジネスで活きる仕組みまで丁寧に解説!
630デフォルトの名無しさん
2021/11/13(土) 17:33:14.40ID:kgYXWGHf sqlのスレのほうがいいのか迷いましたがこちらで。
psycopg2で重複させずにinsertをする方法を知りたいです。
import psycopg2
#データベースにいれるurlのリスト
url_list1 = ['url1', 'url2', 'url3', 'url4', 'url5',]
url_list2 = ['url1', 'url2', 'url6', 'url7', 'url8',]
# PostgreSQL Server へ接続してカーソルを取得
conn = psycopg2.connect('host=localhost port=5432 dbname=urlman user=urlman password=urlmaniscool')
c = conn.cursor()
#urlを保存するテーブルの作成
c.execute("""
CREATE TABLE url_table(
"url_name" text,
"count" integer default 0
)
""")
psycopg2で重複させずにinsertをする方法を知りたいです。
import psycopg2
#データベースにいれるurlのリスト
url_list1 = ['url1', 'url2', 'url3', 'url4', 'url5',]
url_list2 = ['url1', 'url2', 'url6', 'url7', 'url8',]
# PostgreSQL Server へ接続してカーソルを取得
conn = psycopg2.connect('host=localhost port=5432 dbname=urlman user=urlman password=urlmaniscool')
c = conn.cursor()
#urlを保存するテーブルの作成
c.execute("""
CREATE TABLE url_table(
"url_name" text,
"count" integer default 0
)
""")
631デフォルトの名無しさん
2021/11/13(土) 17:33:37.48ID:kgYXWGHf #url_list1のデータを挿入
for url in url_list1:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
for url in url_list1:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
632デフォルトの名無しさん
2021/11/13(土) 17:33:55.87ID:kgYXWGHf #新たに取得したurlのうち重複してないurlを挿入
#これのやりかたがよくわかりません
for url in url_list2:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
#コネクションを閉じる
conn.close()
#これのやりかたがよくわかりません
for url in url_list2:
c.execute('INSERT INTO url_table (url_name) VALUES(%s)',[url])
conn.commit()
#入ったか確認
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
print(urllist)
#コネクションを閉じる
conn.close()
633デフォルトの名無しさん
2021/11/13(土) 17:36:19.84ID:kgYXWGHf 上記でprint(urllist)の結果を['url1', 'url2', 'url3', 'url4', 'url5','url6', 'url7', 'url8']にしたいのですが、
['url1', 'url2', 'url3', 'url4', 'url5','url1', 'url2', 'url6', 'url7', 'url8']になってしまいます。
['url1', 'url2', 'url3', 'url4', 'url5','url1', 'url2', 'url6', 'url7', 'url8']になってしまいます。
634デフォルトの名無しさん
2021/11/13(土) 17:56:44.89ID:vJfZgOKN 入ったかどうかを select で確認してるんだから
入ってたら除外すればいい
入ってたら除外すればいい
635デフォルトの名無しさん
2021/11/13(土) 18:09:47.53ID:kgYXWGHf636デフォルトの名無しさん
2021/11/13(土) 18:13:41.77ID:Mehg38vB url_nameを主キーにすればいいんじゃないの
637デフォルトの名無しさん
2021/11/13(土) 18:18:47.95ID:x1CN7sQN638デフォルトの名無しさん
2021/11/13(土) 18:21:14.00ID:6FXvjqIK pythonロジックでセレクトかけてインサートするかどうか決めたり或いは
インサート文にwhere条件入れてもいい
ただ設計的なはなしでいうなら、最初から重複すべきではないなら
テーブル定義の重複NGにキー制約かけたほうがベスト
その際、インサートで主キーだぶるとdbms側で例外吐くので、例外処理のpythonロジックを追加する必要がある
規模が大きいシステムだと、最後のやり方をまず一番最初に考慮する必要がある
上二つのやり方は考え方としてはほぼ一緒で
実装としてSQL文として一筆書き出来ますよと言うはなしでしかない
範囲が限られた業務ロジックのなかでなら有効に使える
インサート文にwhere条件入れてもいい
ただ設計的なはなしでいうなら、最初から重複すべきではないなら
テーブル定義の重複NGにキー制約かけたほうがベスト
その際、インサートで主キーだぶるとdbms側で例外吐くので、例外処理のpythonロジックを追加する必要がある
規模が大きいシステムだと、最後のやり方をまず一番最初に考慮する必要がある
上二つのやり方は考え方としてはほぼ一緒で
実装としてSQL文として一筆書き出来ますよと言うはなしでしかない
範囲が限られた業務ロジックのなかでなら有効に使える
639デフォルトの名無しさん
2021/11/13(土) 18:22:14.25ID:pRVx8AyR 1件ずつexecuteせずまとめてinsertしたほうがいいよ
640デフォルトの名無しさん
2021/11/13(土) 18:27:23.32ID:6FXvjqIK641デフォルトの名無しさん
2021/11/13(土) 18:42:45.91ID:kgYXWGHf >>637の内容で入れてみます!!!
データベース勉強しはじめでよくわかってなくて申し訳ない。
upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
データベース勉強しはじめでよくわかってなくて申し訳ない。
upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
642デフォルトの名無しさん
2021/11/13(土) 18:46:41.57ID:6FXvjqIK >>641
マージ文でググればでてくるけど
じつはアレ、アップデート文書かなくてもちゃんと期待どおりに動くぞw
インサートやって、出来なければスルーしたいならOR UPDATEの部分だけ書かなければいい
マージ文でググればでてくるけど
じつはアレ、アップデート文書かなくてもちゃんと期待どおりに動くぞw
インサートやって、出来なければスルーしたいならOR UPDATEの部分だけ書かなければいい
643デフォルトの名無しさん
2021/11/13(土) 18:55:43.88ID:kgYXWGHf >>638
最初は、pythonで重複の比較して重複してないやつを入れることも考えたんです。
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
で持ってきたurllistをurl_list2と比較して重複してないやつを入れるみたいな
url_list2 = set(url_list2)-set(urllist)とかで?
でもせっかくデータベースの勉強してるのでそっちでやってみたいなって感じです
>>640
すまん、話してることが難しくてよくわからない
最初は、pythonで重複の比較して重複してないやつを入れることも考えたんです。
c.execute('SELECT url_name FROM url_table WHERE count=0')
urllist = [row[0] for row in c.fetchall()]
で持ってきたurllistをurl_list2と比較して重複してないやつを入れるみたいな
url_list2 = set(url_list2)-set(urllist)とかで?
でもせっかくデータベースの勉強してるのでそっちでやってみたいなって感じです
>>640
すまん、話してることが難しくてよくわからない
644デフォルトの名無しさん
2021/11/13(土) 18:58:26.95ID:kgYXWGHf ぽまいらなんでこんなに詳しいんだ
挫折しながらもpythonちょっとできるようになってきて、
csv辞めてデータベースに入れてみたいってなって、
postgresqlの勉強始めたら挫折して、挫折しかしてねえぞ俺
挫折しながらもpythonちょっとできるようになってきて、
csv辞めてデータベースに入れてみたいってなって、
postgresqlの勉強始めたら挫折して、挫折しかしてねえぞ俺
645デフォルトの名無しさん
2021/11/13(土) 18:59:24.51ID:kgYXWGHf >>642
これから637と642どっちも試してみるです!!
これから637と642どっちも試してみるです!!
646デフォルトの名無しさん
2021/11/13(土) 19:00:45.55ID:x1CN7sQN >>641
> upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
upsertやmergeはDBMS毎に書き方違うから調べにくいよね
まあおいおい調べていけばいいと思うよ
あと、例外出してPython側で処理するとかPostgreSQLにないマージ文とか言ってるアホは無視でいい
> upsertは調べてみたのですが、重複した場合、内容を更新するとなっていてやりたいことと違うのかと思いました
upsertやmergeはDBMS毎に書き方違うから調べにくいよね
まあおいおい調べていけばいいと思うよ
あと、例外出してPython側で処理するとかPostgreSQLにないマージ文とか言ってるアホは無視でいい
647デフォルトの名無しさん
2021/11/13(土) 19:08:25.74ID:6FXvjqIK すまんw
postgresもどうせ普通にANSI規格やろと思ったら未実装やったんかい
postgresもどうせ普通にANSI規格やろと思ったら未実装やったんかい
648デフォルトの名無しさん
2021/11/13(土) 19:16:23.51ID:kgYXWGHf 637のやりかたでできたぞです!
ありがとう。
642も試してみる
ありがとう。
642も試してみる
649デフォルトの名無しさん
2021/11/13(土) 19:27:37.20ID:6FXvjqIK650デフォルトの名無しさん
2021/11/13(土) 19:54:50.55ID:kgYXWGHf >>646,647
マージ文?ないってレスに今気づいたありがとう。
マージ文?ないってレスに今気づいたありがとう。
651デフォルトの名無しさん
2021/11/13(土) 21:24:55.56ID:wUFaz/ce652デフォルトの名無しさん
2021/11/13(土) 21:58:49.17ID:diWAL6lC >>651
import functools
d={"a":{"b":{"c":{"d":111}}}}
ary=["a","b","c","d"]
print(functools.reduce(lambda d, k: d[k], ary, d))
import functools
d={"a":{"b":{"c":{"d":111}}}}
ary=["a","b","c","d"]
print(functools.reduce(lambda d, k: d[k], ary, d))
653デフォルトの名無しさん
2021/11/13(土) 23:36:54.00ID:wUFaz/ce654デフォルトの名無しさん
2021/11/14(日) 00:17:07.01ID:MXTEWU7A 静的にキーを定義してる時点で動的とは言えないのでは
655デフォルトの名無しさん
2021/11/14(日) 01:36:39.78ID:ZInZl5Ie656デフォルトの名無しさん
2021/11/14(日) 01:47:41.70ID:MXTEWU7A >>> d={"a":{"b":{"c":{"d":111}}}}
>>> def get_value(dd): return dd if isinstance(dd, int) else get_value(list(dd.values())[0])
>>> print(get_value(d))
111
lambda使って頑張ればいける?無理かな
>>> def get_value(dd): return dd if isinstance(dd, int) else get_value(list(dd.values())[0])
>>> print(get_value(d))
111
lambda使って頑張ればいける?無理かな
657デフォルトの名無しさん
2021/11/14(日) 02:13:49.47658デフォルトの名無しさん
2021/11/14(日) 04:27:10.93ID:PiYGiFgV >>644
挫折と言うのは努力した人がするもんだ
挫折と言うのは努力した人がするもんだ
659デフォルトの名無しさん
2021/11/14(日) 08:05:21.74ID:8oLu5/jW660デフォルトの名無しさん
2021/11/14(日) 13:36:33.18ID:E00roTgy そもそも日本語が不自由っぽくて
何をしたいのかが良く判らん
何をしたいのかが良く判らん
661デフォルトの名無しさん
2021/11/14(日) 13:40:46.75ID:E00roTgy と思ったが画像観てなかったわω
関数名 search_tree とか search_node の方が良いんじゃね
関数名 search_tree とか search_node の方が良いんじゃね
662デフォルトの名無しさん
2021/11/14(日) 14:59:17.47 相手の日本語を疑う前にまず抽象化して考えた方が良いと思うわ
質問者の質問には、期待部分とコード部分が分かれてるわけで。
コード部分だけみて文字通りコードだけみて
「何したいかわからん」っていう人いるけど
全部同じ人だとしたら、ずっとネタでやってんのかと思ってたけど
返しがガチアスペっぽいんだよなぁ・・
例えば if True:とか書くと
「Trueだと当たり前じゃん、何がしたいかわからん」
みたいな返しの人いるじゃん
これまじでネタでやってんのかと思ってたけど
安定して登場してるんでどうもネタでやってないっぽい
質問者の質問には、期待部分とコード部分が分かれてるわけで。
コード部分だけみて文字通りコードだけみて
「何したいかわからん」っていう人いるけど
全部同じ人だとしたら、ずっとネタでやってんのかと思ってたけど
返しがガチアスペっぽいんだよなぁ・・
例えば if True:とか書くと
「Trueだと当たり前じゃん、何がしたいかわからん」
みたいな返しの人いるじゃん
これまじでネタでやってんのかと思ってたけど
安定して登場してるんでどうもネタでやってないっぽい
663デフォルトの名無しさん
2021/11/14(日) 15:01:10.51ID:ckxtWecQ 画像?
人の日本語にケチつけるレベルじゃないだろw
人の日本語にケチつけるレベルじゃないだろw
664デフォルトの名無しさん
2021/11/14(日) 15:06:35.08ID:L6aMQe6P665デフォルトの名無しさん
2021/11/14(日) 15:38:37.79ID:vfrWY536 それあるわ
苦労して一行にまとめたコードだが、
何をしているのかを解説するコメントが10行くらい必要になって
これやらない方がよかったなって経験がある
苦労して一行にまとめたコードだが、
何をしているのかを解説するコメントが10行くらい必要になって
これやらない方がよかったなって経験がある
666デフォルトの名無しさん
2021/11/14(日) 15:41:51.67ID:mFG9NQD5 >>644
YouTube で有名な、雑食系エンジニア・KENTA のサロンの、Ruby on Rails 初心者用コースでは、
Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース(DB)
バックエンド技術者の大前提として、基本情報処理資格も必須。
DBも、第3正規形まで入る
さらに、データベース技術者資格・ミックの本も読んだ方がよい
YouTube で有名な、雑食系エンジニア・KENTA のサロンの、Ruby on Rails 初心者用コースでは、
Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース(DB)
バックエンド技術者の大前提として、基本情報処理資格も必須。
DBも、第3正規形まで入る
さらに、データベース技術者資格・ミックの本も読んだ方がよい
667デフォルトの名無しさん
2021/11/14(日) 16:58:12.67ID:tkHjD9h1 >>657
例が悪い
例が悪い
668デフォルトの名無しさん
2021/11/14(日) 18:18:34.52ID:XvRnuZG1 質問は割とまともでも
最初に付いたレスが頓珍漢だと
頓珍漢な質問者だということにされる好例
最初に付いたレスが頓珍漢だと
頓珍漢な質問者だということにされる好例
669デフォルトの名無しさん
2021/11/14(日) 18:40:23.82ID:+PJrsOCi ただ絡みてえだけのバカが数人常駐しとるでな
670デフォルトの名無しさん
2021/11/14(日) 19:22:31.60 >>667
コード例は関係ない
>>651質問者の期待は
>辞書のキー名から動的に値を取得したい
であって
「キー名a,b,c,d順の最期の値を取得したい」
ではない
質問者の期待とコードを見た上で抽象化すれば
「あー、search_dict()にselectors(キー名の入ったリスト)入れて検索したいのね」
「dやaryが他の場合も対応しつつ」
ってのが一般回答者なら意識しなくてもわかる
「コードが{"a":{"b":{"c":{"d":111}}}}ってなってる!!
しかも出力が111だ!
さらには["a","b","c","d"] と静的に定義されてる!!
いやいやそもそもa→b→c→dの順で検索するコード書けばいいじゃねえか!!」
とはならんだろ・・
だからアスペっぽいなぁと感じる所以
で、ネタならただの荒らしなんでそれはそれでいいが
ネタじゃないっぽいガチアスペっぽいやつがいるんだよな
コード例は関係ない
>>651質問者の期待は
>辞書のキー名から動的に値を取得したい
であって
「キー名a,b,c,d順の最期の値を取得したい」
ではない
質問者の期待とコードを見た上で抽象化すれば
「あー、search_dict()にselectors(キー名の入ったリスト)入れて検索したいのね」
「dやaryが他の場合も対応しつつ」
ってのが一般回答者なら意識しなくてもわかる
「コードが{"a":{"b":{"c":{"d":111}}}}ってなってる!!
しかも出力が111だ!
さらには["a","b","c","d"] と静的に定義されてる!!
いやいやそもそもa→b→c→dの順で検索するコード書けばいいじゃねえか!!」
とはならんだろ・・
だからアスペっぽいなぁと感じる所以
で、ネタならただの荒らしなんでそれはそれでいいが
ネタじゃないっぽいガチアスペっぽいやつがいるんだよな
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 を返せばいいんだな
って言うようにずらしながら比較していくよね
って言うところからやればいいんじゃね
772デフォルトの名無しさん
2021/11/20(土) 23:00:40.68ID:W0+y3mk4773デフォルトの名無しさん
2021/11/20(土) 23:03:09.18ID:W0+y3mk4 まあ、スライスがいい回答だとは思わないけど
小学校の教材ならたぶん0点つけてくる教師がいる回答
小学校の教材ならたぶん0点つけてくる教師がいる回答
774デフォルトの名無しさん
2021/11/21(日) 00:27:58.17ID:QD7EEWWT 構文などの書き方が分からないってなら仕方無いと思うけど
この程度のアルゴリズムを思い付けないってならヤバいだろ
池沼疑われるレベル
この程度のアルゴリズムを思い付けないってならヤバいだろ
池沼疑われるレベル
775デフォルトの名無しさん
2021/11/21(日) 00:38:15.47ID:dCta8OJm アルゴリズムとか使わないから
知能検査は別スレだろ
知能検査は別スレだろ
776デフォルトの名無しさん
2021/11/21(日) 01:16:28.56ID:L8vXU9lo KMP法とかsuffix arrayの話?
777デフォルトの名無しさん
2021/11/21(日) 08:44:34.82ID:1b0LVSEh778デフォルトの名無しさん
2021/11/21(日) 09:58:00.66ID:4YV1JWdz アスペって生き辛そう…
779デフォルトの名無しさん
2021/11/21(日) 11:02:45.04ID:6VEnDrqa def simple_match(str1, str2):
____for idx, _ in enumerate(str1):
________if str1[idx:idx+len(str2)] == str2:
____________return idx
____return -1
____for idx, _ in enumerate(str1):
________if str1[idx:idx+len(str2)] == str2:
____________return idx
____return -1
780デフォルトの名無しさん
2021/11/21(日) 11:15:39.23ID:6VEnDrqa さらに速く高機能にした
def simple_match(str1, str2):
____len_str1 = len(str1)
____len_str2 = len(str2)
____if ret := [idx for idx in range(len_str1) if str1[idx:idx+len_str2]==str2]:
________return ret
____else:
________return -1
simple_match('location', 'cat')
[2]
simple_match('soccer', 'cat')
-1
simple_match('locationcat', 'cat')
[2, 8]
def simple_match(str1, str2):
____len_str1 = len(str1)
____len_str2 = len(str2)
____if ret := [idx for idx in range(len_str1) if str1[idx:idx+len_str2]==str2]:
________return ret
____else:
________return -1
simple_match('location', 'cat')
[2]
simple_match('soccer', 'cat')
-1
simple_match('locationcat', 'cat')
[2, 8]
781デフォルトの名無しさん
2021/11/21(日) 12:37:43.77ID:jllQNQOR __getitem__も__iter__も文字列のメソッドなのでその回答だと0点ですね
782デフォルトの名無しさん
2021/11/21(日) 12:40:01.89ID:jllQNQOR __len__も使ってたか
783デフォルトの名無しさん
2021/11/21(日) 15:17:06.09ID:BLVHorEN 列"B1FD24"は存在しませんになって行のデータが取得できません。
解決策おしえてください。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=goya1395CCC')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
"A_code" text unique,
"weight(g)" integer,
"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
d = [row for row in c.fetchall()]
print(d)
解決策おしえてください。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=goya1395CCC')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
"A_code" text unique,
"weight(g)" integer,
"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
d = [row for row in c.fetchall()]
print(d)
784デフォルトの名無しさん
2021/11/21(日) 15:24:19.44ID:BLVHorEN 行データを一行ずつ取得したいのですが、できませんでした。
書き込み時にインデントが消えてしまいましたので再度投下します。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=ksfdkjwoe')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
____"A_code" text unique,
____"weight(g)" integer,
____"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
____c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
____c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
____d = [row for row in c.fetchall()]
____print(d)
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
の部分をc.execute(f'SELECT * FROM info_test WHERE "weight(g)"=566')にすると行データを取れるのでどうしていいかわかりません
書き込み時にインデントが消えてしまいましたので再度投下します。
import psycopg2
conn = psycopg2.connect('host=localhost port=5432 dbname=goya user=goya password=ksfdkjwoe')
c = conn.cursor()
#練習用のテーブル作成
c.execute('''
CREATE TABLE IF NOT EXISTS info_test(
____"A_code" text unique,
____"weight(g)" integer,
____"item_name" text
)
''')
data = [("B1FD24",int(566),"ハンマー"),("B6DE49",None,"空気"),("B4XB21",int(823),"米")]
for d in data:
____c.execute(f'INSERT INTO info_test ("A_code","weight(g)","item_name") VALUES(%s,%s,%s) on conflict ("A_code") do nothing',d)
conn.commit()
#練習
c.execute(f'SELECT "A_code" FROM info_test')
a_code_list = [row[0] for row in c.fetchall()]
for a_code in a_code_list:
____c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
____d = [row for row in c.fetchall()]
____print(d)
c.execute(f'SELECT * FROM info_test WHERE "A_code"="{a_code}"')
の部分をc.execute(f'SELECT * FROM info_test WHERE "weight(g)"=566')にすると行データを取れるのでどうしていいかわかりません
785デフォルトの名無しさん
2021/11/21(日) 15:36:48.25ID:uiA0IfT6 a_codeを%sにすりゃいいだけちゃう
fと%sの使いどころの問題では
fと%sの使いどころの問題では
786デフォルトの名無しさん
2021/11/21(日) 15:43:34.67ID:BLVHorEN787デフォルトの名無しさん
2021/11/21(日) 16:48:00.01ID:BwaLJwgU >>754
df["count"].astype(long)
df["count"].astype(long)
788デフォルトの名無しさん
2021/11/21(日) 17:07:50.01ID:BwaLJwgU "weight(g)"=None
になってる行があるから
insert に失敗してるんだろ
になってる行があるから
insert に失敗してるんだろ
789デフォルトの名無しさん
2021/11/21(日) 17:18:17.35ID:BLVHorEN >>788
#練習の上の行に下記を入れると表示されるのでinsertは成功してると思います
import pandas as pd
df = pd.read_sql(sql=f'SELECT * FROM info_test;', con=conn)
print(df)
A_code weight(g) item_name
0 B1FD24 566.0 ハンマー
1 B6DE49 NaN 空気
2 B4XB21 823.0 米
#練習の上の行に下記を入れると表示されるのでinsertは成功してると思います
import pandas as pd
df = pd.read_sql(sql=f'SELECT * FROM info_test;', con=conn)
print(df)
A_code weight(g) item_name
0 B1FD24 566.0 ハンマー
1 B6DE49 NaN 空気
2 B4XB21 823.0 米
790デフォルトの名無しさん
2021/11/21(日) 17:53:07.18ID:pk+QZJjo f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
f"SELECT * FROM info_test WHERE \"A_code\"='{a_code}'"
SQL文字列リテラルはSQL標準ではシングルクォート。
f"SELECT * FROM info_test WHERE \"A_code\"='{a_code}'"
SQL文字列リテラルはSQL標準ではシングルクォート。
791デフォルトの名無しさん
2021/11/21(日) 18:18:28.27ID:szj4saah Warning
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
f-stringも同じこと
Never, never, NEVER use Python string concatenation (+) or string parameters interpolation (%) to pass variables to a SQL query string. Not even at gunpoint.
f-stringも同じこと
792デフォルトの名無しさん
2021/11/21(日) 18:22:31.92ID:BLVHorEN793デフォルトの名無しさん
2021/11/21(日) 19:25:01.44ID:MSJBJTi1 >>791 をスルーするのが今日の流れっぽい
794デフォルトの名無しさん
2021/11/21(日) 19:40:20.97ID:coVM5S7R 実験や習作だと思うけどprepared statement使うのが筋だし
f-stringで教えるアホは業界去った方がいい
f-stringで教えるアホは業界去った方がいい
795デフォルトの名無しさん
2021/11/21(日) 20:19:01.83ID:BLVHorEN すまん、791はwarningって書いてあったからよくみてなかった。
初心者すぎてよくわからんのですが、f-stringとprepared statementってどっちがどっちですか?
@f"{a}"のやつ
A(%),aのやつ
結果が同じでも処理に違いがある感じですか?
初心者すぎてよくわからんのですが、f-stringとprepared statementってどっちがどっちですか?
@f"{a}"のやつ
A(%),aのやつ
結果が同じでも処理に違いがある感じですか?
796デフォルトの名無しさん
2021/11/21(日) 20:23:30.97ID:BLVHorEN 791google翻訳してみましたが、よくわからん。
警告
変数をSQLクエリ文字列に渡すために、
Python文字列連結(+)または文字列パラメーター補間(%)を使用しないでください。
銃を突きつけても。
(%),aではなくf"{a}"がいいですよってこと?
警告
変数をSQLクエリ文字列に渡すために、
Python文字列連結(+)または文字列パラメーター補間(%)を使用しないでください。
銃を突きつけても。
(%),aではなくf"{a}"がいいですよってこと?
797デフォルトの名無しさん
2021/11/21(日) 20:45:52.97ID:szj4saah798デフォルトの名無しさん
2021/11/21(日) 20:48:25.93ID:BLVHorEN799デフォルトの名無しさん
2021/11/21(日) 21:16:22.28ID:zYUtuXs9 基本、Ruby on Rails などのウェブ開発では、
SQL 文を、文字列で組み立ててはいけない!
ユーザーが危険な文字列を送ってきて、SQL injection しようとするから
必ず、危険な文字列をエラーにするように、
place holder という書き方をしないといけない!
フレームワークを使った、ウェブ開発の基本
SQL 文を、文字列で組み立ててはいけない!
ユーザーが危険な文字列を送ってきて、SQL injection しようとするから
必ず、危険な文字列をエラーにするように、
place holder という書き方をしないといけない!
フレームワークを使った、ウェブ開発の基本
800デフォルトの名無しさん
2021/11/21(日) 21:21:08.30ID:coVM5S7R >>795
@もAもprepared statementではないけどもAが正解
Aでpsycopg2が行っているような処理をRDBMS(PostgreSQL)側で行うのがprepared statements
https://www.psycopg.org/psycopg3/docs/advanced/prepare.html#prepared-statements
psycopg3になれば勝手にやってくれるみたい
@もAもprepared statementではないけどもAが正解
Aでpsycopg2が行っているような処理をRDBMS(PostgreSQL)側で行うのがprepared statements
https://www.psycopg.org/psycopg3/docs/advanced/prepare.html#prepared-statements
psycopg3になれば勝手にやってくれるみたい
801799
2021/11/21(日) 21:44:07.52ID:zYUtuXs9 例えば、Ruby では、
変数a を使って、上の2つのように文字列を連結させたり、
式展開してから埋め込んだりしても、
変数aの内容をユーザーからもらった、危険な文字列の場合、SQL injection される
例えば、WHERE (id = 1 OR 1 = 1)なら、
true となるので、すべてのレコードが取得される!
それを最後のように、place holder, ? を使えば、
危険な文字列をエラーにできる
こういうやり方が、Ruby on Rails などのフレームワークを使った、ウェブ開発の基本
id = '1 OR 1 = 1'
User.where( "id = " + id )
User.where( "id = #{id}" )
User.where( "id = ?", id )
変数a を使って、上の2つのように文字列を連結させたり、
式展開してから埋め込んだりしても、
変数aの内容をユーザーからもらった、危険な文字列の場合、SQL injection される
例えば、WHERE (id = 1 OR 1 = 1)なら、
true となるので、すべてのレコードが取得される!
それを最後のように、place holder, ? を使えば、
危険な文字列をエラーにできる
こういうやり方が、Ruby on Rails などのフレームワークを使った、ウェブ開発の基本
id = '1 OR 1 = 1'
User.where( "id = " + id )
User.where( "id = #{id}" )
User.where( "id = ?", id )
802デフォルトの名無しさん
2021/11/21(日) 21:46:31.38ID:BLVHorEN 調べてきたけど、プレースホルダーを使わないと攻撃されたとき危険ってのがわかったわ。
ちなみに↓をf''使わずに(%)をつかって書くとどうなるんや?
f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
ちなみに↓をf''使わずに(%)をつかって書くとどうなるんや?
f'SELECT * FROM info_test WHERE "A_code"=\'{a_code}\''
804デフォルトの名無しさん
2021/11/21(日) 21:48:35.16ID:6VEnDrqa で、結局どう書くのがベストなの? こう?
c.execute("SELECT * FROM info_test WHERE A_code=%s", (a_code,))
テーブル作成とかの"A_code"って、ダブルクォーテーションいらないんじゃない?
ttps://www.curict.com/item/20/20f70b7.html
とか見るとダブルクォーテーションで囲ってないよね
c.execute("SELECT * FROM info_test WHERE A_code=%s", (a_code,))
テーブル作成とかの"A_code"って、ダブルクォーテーションいらないんじゃない?
ttps://www.curict.com/item/20/20f70b7.html
とか見るとダブルクォーテーションで囲ってないよね
805デフォルトの名無しさん
2021/11/21(日) 21:51:23.16ID:BLVHorEN 大文字の時は括らなきゃいけないのかと思ってたわ
806デフォルトの名無しさん
2021/11/21(日) 22:20:00.67ID:EfkKXMOb > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
ゲリ便をじゅるじゅると
うまそうに食ってるw
807デフォルトの名無しさん
2021/11/21(日) 22:30:00.92ID:nzk7IXVa808デフォルトの名無しさん
2021/11/21(日) 23:10:08.06ID:i/lteX3h809デフォルトの名無しさん
2021/11/22(月) 16:55:05.56ID:axkd8Lua810デフォルトの名無しさん
2021/11/23(火) 12:20:48.24ID:HWlCU4L+ 3.10に変えたらscikit-learnがインストール出来なくなった
まあそう頻繁に使うライブラリでもないけど
まあそう頻繁に使うライブラリでもないけど
811デフォルトの名無しさん
2021/11/23(火) 19:50:40.69 assertの使いどころがぐぐってみましたがいまいちピンと来ません
812デフォルトの名無しさん
2021/11/23(火) 20:09:45.21ID:HurF++pM813デフォルトの名無しさん
2021/11/23(火) 20:42:03.75ID:mB/cMOfZ あくまで開発中の考慮漏れなんかを防ぐ用途なので
ランタイムエラーにしたいならassertの出番ではない
ランタイムエラーにしたいならassertの出番ではない
814デフォルトの名無しさん
2021/11/23(火) 22:55:20.18ID:bS29UIDJ815デフォルトの名無しさん
2021/11/23(火) 22:55:45.59ID:xEN2JBOU var : Optional[str] =None
on_btn():
__assert var
__var処理
みたいな。pylanceとかに怒られない
varにモノ入ってっからbtnが押されるに決まってんだろうがっていうとき
on_btn():
__if not var:
____return
__else:
____var処理
て書くのがバカらしいので
on_btn():
__assert var
__var処理
みたいな。pylanceとかに怒られない
varにモノ入ってっからbtnが押されるに決まってんだろうがっていうとき
on_btn():
__if not var:
____return
__else:
____var処理
て書くのがバカらしいので
816デフォルトの名無しさん
2021/11/24(水) 03:25:37.66ID:Q5JPayEq >>812
絶対壊れる未来しか観えない
絶対壊れる未来しか観えない
817デフォルトの名無しさん
2021/11/24(水) 03:27:08.47ID:Q5JPayEq818デフォルトの名無しさん
2021/11/24(水) 08:02:23.61ID:jO3RIx+f 1000行のプログラムって初心者からすると途方もない規模のプログラムに感じるけど、慣れた人からすると当たり前な規模なのかな
819デフォルトの名無しさん
2021/11/24(水) 10:22:49.14ID:9k7x+oD0 一本の文脈でプログラム書こうとすると人間は必ずワーキングメモリの限界がくるから、そんなもんだよ
自分の場合、そうやって場当たり的に書けるのは1000行くらいが限界だな
大きなプログラムを書くには、プログラムというものをトップダウンに考えて、モジュールや関数に適宜分割していくことが必要
そうすることで枝葉の細かい部分を忘れてワーキングメモリを節約できる
特にPythonの場合はJupyter使って勉強する人が多いから、プログラムの分割が身に着きにくいんだよ
自分の場合、そうやって場当たり的に書けるのは1000行くらいが限界だな
大きなプログラムを書くには、プログラムというものをトップダウンに考えて、モジュールや関数に適宜分割していくことが必要
そうすることで枝葉の細かい部分を忘れてワーキングメモリを節約できる
特にPythonの場合はJupyter使って勉強する人が多いから、プログラムの分割が身に着きにくいんだよ
820デフォルトの名無しさん
2021/11/24(水) 10:39:50.61ID:kXzWnsgO821デフォルトの名無しさん
2021/11/24(水) 10:42:31.59ID:kXzWnsgO >819
Jupyterは慣れた人が楽するためには良いけど
あれで勉強するのは限界もあるな
Jupyterが悪いとは言ってない
あれがPython世界の全てだと勘違い認識しないようにするのが大事
Jupyterは慣れた人が楽するためには良いけど
あれで勉強するのは限界もあるな
Jupyterが悪いとは言ってない
あれがPython世界の全てだと勘違い認識しないようにするのが大事
822デフォルトの名無しさん
2021/11/24(水) 11:34:24.45ID:q9kQZP30 Jupyterなんか、ここ5年くらいてpythonはいった人の一部がつかってるだけで、python流行り出した2005年頃から利用してるpython使ってる組み合わせは今もあまり使ってないでしょ。
823デフォルトの名無しさん
2021/11/24(水) 16:15:21.36ID:uoHN98GH 今日中にあるサイトのスクレイピングコードを書かないといけなくなりました
しかしスクレイピングはしたことがありません
どのように書くのがいいのでしょうか?
恐らくpostであろうformっぽい部分にデータを入れて検索すると色々と表示される感じです
djangoだろうと思います
インプット・アウトプットが特にイメージできません
しかしスクレイピングはしたことがありません
どのように書くのがいいのでしょうか?
恐らくpostであろうformっぽい部分にデータを入れて検索すると色々と表示される感じです
djangoだろうと思います
インプット・アウトプットが特にイメージできません
824デフォルトの名無しさん
2021/11/24(水) 16:59:36.29ID:SENfXVh3 今日中には無理だから期限延ばしてもらうしかないね
825デフォルトの名無しさん
2021/11/24(水) 17:33:42.69 まぁresponseがjsonなのかhtmlなのかによるけど
後者ならbeautifulsoup4(他にもあるけど安定してるのはなんだかんだでbs4)
スクレイピングはrequestsとbs4だけでどうにかなることが大半
なんのデータを扱うかによるが時系列やら行列計算するならならpandas,numpyも必須
データベースに出力と言うなら、djangoで何使われているかは知らんが
sqlite3のORMのsqlalchemyで事足りることが大半
レスから察するにインプットは、
forms.pyだかview.pyだかに
クエリかリクエストボディ(get/post)受け取る部分書いて
スクレイピングするコードをclass Command(BaseCommand):形式で書いて
適当に名前つけてpyファイルにして
management>commandsディレクトリに放り込んで終い。
で、view.pyで受け取ったパラメータをそのCommandに投げて
結果をtemplatesに渡して表示する感じじゃなかたっけ
後者ならbeautifulsoup4(他にもあるけど安定してるのはなんだかんだでbs4)
スクレイピングはrequestsとbs4だけでどうにかなることが大半
なんのデータを扱うかによるが時系列やら行列計算するならならpandas,numpyも必須
データベースに出力と言うなら、djangoで何使われているかは知らんが
sqlite3のORMのsqlalchemyで事足りることが大半
レスから察するにインプットは、
forms.pyだかview.pyだかに
クエリかリクエストボディ(get/post)受け取る部分書いて
スクレイピングするコードをclass Command(BaseCommand):形式で書いて
適当に名前つけてpyファイルにして
management>commandsディレクトリに放り込んで終い。
で、view.pyで受け取ったパラメータをそのCommandに投げて
結果をtemplatesに渡して表示する感じじゃなかたっけ
826デフォルトの名無しさん
2021/11/24(水) 17:40:18.98 >management>commandsディレクトリに放り込んで終い。
コマンド使わないなら↑これは必要なかったわ
全部 views.pyに書いても分けても好きにしたらいいと思う
コマンド使わないなら↑これは必要なかったわ
全部 views.pyに書いても分けても好きにしたらいいと思う
827デフォルトの名無しさん
2021/11/24(水) 19:16:52.56ID:xsp2scS+ ぼくも3ヶ月くらい前からスクレイピングの勉強始めてようやくほしいデータを物怖じせず取れるようになりましたが、自分はseleniumとlxmlに落ち着きました。
requestsだとうまく取れないページがあったり、scrapyだと非同期処理?で爆速過ぎてサイトから速攻banされたりしました
サイトによってはpyppeteerやseleniumじゃないととりづらいとこもあるのでselenium+beautifulsoup or lxmlをおすすめしたい
requestsだとうまく取れないページがあったり、scrapyだと非同期処理?で爆速過ぎてサイトから速攻banされたりしました
サイトによってはpyppeteerやseleniumじゃないととりづらいとこもあるのでselenium+beautifulsoup or lxmlをおすすめしたい
828デフォルトの名無しさん
2021/11/24(水) 20:53:24.72ID:ldCMVu13 私はrequestsとseleniumと正規表現ですね
829デフォルトの名無しさん
2021/11/25(木) 01:42:23.64ID:nh0ZEMSE Ruby では、Nokogiri, Selenium WebDriver, Capybara
Nokogiriには、wait が無いから、
5ch みたいに、空のHTML を送ってきてから、
Ajax でページ内容を取得するようなサイトでは、要素が取れないかも
要素が出現するまで確実に待つには、Seleniumを使う
Nokogiriには、wait が無いから、
5ch みたいに、空のHTML を送ってきてから、
Ajax でページ内容を取得するようなサイトでは、要素が取れないかも
要素が出現するまで確実に待つには、Seleniumを使う
830デフォルトの名無しさん
2021/11/25(木) 02:33:04.16ID:Xt1TOEJK NokogiriがインストールできないってQiitaではクッソほど量産された記事ですよね
ガイジ言語には本当にお似合いだと思った
ガイジ言語には本当にお似合いだと思った
831デフォルトの名無しさん
2021/11/25(木) 05:20:37.28ID:xhC4D+V9 確率がpの宝くじを当たるまで引いて、当たるのにかかった回数を記録。それをn回繰り返し(100万回とか)、最後はそれをpyplotでヒストグラムにしようとしています
回数を記録する配列はndarrayで作り、そこにnp.concatenateで回数を追記していったのですが、どうもこれが処理が重いのか時間がものすごくかかる…
サイズが100万の配列を作る以外に思いつかないのだけど、このやり方は良くないのでしょうか?
回数を記録する配列はndarrayで作り、そこにnp.concatenateで回数を追記していったのですが、どうもこれが処理が重いのか時間がものすごくかかる…
サイズが100万の配列を作る以外に思いつかないのだけど、このやり方は良くないのでしょうか?
832デフォルトの名無しさん
2021/11/25(木) 07:58:41.89ID:ysfwc6h6 ndarrayは固定配列。だから、appendなどサイズを変更する処理は考えなしにしてはいけない。
833デフォルトの名無しさん
2021/11/25(木) 09:32:49.11ID:1DZpA8jw 例えばM回引いてk回当たったとするじゃん?
するとk回の「当たるまで引いた」データが取れるわけだから、律儀に「当たるまで引く」をn回繰り返す必要はない
するとk回の「当たるまで引いた」データが取れるわけだから、律儀に「当たるまで引く」をn回繰り返す必要はない
834デフォルトの名無しさん
2021/11/25(木) 09:43:35.46ID:hXWvHSdH 擬似乱数だろうからシードをどう考えるかだな
835デフォルトの名無しさん
2021/11/25(木) 09:44:51.66ID:r5Heuy4P concat は無駄が多いので
予め最大の大きさが判ってるならその大きさで確保しておくとか
最大が判らないなら concat せずに list で繋ぐ方が速い
予め最大の大きさが判ってるならその大きさで確保しておくとか
最大が判らないなら concat せずに list で繋ぐ方が速い
836デフォルトの名無しさん
2021/11/25(木) 10:37:40.50ID:D93Sr9qt Counterとかで保持したほうがいいんじゃねーの(ハナホジ)
837デフォルトの名無しさん
2021/11/25(木) 10:42:23.98ID:jB6AdxeI ヒストグラムの範囲毎に予め変数作って当たりが出る度に直接そこに+1してカウントして行けば
100万個の「当たるのにかかった回数」を全て保持する必要が無いと思うが
何か他にデータ残したい理由があるの?
100万個の「当たるのにかかった回数」を全て保持する必要が無いと思うが
何か他にデータ残したい理由があるの?
838デフォルトの名無しさん
2021/11/25(木) 12:47:25.27ID:+wzV+gbn 確率の収束をマジで計算しちゃうと何したって遅いよ
0.01%当たるまで を100万回
リストに数字appendするの100万回
それぞれやってみたらいい
後者は1秒とかでしょう
前者は1万回試行のレベルでも1分くらいかかるべ
0.01%当たるまで を100万回
リストに数字appendするの100万回
それぞれやってみたらいい
後者は1秒とかでしょう
前者は1万回試行のレベルでも1分くらいかかるべ
839デフォルトの名無しさん
2021/11/25(木) 13:40:02.87ID:bDvmxdn9 最近ピストグラム流行ってるな
840デフォルトの名無しさん
2021/11/25(木) 15:31:05.54ID:fS0drys5 確率はscipy.stats.berniulli.rvs(p)で求めてたけど、確かにこれを100万回繰り返すのに時間かかってますね…
リストにappendは100万回でも一瞬でした
しかし、これ以外で確率求める関数なさそうだし困ったな…
ありがとうございました
リストにappendは100万回でも一瞬でした
しかし、これ以外で確率求める関数なさそうだし困ったな…
ありがとうございました
841デフォルトの名無しさん
2021/11/25(木) 19:42:57.03ID:37B47xca pythonで生成したhtml文字列を、
一時ファイルを経由せず直接ブラウザに渡す方法ある?
webbrowserモジュールではURIしか渡せないようなので
一時ファイルを経由せず直接ブラウザに渡す方法ある?
webbrowserモジュールではURIしか渡せないようなので
842デフォルトの名無しさん
2021/11/25(木) 19:53:24.24ID:mqEOsm/5 >>840
先に固定長確保すればさらに速いよ
先に固定長確保すればさらに速いよ
843デフォルトの名無しさん
2021/11/25(木) 19:54:52.38ID:0uwmxbI7844デフォルトの名無しさん
2021/11/25(木) 20:21:07.43ID:0YPlXaMU >>842
l = [0] *1000000
for i in range(1000000):
__l[i] = i
l = []
for i in range(1000000):
__l.append(i)
誤差じゃね?
l = [0] *1000000
for i in range(1000000):
__l[i] = i
l = []
for i in range(1000000):
__l.append(i)
誤差じゃね?
845デフォルトの名無しさん
2021/11/25(木) 21:11:00.95ID:yEJnYkB5 文字列に/dとxと.とcm以外の文字が含まれている場合にエラーが発生するように死体です。
moziretu_list = ["36.4x27.5x18.8cm","風量調整なし","36.4x27.5x18.8cm","Size:140型(14x14cm);Color:【No.01】2枚セット"]
for moziretu in moziretu_list:
____try:
________print(moziretu)
________#moziretuに/dとxと.とcm以外の文字が含まれている場合にエラー
________if re.search(r"正規表現の書き方がよくわからないです",moziretu):
____________raise ValueError
________print("必要な文字列の取得に成功しました")
____except:
________print("文字列に/dとxと.とcm以外の文字が含まれています")
moziretu_listの2つめと4つめの要素の時にエラーが発生するようにしたいのですが、
正規表現の書き方がよくわからないです
moziretu_list = ["36.4x27.5x18.8cm","風量調整なし","36.4x27.5x18.8cm","Size:140型(14x14cm);Color:【No.01】2枚セット"]
for moziretu in moziretu_list:
____try:
________print(moziretu)
________#moziretuに/dとxと.とcm以外の文字が含まれている場合にエラー
________if re.search(r"正規表現の書き方がよくわからないです",moziretu):
____________raise ValueError
________print("必要な文字列の取得に成功しました")
____except:
________print("文字列に/dとxと.とcm以外の文字が含まれています")
moziretu_listの2つめと4つめの要素の時にエラーが発生するようにしたいのですが、
正規表現の書き方がよくわからないです
846デフォルトの名無しさん
2021/11/25(木) 21:26:14.65ID:rnpiht7q847デフォルトの名無しさん
2021/11/25(木) 21:43:53.79ID:fTQ24d4a re.match('^([x.\d]|cm)+$',
848デフォルトの名無しさん
2021/11/25(木) 21:58:41.55ID:yEJnYkB5 >>847
だと4つめの"Size:140型(14x14cm);Color:【No.01】2枚セット"がとれてしまいます。
だと4つめの"Size:140型(14x14cm);Color:【No.01】2枚セット"がとれてしまいます。
849デフォルトの名無しさん
2021/11/25(木) 22:03:38.00ID:yEJnYkB5 すみません。matchからsearchにしたら行けました!!
850デフォルトの名無しさん
2021/11/25(木) 23:05:36.84ID:37B47xca >>843,841
レスサンクス
鯖を使わず直接やりたかったので、data URIでやってみた
プレーンのままだと、改行処理とか面倒くさいので、
base64でエンコードしてやってみたらうまくいった
ただ、webbrowserモジュールを使うとWindows OSがこのプロトコルで開くことを許可しないので、
subprocess.Popenを使ってブラウザ指定(Firefox)
そしたら、ブラウザ自体もこのプロトコルで開くことがデフォルトではできないので
設定を変更して、なんとか一時ファイル経由と同じ状態で開くことができた
文字化けさせないようにするのがけっこう大変だった
ただ、ブラウザの設定をいじってまで直接やりとりに拘る必要もないのかなとも思ったよ
レスサンクス
鯖を使わず直接やりたかったので、data URIでやってみた
プレーンのままだと、改行処理とか面倒くさいので、
base64でエンコードしてやってみたらうまくいった
ただ、webbrowserモジュールを使うとWindows OSがこのプロトコルで開くことを許可しないので、
subprocess.Popenを使ってブラウザ指定(Firefox)
そしたら、ブラウザ自体もこのプロトコルで開くことがデフォルトではできないので
設定を変更して、なんとか一時ファイル経由と同じ状態で開くことができた
文字化けさせないようにするのがけっこう大変だった
ただ、ブラウザの設定をいじってまで直接やりとりに拘る必要もないのかなとも思ったよ
851デフォルトの名無しさん
2021/11/25(木) 23:06:38.41ID:37B47xca852デフォルトの名無しさん
2021/11/26(金) 00:31:18.70ID:o6j9/HV6853デフォルトの名無しさん
2021/11/26(金) 02:22:22.94ID:IsarZHns 細かいけど並列計算で最後に結合するのってちゃんどi.i.d.になるんかな?
854デフォルトの名無しさん
2021/11/26(金) 03:43:17.12ID:o6j9/HV6 乱数のタネを乱数にしてペッ別に始めればばiid
どっちにしても疑似乱数を使うとiidは崩れる
「疑似」だけに
問題はそこまで厳密性を求めるかどうか
どっちにしても疑似乱数を使うとiidは崩れる
「疑似」だけに
問題はそこまで厳密性を求めるかどうか
855デフォルトの名無しさん
2021/11/26(金) 11:18:00.20ID:JcLIlhiK 文章が崩れてるどw
意味は分かるけど
意味は分かるけど
856デフォルトの名無しさん
2021/11/26(金) 11:34:14.13ID:TzeTaFZ5 シードを乱数にしたら重複する可能性あるから
UUID的なやつか同時実行しない前提で時刻から生成しないと
UUID的なやつか同時実行しない前提で時刻から生成しないと
857デフォルトの名無しさん
2021/11/26(金) 19:52:15.77ID:o6j9/HV6858デフォルトの名無しさん
2021/11/27(土) 15:05:57.62ID:x+qkOb0S classて使ったほうがいいんですか?
859デフォルトの名無しさん
2021/11/27(土) 16:00:53.09ID:Ys/oz9Wu intもlistもclassだから使わずにPythonプログラム書けるならやってみろ
860デフォルトの名無しさん
2021/11/27(土) 23:41:50.77ID:x+qkOb0S 自分でclassを作ると何が嬉しいんですか?
861デフォルトの名無しさん
2021/11/28(日) 00:22:44.41ID:UCS6EEgA プログラムが大きくなったとき
管理しやすくなる
再利用もしやすくなる
ちゃんとclassを設計すればだが
管理しやすくなる
再利用もしやすくなる
ちゃんとclassを設計すればだが
862デフォルトの名無しさん
2021/11/28(日) 01:00:32.66ID:5wT8eQUv >>861
サンクス(´・ω・`)
サンクス(´・ω・`)
863デフォルトの名無しさん
2021/11/28(日) 01:31:06.42ID:YY1hk1pY >>862
似たようなメソッドで機能が違うもの作るとき
少し出すだけで作れるとか
敵と自機をキャラというクラスに持たせて
画面表示や移動という共通部分は一度に設定できてそうじゃない部分を
簡単に分けられる
んで全体的少しずつ変えたい時に
一箇所変えれば両方変えられる
みたいな
似たようなメソッドで機能が違うもの作るとき
少し出すだけで作れるとか
敵と自機をキャラというクラスに持たせて
画面表示や移動という共通部分は一度に設定できてそうじゃない部分を
簡単に分けられる
んで全体的少しずつ変えたい時に
一箇所変えれば両方変えられる
みたいな
864デフォルトの名無しさん
2021/11/28(日) 07:21:31.61ID:nfhtQiKt my_literal_eval(str):
__try
____return ast.literal_eval(str)
__except SyntaxError:
____return str
samples = my_literal_eval(str) #辞書
samples.keys()
としたときに、型チェッカーがkeys()あるかわがんね!!って怒るんですが
どこで辞書型の宣言をしたらいいですか?
__try
____return ast.literal_eval(str)
__except SyntaxError:
____return str
samples = my_literal_eval(str) #辞書
samples.keys()
としたときに、型チェッカーがkeys()あるかわがんね!!って怒るんですが
どこで辞書型の宣言をしたらいいですか?
865デフォルトの名無しさん
2021/11/28(日) 08:44:01.49ID:ieKXg54N isinstance(dict, samples)でガードすれば通るんでないか
866デフォルトの名無しさん
2021/11/28(日) 08:46:26.48ID:TS21VHmH867デフォルトの名無しさん
2021/11/28(日) 08:51:01.10ID:Ll5PsJvS 関数間で状態を保持したいときだけクラスを使えばいい
868デフォルトの名無しさん
2021/11/28(日) 09:34:35.03ID:/NNHm8tx 令和のstaticおじさん現る
869デフォルトの名無しさん
2021/11/28(日) 12:45:20.85ID:nfhtQiKt >>865
assert isinstance(samples,dict)
samples.keys()
いけました。多謝
ところで
assert type(samples) == dict
は型チェッカー通らなかったんだけど、なぜですか?継承的な理由?
assert isinstance(samples,dict)
samples.keys()
いけました。多謝
ところで
assert type(samples) == dict
は型チェッカー通らなかったんだけど、なぜですか?継承的な理由?
870デフォルトの名無しさん
2021/11/28(日) 14:02:56.10ID:/OsOh/FW windowsで
python_ide.exe /run sample01.py
ってやるとIDE起動しつついきなり実行して結果を表示して
そのあとから編集なりデバッグなりが出来るIDEかエディタってありますか
いちいちプロジェクト作ってF5押してとかやらずにできるものがいいです
python_ide.exe /run sample01.py
ってやるとIDE起動しつついきなり実行して結果を表示して
そのあとから編集なりデバッグなりが出来るIDEかエディタってありますか
いちいちプロジェクト作ってF5押してとかやらずにできるものがいいです
871デフォルトの名無しさん
2021/11/28(日) 16:14:11.68ID:UCS6EEgA >>870
google colaboratory か?
google colaboratory か?
872デフォルトの名無しさん
2021/11/28(日) 23:04:03.88ID:SJI7MgMY 漏れは、デスクトップにショートカットを作って、
WSL2, Ubuntu-18.04 を起動して、
VSCode で、その中のproj01 プロジェクトを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
これを応用して、VSCode に「ruby a.rb」とか、
実行したいプログラム・スクリプトファイル名を、引数として渡せるかも知れない
漏れは知らないけど
WSL2, Ubuntu-18.04 を起動して、
VSCode で、その中のproj01 プロジェクトを開く
リンク先
C:\Windows\System32\wsl.exe code .
作業フォルダ
\\wsl$\Ubuntu-18.04\home\ユーザー名\proj01
これを応用して、VSCode に「ruby a.rb」とか、
実行したいプログラム・スクリプトファイル名を、引数として渡せるかも知れない
漏れは知らないけど
873デフォルトの名無しさん
2021/11/28(日) 23:41:14.23ID:bWBMruPI getメソッドのformを送信したときに表示されるページをスクレイピングしたい
getメソッドなのでチェックボックスやinputの有無や内容でurlが変わるのでそのurlに直接値を入れてrequests.get()で送ろうと思う
このときどのような設計をすればいい?
formにどのような値を入れるかは状況によって異なるのでその部分をまずどうするか
クラスにして__init__に書くかそれとも他にいい手段があるか
getメソッドなのでチェックボックスやinputの有無や内容でurlが変わるのでそのurlに直接値を入れてrequests.get()で送ろうと思う
このときどのような設計をすればいい?
formにどのような値を入れるかは状況によって異なるのでその部分をまずどうするか
クラスにして__init__に書くかそれとも他にいい手段があるか
874デフォルトの名無しさん
2021/11/28(日) 23:43:03.05ID:bWBMruPI あと初歩的な質問だけど__init__(self, test):でコンストラクターを定義して例えばself.test = testと書いた
これでそのクラス内でself.testでアクセスできると思ったがselfがないと出る
何故か分かる?
これでそのクラス内でself.testでアクセスできると思ったがselfがないと出る
何故か分かる?
875デフォルトの名無しさん
2021/11/29(月) 00:15:55.62ID:wv+/7oZZ 知らんけどそのクラスメソッドの最初の引数にselfって書いてないんじゃねーの(ハナホジ)
876デフォルトの名無しさん
2021/11/29(月) 00:52:02.80ID:VzPxzWHt 違う
877デフォルトの名無しさん
2021/11/29(月) 01:03:24.85ID:CM7Lq9QL インスタンスメソッドじゃなくてクラスメソッドならそうやろね
878デフォルトの名無しさん
2021/11/29(月) 03:22:32.97ID:rJXFzJiz879デフォルトの名無しさん
2021/11/29(月) 03:43:11.26ID:nPCo6JIx np.stack((array1[:-1], array1[1:]), axis=1)
880デフォルトの名無しさん
2021/11/29(月) 04:07:55.72ID:rJXFzJiz881デフォルトの名無しさん
2021/11/30(火) 09:45:02.69ID:1rSdL9RD 三項演算子を条件式を最初に書く方法はありますか?
882デフォルトの名無しさん
2021/11/30(火) 11:38:22.32ID:+4eAilPB >>874
self って仮の名前に過ぎないから
__init__(slef, test):
とかになってても
slef.test = test
だと通る
もちろん
self.test = test
が通らない
self って仮の名前に過ぎないから
__init__(slef, test):
とかになってても
slef.test = test
だと通る
もちろん
self.test = test
が通らない
883デフォルトの名無しさん
2021/11/30(火) 11:40:43.60ID:+4eAilPB884デフォルトの名無しさん
2021/11/30(火) 12:05:19.58ID:1ptP5nW8885デフォルトの名無しさん
2021/11/30(火) 12:11:27.12ID:1rSdL9RD >>883
if elseを一行で書く方法はありますか?
if elseを一行で書く方法はありますか?
886デフォルトの名無しさん
2021/11/30(火) 12:35:00.71ID:PosRcxUn 条件分岐用の関数をテキトーに作ったら?こんな風に使えるように
y = ifelsefunc(x > 0, -1, 1)
y = ifelsefunc(x > 0, -1, 1)
887デフォルトの名無しさん
2021/11/30(火) 13:18:14.90ID:1rSdL9RD >>886
ありがとうございます
ありがとうございます
888デフォルトの名無しさん
2021/11/30(火) 22:01:14.38ID:YBfM7cAP pandasの列置換について質問です。
import pandas as pd
df = pd.DataFrame({'deli_name': ['自社配送', '自社配送', 'store_A'], 'store_name': ['store_A', 'store_B', 'store_C'], 'price': [890, 833, 7842]}, index=[0, 1, 2])
df.deli_name[df.store_name == 'store_A'] = 'store_A'
上記はstore_nameがstore_Aの時に該当する行のdeli_nameをstore_Aに置換するつもりで書きました。
実行すると置換に成功しているのですが、下記の警告文が出ます。
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
警告がでない書き方とか分る方教えてください
import pandas as pd
df = pd.DataFrame({'deli_name': ['自社配送', '自社配送', 'store_A'], 'store_name': ['store_A', 'store_B', 'store_C'], 'price': [890, 833, 7842]}, index=[0, 1, 2])
df.deli_name[df.store_name == 'store_A'] = 'store_A'
上記はstore_nameがstore_Aの時に該当する行のdeli_nameをstore_Aに置換するつもりで書きました。
実行すると置換に成功しているのですが、下記の警告文が出ます。
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
警告がでない書き方とか分る方教えてください
889デフォルトの名無しさん
2021/11/30(火) 23:30:55.06ID:Z8ik9ZGC import pandas as pd
pd.options.mode.chained_assignment=None
df = pd.DataFrame({'deli_name': ['自社配送', '自社配送', 'store_A'], 'store_name': ['store_A', 'store_B', 'store_C'], 'price': [890, 833, 7842]}, index=[0, 1, 2])
df.deli_name[df.store_name == 'store_A'] = 'store_A'
pd.options.mode.chained_assignment=None
df = pd.DataFrame({'deli_name': ['自社配送', '自社配送', 'store_A'], 'store_name': ['store_A', 'store_B', 'store_C'], 'price': [890, 833, 7842]}, index=[0, 1, 2])
df.deli_name[df.store_name == 'store_A'] = 'store_A'
890デフォルトの名無しさん
2021/11/30(火) 23:36:58.51ID:EeXqZSw1 警告の下にあるリンク先はよんだん?
891デフォルトの名無しさん
2021/12/01(水) 00:11:27.02ID:X46if3HQ >>888
deli_name_copy = df.deli_name.copy()
deli_name_copy[df.store_name == 'store_A'] = 'store_A'
df.deli_name = deli_name_copy
deli_name_copy = df.deli_name.copy()
deli_name_copy[df.store_name == 'store_A'] = 'store_A'
df.deli_name = deli_name_copy
892デフォルトの名無しさん
2021/12/01(水) 11:49:27.95ID:kM+Jjoc8 > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
893デフォルトの名無しさん
2021/12/02(木) 13:28:11.18ID:XKNm0UTJ beautifulsoupで<div class="box_area">の下にあるpタグの下にある全ての<span class="link_pdf">タグの下にあるaタグを取得するには例えばどう書けばいいですか?
894デフォルトの名無しさん
2021/12/02(木) 13:30:55.05ID:YlIFrtYh 順番に絞ってけば取れるだろ?
895デフォルトの名無しさん
2021/12/02(木) 13:51:53.14ID:k2JFy+0I セレクタの勉強をしろ
896デフォルトの名無しさん
2021/12/02(木) 14:13:40.25ID:XKNm0UTJ897デフォルトの名無しさん
2021/12/02(木) 22:47:46.92ID:ap4H6lSA typing.List、Dictって非推奨らしいけど、代わりは一体どうしたら・・
898デフォルトの名無しさん
2021/12/03(金) 00:05:29.70ID:/aixTtEw ビルトインのlist、dict使えってことなんじゃね?困ることあるん?
899デフォルトの名無しさん
2021/12/03(金) 01:06:36.94ID:mlmp5wts 3.9から
list[int]
とか
dict[str, int]
とか書けるようになったから要らんだろってこと
この調子でイテレータもどうにかして欲しい
list[int]
とか
dict[str, int]
とか書けるようになったから要らんだろってこと
この調子でイテレータもどうにかして欲しい
900デフォルトの名無しさん
2021/12/03(金) 02:36:40.94ID:XIVj35HM >>893
下と言う表現は、あいまい
下と言っても、子・直下のみは、> を使う
例えば、id がabc の直下の、xyz クラス
#abc > .xyz
(再帰的な)子孫なら、半角空白を使う
例えば、div の子孫の、p
div p
詳細は、jQuery などのCSS セレクター一覧表を参照
下と言う表現は、あいまい
下と言っても、子・直下のみは、> を使う
例えば、id がabc の直下の、xyz クラス
#abc > .xyz
(再帰的な)子孫なら、半角空白を使う
例えば、div の子孫の、p
div p
詳細は、jQuery などのCSS セレクター一覧表を参照
901デフォルトの名無しさん
2021/12/03(金) 06:13:15.75ID:Lgq6hTbY >>900
助かる
助かる
902デフォルトの名無しさん
2021/12/03(金) 12:21:12.38 beautifulsoup4でfind_allするとき、table周りはなんか一癖あった記憶がある
903デフォルトの名無しさん
2021/12/03(金) 13:26:46.51ID:Lgq6hTbY selectでいいんだよね?
904デフォルトの名無しさん
2021/12/05(日) 21:47:07.14ID:z1lQW/5A はじめてプロファイラー使ってみたら
Pythonでファイルの存在確認って遅くないか?
じぶんの環境だけなのか?
Pythonでファイルの存在確認って遅くないか?
じぶんの環境だけなのか?
905デフォルトの名無しさん
2021/12/05(日) 21:58:46.62ID:z1lQW/5A 自己解決
ファイルの存在確認が遅いのはHDDのせいみたい
2度目以降は高速になった
キャッシュが聞いてるからかと
ファイルの存在確認が遅いのはHDDのせいみたい
2度目以降は高速になった
キャッシュが聞いてるからかと
906デフォルトの名無しさん
2021/12/06(月) 00:07:26.37ID:Phmk8fSW HDD関係なく初回のstatが遅いのはWindowsも含めUnix系のファイルシステムだとしょうがない
907デフォルトの名無しさん
2021/12/06(月) 07:12:36.68ID:1pNPp5ri コマンドプロンプトのような見た目のコンソール上で動く、CUIの特殊な計算機があります
C言語で書かれていてコンパイル済みのフリーソフトです
これをpythonで操作して自動化に役立てようと思っています
出力はコンソール上に文字列でなされるのですが、文字列を直接取得する方法はありますか?
C言語で書かれていてコンパイル済みのフリーソフトです
これをpythonで操作して自動化に役立てようと思っています
出力はコンソール上に文字列でなされるのですが、文字列を直接取得する方法はありますか?
908デフォルトの名無しさん
2021/12/06(月) 08:19:00.70ID:0fxVnCQi popen
909デフォルトの名無しさん
2021/12/06(月) 08:58:45.68ID:1pNPp5ri >>908
ありがとうございます
VSCODEで試してみてるんですが
引数にそのexeファイルだけ取って、runかpopenを使うと、どちらでもコンソールにCUIが直接表示されます
(そのままキー入力すると普通に動作します)
しかし引数にstdin=PIPE,stdout=PIPE,などを入れるとピクリとも動かなくなります(CUIが出ない、communicationやinputなどで入力を試みても出力がなく先に進まない、エラーも吐かない)
何か間違えたのだと思うのですが、
解説ブログやドキュメントを読んでも全く解決策がわからず困り果てています
何かご存知の方がいらしたらお願いします
ありがとうございます
VSCODEで試してみてるんですが
引数にそのexeファイルだけ取って、runかpopenを使うと、どちらでもコンソールにCUIが直接表示されます
(そのままキー入力すると普通に動作します)
しかし引数にstdin=PIPE,stdout=PIPE,などを入れるとピクリとも動かなくなります(CUIが出ない、communicationやinputなどで入力を試みても出力がなく先に進まない、エラーも吐かない)
何か間違えたのだと思うのですが、
解説ブログやドキュメントを読んでも全く解決策がわからず困り果てています
何かご存知の方がいらしたらお願いします
910デフォルトの名無しさん
2021/12/06(月) 09:06:19.91ID:1pNPp5ri すみません、書き間違えました
runまたはpopenでexeファイルを開くと、
VScodeの画面上で、「ターミナル」にCUIが表示されます
そこにキー入力するとそのまま動作します。
runまたはpopenでexeファイルを開くと、
VScodeの画面上で、「ターミナル」にCUIが表示されます
そこにキー入力するとそのまま動作します。
911デフォルトの名無しさん
2021/12/06(月) 10:11:30.79ID:+xtv5Wsa expect相当がほしいならpexpectとか
標準モジュールだけで解決するのは面倒なのでPyPIで探すのが吉
標準モジュールだけで解決するのは面倒なのでPyPIで探すのが吉
912デフォルトの名無しさん
2021/12/06(月) 12:38:40.47ID:+ZC47hZJ >>909
問題を再現できるコードを提示するか切り分けするかしてもらわないと
Pythonのコードの書き方が悪いのかその計算機の呼び出し方が間違ってるのかわからない
1. 単純なpipeを使ったコマンドをpopenで動かしてstdout, stderrを取れてるかどうか?
$ echo "foo.txt" | grep -o ".t"
(echoやgrepはwindowsのコマンドで代用して)
2. 取れてるなら特殊な計算機はpipeを使ったコマンドで動くのか?
$ echo “1 + 2” | foo.exe
CUIと言ってるのがncursesのようなTUIだとSendKeysが必要かも
問題を再現できるコードを提示するか切り分けするかしてもらわないと
Pythonのコードの書き方が悪いのかその計算機の呼び出し方が間違ってるのかわからない
1. 単純なpipeを使ったコマンドをpopenで動かしてstdout, stderrを取れてるかどうか?
$ echo "foo.txt" | grep -o ".t"
(echoやgrepはwindowsのコマンドで代用して)
2. 取れてるなら特殊な計算機はpipeを使ったコマンドで動くのか?
$ echo “1 + 2” | foo.exe
CUIと言ってるのがncursesのようなTUIだとSendKeysが必要かも
913デフォルトの名無しさん
2021/12/06(月) 17:45:57.66ID:eUQmGuZl visual studioでkeras/tensorflowのデバッグ方法でつまっています
K.sigmoid()やtf.boolean_mask()のようなバックエンド処理ばかりなのでデバッグ中に変数の中身が分かりません
今はとりあえずnumpyや独自実装で移植しながら中を見てデバッグしています
しかし問題にぶつかったとき原因が移植作業なのか元々のソースなのか切り分けができず困っています
keras.backendなどを使いながらも変数の中を見れるようにする方法ないでしょうか?
K.sigmoid()やtf.boolean_mask()のようなバックエンド処理ばかりなのでデバッグ中に変数の中身が分かりません
今はとりあえずnumpyや独自実装で移植しながら中を見てデバッグしています
しかし問題にぶつかったとき原因が移植作業なのか元々のソースなのか切り分けができず困っています
keras.backendなどを使いながらも変数の中を見れるようにする方法ないでしょうか?
914デフォルトの名無しさん
2021/12/06(月) 18:44:05.67ID:5Z6rXs0A915デフォルトの名無しさん
2021/12/06(月) 20:25:32.94ID:ZoRh0Nkj ターミナルでfor命令を1行で実行する場合、両サイドを[]で囲むじゃないですか
>>> [i for i in range(10)]
のように。この[]は、一般的になんて呼ばれていますか?
>>> [i for i in range(10)]
のように。この[]は、一般的になんて呼ばれていますか?
916デフォルトの名無しさん
2021/12/06(月) 20:28:37.11ID:q0abD6Vl 内包表記 >>915
917デフォルトの名無しさん
2021/12/06(月) 20:42:34.30ID:1jgDkimx List comprehensions
918デフォルトの名無しさん
2021/12/06(月) 23:38:34.79ID:fS/Lj56T すいませんmaxについて教えて下さい。
ordered_list_xrp = [menber.get('price') for menber in open_orders_xrp]
このコードでリストを取得してこのようなリストがとれました、
['99.460', '104.150', '118.290', '123.800', '127.440', '130.990']
次にこのリストの中から最大値を取得しようとして、
このようなコードを実行したのですが、
max_price_list_xrp = float(max(ordered_list_xrp))
結果が、99.46になってしまいました、
最大値はリスト最後の、130.99のはずなのに、
どうしてうまく取れなかったのでしょうか?
ordered_list_xrp = [menber.get('price') for menber in open_orders_xrp]
このコードでリストを取得してこのようなリストがとれました、
['99.460', '104.150', '118.290', '123.800', '127.440', '130.990']
次にこのリストの中から最大値を取得しようとして、
このようなコードを実行したのですが、
max_price_list_xrp = float(max(ordered_list_xrp))
結果が、99.46になってしまいました、
最大値はリスト最後の、130.99のはずなのに、
どうしてうまく取れなかったのでしょうか?
919デフォルトの名無しさん
2021/12/06(月) 23:42:47.24ID:1jgDkimx >>> '99.460' < '130.990'
False
>>> 99.460 < 130.990
True
False
>>> 99.460 < 130.990
True
920デフォルトの名無しさん
2021/12/06(月) 23:50:20.47ID:UpeudXBw >>918
文字列だからだよ。
文字列だからだよ。
921デフォルトの名無しさん
2021/12/06(月) 23:51:25.10ID:fS/Lj56T922デフォルトの名無しさん
2021/12/06(月) 23:53:49.67ID:1jgDkimx max(float(x) for x in ordered_list_xrp)
923デフォルトの名無しさん
2021/12/06(月) 23:56:05.27ID:1jgDkimx max(ordered_list_xrp, key=float)
924デフォルトの名無しさん
2021/12/06(月) 23:58:55.21ID:fS/Lj56T925デフォルトの名無しさん
2021/12/07(火) 01:52:20.23ID:904hja4x pythonのselfについて教えてくだしあ
selfはインスタンス自身を表すってのはわかったんですが、
自分のクラスのメソッドの中でselfを関数として呼ぶと何が起こるんですか?
つまりこんな感じです
class Testclass:
def __init__(self):
pass
def kansuu(self):
self("hikisu") #←これ何してるんですか?
selfはインスタンス自身を表すってのはわかったんですが、
自分のクラスのメソッドの中でselfを関数として呼ぶと何が起こるんですか?
つまりこんな感じです
class Testclass:
def __init__(self):
pass
def kansuu(self):
self("hikisu") #←これ何してるんですか?
926デフォルトの名無しさん
2021/12/07(火) 07:54:32.43ID:G7aiaFNj dict((str(i),i) if i%2==0 else (i,str(i)) for i in range(10))
max(float(x) for x in ordered_list_xrp)
この2つってどういう順番で何が起きてんの?
max(float(x) for x in ordered_list_xrp)
この2つってどういう順番で何が起きてんの?
927デフォルトの名無しさん
2021/12/07(火) 08:26:52.55ID:KRSgdo5l >>925
self.__call__が実行される
self.__call__が実行される
928デフォルトの名無しさん
2021/12/07(火) 13:28:56.27ID:mOcbYYmI >>926
内包表記のとき、表記が感覚的に逆(慣れればそうでもないけど)に感じるが
一度理解すると簡単
https://colab.research.google.com/drive/199DCLDxHgvBc752ulWDueqC7cmt2iGbd
内包表記のとき、表記が感覚的に逆(慣れればそうでもないけど)に感じるが
一度理解すると簡単
https://colab.research.google.com/drive/199DCLDxHgvBc752ulWDueqC7cmt2iGbd
929デフォルトの名無しさん
2021/12/07(火) 15:22:45.64ID:g74FV+wu pythonは後出しだから慣れないな
python「ここにこれを代入して。ああ、もしもこの条件だったら代入するのはやっぱりこっちね。ああ、その代入はループでしてね」
ほかの言語「次の処理をループして。もしもこの条件だったら、ここにこれを代入、条件違ったらこっちを代入」
python「ここにこれを代入して。ああ、もしもこの条件だったら代入するのはやっぱりこっちね。ああ、その代入はループでしてね」
ほかの言語「次の処理をループして。もしもこの条件だったら、ここにこれを代入、条件違ったらこっちを代入」
930デフォルトの名無しさん
2021/12/07(火) 15:32:47.34ID:904hja4x >>927
ありがとうございました!
ありがとうございました!
931デフォルトの名無しさん
2021/12/07(火) 18:04:11.03ID:cqBSzh42 EmpathというA PIを用いてその結果の数値をリストにまとめシリアル通信でarduinoに送りたいです。
↓リストにまとめた以降
RGB = [round(red) , round(green) , round(blue) , energy , calm]
print (RGB)
send_RGB = bytes(RGB)
print(send_RGB)
with serial.Serial('COM15' , 9600) as ser:
print('----')
ser.write(send_RGB)
print('----')
こんな感じでbyte型にできているのか(そもそもbyteにするか)わからないのですが
この数値をarduinoに取り込みたいので何か参考にさせてください。
受け取るarduino側が悪いのかもしれませんが。。
↓リストにまとめた以降
RGB = [round(red) , round(green) , round(blue) , energy , calm]
print (RGB)
send_RGB = bytes(RGB)
print(send_RGB)
with serial.Serial('COM15' , 9600) as ser:
print('----')
ser.write(send_RGB)
print('----')
こんな感じでbyte型にできているのか(そもそもbyteにするか)わからないのですが
この数値をarduinoに取り込みたいので何か参考にさせてください。
受け取るarduino側が悪いのかもしれませんが。。
932デフォルトの名無しさん
2021/12/07(火) 18:47:54.90ID:g74FV+wu csvの文字列にした方がいいよ。簡単にやるならこんな感じ
送信側はcsv文字列で送信
受信側は1文字ずつメモリに貯め込んで改行コード検出で、そこまで貯まった文字列が数値と区切り文字だけで構成されてて区切り数が正しかったら正規なデータとして処理
受信側テストはターミナルソフトで手入力したcsv送って処理できたらおk
送信側はcsv文字列で送信
受信側は1文字ずつメモリに貯め込んで改行コード検出で、そこまで貯まった文字列が数値と区切り文字だけで構成されてて区切り数が正しかったら正規なデータとして処理
受信側テストはターミナルソフトで手入力したcsv送って処理できたらおk
933デフォルトの名無しさん
2021/12/07(火) 19:57:20.96ID:1b+mdTOc > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
934デフォルトの名無しさん
2021/12/12(日) 02:21:30.33ID:neH/oCpw Pythonで「オブジェクトが存在しなかったら作る」という処理を書きたいと思ってます
Pythonは3.6.9、OSはAlmaLinux8.5、IDEはVS.codeです
import class
if (objA is None):
objA = class.classA('nameclassA')
とやってみたのですが、if文のところで name 'objA' is not defines となってしまいます
何かよい方法はありますか
Pythonは3.6.9、OSはAlmaLinux8.5、IDEはVS.codeです
import class
if (objA is None):
objA = class.classA('nameclassA')
とやってみたのですが、if文のところで name 'objA' is not defines となってしまいます
何かよい方法はありますか
935デフォルトの名無しさん
2021/12/12(日) 02:28:54.11ID:LDYHaH+j objA = None
と上のほうに書いておけ
と上のほうに書いておけ
936デフォルトの名無しさん
2021/12/12(日) 02:58:35.01ID:neH/oCpw937デフォルトの名無しさん
2021/12/12(日) 03:00:27.68ID:lyarTocF938デフォルトの名無しさん
2021/12/12(日) 03:42:09.06ID:neH/oCpw939デフォルトの名無しさん
2021/12/12(日) 12:38:50.06ID:0NBntfzw メタプログラミングするレベルでこんなのわからんのも変
十中八九設計がおかしい
十中八九設計がおかしい
940デフォルトの名無しさん
2021/12/12(日) 14:44:59.69ID:qWcO2iK8941デフォルトの名無しさん
2021/12/12(日) 16:17:39.25ID:GOu/cbbC サーバー側のタイムゾーンはUTCという前提で、
それをフロントエンドで日本時間表示することになりました
しかしその表示に使うライブラリがawareを受け付けなくて
nativeでないといけないのです つまり
awareなUTC時間のdatetime型 → nativeなJST(Asian/Tokyo)時間のdatetime型
への変換をすることになったのですが
これを一発で変換するようなメソッドって
標準はもちろんpytzとかにも用意されてませんよね?
一度timestampに変換してtimedeltaにして演算
という認識で良いのでしょうか?
それをフロントエンドで日本時間表示することになりました
しかしその表示に使うライブラリがawareを受け付けなくて
nativeでないといけないのです つまり
awareなUTC時間のdatetime型 → nativeなJST(Asian/Tokyo)時間のdatetime型
への変換をすることになったのですが
これを一発で変換するようなメソッドって
標準はもちろんpytzとかにも用意されてませんよね?
一度timestampに変換してtimedeltaにして演算
という認識で良いのでしょうか?
942デフォルトの名無しさん
2021/12/12(日) 17:28:22.24ID:9VS1oyXL 失礼します
BeautifulSoupというライブラリを使って"任意のサイトのhtmlソースから特定の部分だけを抜き出して表示する"というプログラムを作りたいのですが、ググっても"URLの中の一部の文字列"のみを抽出する方法が分からないので教えて頂きたいです
具体的には、htmlソースからUA-XXXXXXX-Xという文字列を抜き出したい場合、
<p>UA-XXXXXXX-X</p> ←これならできるのですが
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXX-X"></script> ←この場合にUA-XXXXXXX-Xだけを抜き出す方法が分かりません
BeautifulSoupというライブラリを使って"任意のサイトのhtmlソースから特定の部分だけを抜き出して表示する"というプログラムを作りたいのですが、ググっても"URLの中の一部の文字列"のみを抽出する方法が分からないので教えて頂きたいです
具体的には、htmlソースからUA-XXXXXXX-Xという文字列を抜き出したい場合、
<p>UA-XXXXXXX-X</p> ←これならできるのですが
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-XXXXXXX-X"></script> ←この場合にUA-XXXXXXX-Xだけを抜き出す方法が分かりません
943デフォルトの名無しさん
2021/12/12(日) 17:34:26.79ID:0NBntfzw944デフォルトの名無しさん
2021/12/12(日) 17:35:49.84ID:a4cuZ/Mw 1. scriptエレメントを全部取得する
2. ↑で取得したscriptエレメントのsrcを読み取る
3. ↑で読み取ったsrcにua〜が含まれてるかチェックする
って流れで考えれば分かりやすいんじゃない?
2. ↑で取得したscriptエレメントのsrcを読み取る
3. ↑で読み取ったsrcにua〜が含まれてるかチェックする
って流れで考えれば分かりやすいんじゃない?
945デフォルトの名無しさん
2021/12/12(日) 17:42:52.14ID:I5fuTkfi >>942
1:BeautifulSoupを使ってURL全体を取得する
2:urllib.parseを使って解析
3:今回の場合はquery部分で入ってくるので、それを取得する
https://docs.python.org/ja/3/library/urllib.parse.html
そのURLの形式で固定ならこれで行けるんじゃない?
https://ideone.com/yoHzOG
1:BeautifulSoupを使ってURL全体を取得する
2:urllib.parseを使って解析
3:今回の場合はquery部分で入ってくるので、それを取得する
https://docs.python.org/ja/3/library/urllib.parse.html
そのURLの形式で固定ならこれで行けるんじゃない?
https://ideone.com/yoHzOG
946デフォルトの名無しさん
2021/12/12(日) 17:43:33.09ID:Hsntocf/ URLのクエリ文字列(クエリパラメータ)を取得。
947デフォルトの名無しさん
2021/12/12(日) 20:30:44.55ID:9VS1oyXL >>944,945,946
ご丁寧にありがとうございます。特に945さんに貼って頂いたコードは大変参考になりました。
お陰様で目的は達成できたのですが、他の余計な行も大量に表示されてしまいます。
邪魔な行を取り除くには下のコードに何を追加すればよいでしょうか?
b''
b''
b''
↑こんな感じで不要な行が残っています
・ソースコード
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import requests
url = input("Enter a domain: ")
r = requests.get("http://" +url)
data = r.text
soup = BeautifulSoup(data)
for link in soup.find_all('script'):
urls = link.get('src')
res = urlparse(urls)
print(res.query)
ご丁寧にありがとうございます。特に945さんに貼って頂いたコードは大変参考になりました。
お陰様で目的は達成できたのですが、他の余計な行も大量に表示されてしまいます。
邪魔な行を取り除くには下のコードに何を追加すればよいでしょうか?
b''
b''
b''
↑こんな感じで不要な行が残っています
・ソースコード
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import requests
url = input("Enter a domain: ")
r = requests.get("http://" +url)
data = r.text
soup = BeautifulSoup(data)
for link in soup.find_all('script'):
urls = link.get('src')
res = urlparse(urls)
print(res.query)
948デフォルトの名無しさん
2021/12/12(日) 22:55:58.59ID:+1Oq/K+R res.queryが存在するならprintするっていう風にすればいいんじゃね
949デフォルトの名無しさん
2021/12/14(火) 11:59:17.10ID:s9Ba9CTM PysimpleGUIについてちょっと聞きたいんですが、
sg.popup_get_fileを使いたいんですが、ファイルを選択せずキャンセルを行うと
『TclError: can't set "::tk::dialog::file::showHiddenBtn": parent namespace doesn't exist』
といったエラー文が出てしまうんですが、何が問題なのでしょうか
公式に載ってる↓のコードでもエラーが出るのでとっかかりすら掴めません・・・
import PySimpleGUI as sg
filename = sg.popup_get_file('処理したいファイルを入力してください')
sg.popup('入力した', filename)
sg.popup_get_fileを使いたいんですが、ファイルを選択せずキャンセルを行うと
『TclError: can't set "::tk::dialog::file::showHiddenBtn": parent namespace doesn't exist』
といったエラー文が出てしまうんですが、何が問題なのでしょうか
公式に載ってる↓のコードでもエラーが出るのでとっかかりすら掴めません・・・
import PySimpleGUI as sg
filename = sg.popup_get_file('処理したいファイルを入力してください')
sg.popup('入力した', filename)
950デフォルトの名無しさん
2021/12/14(火) 20:49:18.01 import numpy as np
a1=np.array([1])
a2=[1]
print(type(a1[0]),type(a2[0]))
print(a1[0]==a2[0]) #@
d1={"n":a1[0]}
d2={"n":a2[0]}
print( json.dumps(d2) )
print( json.dumps(d1) ) #TypeError: Object of type int64 is not JSON serializable
#@がTrueになるのってpythonのバグではありませんか・・?
仕様であれば何かメリットとかあるのでしょうか?
a1=np.array([1])
a2=[1]
print(type(a1[0]),type(a2[0]))
print(a1[0]==a2[0]) #@
d1={"n":a1[0]}
d2={"n":a2[0]}
print( json.dumps(d2) )
print( json.dumps(d1) ) #TypeError: Object of type int64 is not JSON serializable
#@がTrueになるのってpythonのバグではありませんか・・?
仕様であれば何かメリットとかあるのでしょうか?
951デフォルトの名無しさん
2021/12/14(火) 21:04:19.38ID:70QYvgE2 a1[0]は(int32の)1でしょ?そしてa2[0]も(intの)1
int32とintぐらいの差でfalseになると色々困る
int32とintぐらいの差でfalseになると色々困る
952デフォルトの名無しさん
2021/12/14(火) 21:30:31.61ID:lu87KQQd コード追ってはないけどnumpy側でそういう風に__eq__実装してるだけ
なんなら
>>> a1 == a2
array([ True])
になるしうれしいけど変だわな
なんなら
>>> a1 == a2
array([ True])
になるしうれしいけど変だわな
953デフォルトの名無しさん
2021/12/15(水) 11:10:32.17 >>951-952
なるほど
pandasもnumpy int64なので
dataframeを何かしらのAPIに投げるときに
そのままjson.dumps使えたらなぁと思いましたが
とりあえずはint32変換して成型した方がよさそうですねありやした
なるほど
pandasもnumpy int64なので
dataframeを何かしらのAPIに投げるときに
そのままjson.dumps使えたらなぁと思いましたが
とりあえずはint32変換して成型した方がよさそうですねありやした
954デフォルトの名無しさん
2021/12/17(金) 08:55:01.03ID:s+y1HFod Windows、Linuxの両方で動作するスクリプトを作ろうと思っているのですが
スクリプトのファイルの改行コードについて、CR+LFがよいのかLFがよいのか
教えて下さい
#!/usr/bin/env python3
print("aaa")
こういうshebangが使われたスクリプトの場合なのですが、関連付けやbashのshellext等の
設定が無い環境では
・改行コードがLF
→Windowsだと「python3 〇〇.py」で実行OK。ただし編集はエディタを選ぶ
→Linuxだと「./〇〇.py」でも「python3 〇〇.py」でも実行OK
・改行コードがCR+LF
→Windowsだと「python3 〇〇.py」で実行OK
→Linuxだと「./〇〇.py」は「bad interpreter」となる。「python3 〇〇.py」では実行OK
…となりますよね
いずれのOSでも必ず「python3 〇〇.py」として実行できますし、
改行コードの問題はshebangの問題なので
・ファイルの改行コードはCR+LF
・Linuxでの実行は「python3 〇〇.py」で行う。shebangは書かない、使わない
こうするのが最も無難な方針に思えますが、いかがでしょうか
それともshebangも活用すべき、文字コードはLFとすべき、なのでしょうか
スクリプトのファイルの改行コードについて、CR+LFがよいのかLFがよいのか
教えて下さい
#!/usr/bin/env python3
print("aaa")
こういうshebangが使われたスクリプトの場合なのですが、関連付けやbashのshellext等の
設定が無い環境では
・改行コードがLF
→Windowsだと「python3 〇〇.py」で実行OK。ただし編集はエディタを選ぶ
→Linuxだと「./〇〇.py」でも「python3 〇〇.py」でも実行OK
・改行コードがCR+LF
→Windowsだと「python3 〇〇.py」で実行OK
→Linuxだと「./〇〇.py」は「bad interpreter」となる。「python3 〇〇.py」では実行OK
…となりますよね
いずれのOSでも必ず「python3 〇〇.py」として実行できますし、
改行コードの問題はshebangの問題なので
・ファイルの改行コードはCR+LF
・Linuxでの実行は「python3 〇〇.py」で行う。shebangは書かない、使わない
こうするのが最も無難な方針に思えますが、いかがでしょうか
それともshebangも活用すべき、文字コードはLFとすべき、なのでしょうか
955デフォルトの名無しさん
2021/12/17(金) 10:09:24.99ID:Ufm8xgDf 世の中のWinアプリ以外のソースはほぼLFだし
コーディング用途にLF扱えないエディタの出番はなくない?
それかハマりどころあるけどGit管理でautocrlf活用するか
コーディング用途にLF扱えないエディタの出番はなくない?
それかハマりどころあるけどGit管理でautocrlf活用するか
956デフォルトの名無しさん
2021/12/17(金) 11:03:16.89ID:AcAuqy7R 基本的はLFで揃えとくべき
それで困る状況がある場合だけautocrlfで対処
それで困る状況がある場合だけautocrlfで対処
957デフォルトの名無しさん
2021/12/17(金) 13:32:20.53ID:fkpshCq+ Windowsがメインだけど、シバンは使う、改行はLF
エディタ(NPP)でもアドオンつかって、保存時にLFで自動で保存(問い合わせ)できるようにしている
エディタ(NPP)でもアドオンつかって、保存時にLFで自動で保存(問い合わせ)できるようにしている
958デフォルトの名無しさん
2021/12/17(金) 16:27:15.20ID:6e8bb+xR LF以外の選択肢考えたことなかったわ
959デフォルトの名無しさん
2021/12/17(金) 17:25:27.22ID:tWB5K5S1 漏れは、WSL2, Ubuntu 18.04 で、
日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使っているけど、
たぶん、CR + LF だとバグる
#!/usr/bin/env ruby
echo -e "$RBENV_ROOT\n$NODENV_ROOT"
/home/ユーザー名/.anyenv/envs/rbenv
/home/ユーザー名/.anyenv/envs/nodenv
日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使っているけど、
たぶん、CR + LF だとバグる
#!/usr/bin/env ruby
echo -e "$RBENV_ROOT\n$NODENV_ROOT"
/home/ユーザー名/.anyenv/envs/rbenv
/home/ユーザー名/.anyenv/envs/nodenv
960デフォルトの名無しさん
2021/12/17(金) 23:25:03.55ID:87jtAeRP >>958
os/9とかMac osがcrだよ
os/9とかMac osがcrだよ
961デフォルトの名無しさん
2021/12/17(金) 23:45:19.54ID:Ufm8xgDf 初心者スレにそんな現役じゃない例あげてなにがしたいん
962デフォルトの名無しさん
2021/12/18(土) 00:15:24.44ID:mxS9DQCX pandasで、1つの列のデータからapply()を使って複数の値を戻り値として返してそれぞれ別々の列として追加したいです。
(列データxに対して、x*2, x/2 を返す等)
DataFrameのapply()には、result_type='expand'で複数戻り値を別々の列(Series)に格納できるものがありますが、Seriesのapply()にはresult_typeがありませんでした。result_type='expand'のようなシンプルなやり方をするにはDataFrameのapply()を使うしか無いですか?
できればSeriesを指定した上でapplyを呼び出したいです。
ちなみに、呼び出した関数でpd.Seriesを戻り値として返すやり方もWebで見つかりましたがものすごく処理が遅かったので正しいやり方では無さそうです。
(列データxに対して、x*2, x/2 を返す等)
DataFrameのapply()には、result_type='expand'で複数戻り値を別々の列(Series)に格納できるものがありますが、Seriesのapply()にはresult_typeがありませんでした。result_type='expand'のようなシンプルなやり方をするにはDataFrameのapply()を使うしか無いですか?
できればSeriesを指定した上でapplyを呼び出したいです。
ちなみに、呼び出した関数でpd.Seriesを戻り値として返すやり方もWebで見つかりましたがものすごく処理が遅かったので正しいやり方では無さそうです。
963デフォルトの名無しさん
2021/12/18(土) 00:37:48.68ID:mmV8s4af applyを2回呼ぶのは?
964デフォルトの名無しさん
2021/12/18(土) 01:52:04.79ID:mxS9DQCX それが一番簡単ですが冗長な感じと思ったので…
でも、result_type='expand'も処理時間が遅いようなので、やはり複数回呼び出す方法にします。
でも、result_type='expand'も処理時間が遅いようなので、やはり複数回呼び出す方法にします。
965デフォルトの名無しさん
2021/12/18(土) 02:01:17.24ID:iUN/Cy1s df[‘B’], df[‘C’] = zip(*df['A'].apply(lambda x: ( x * 2, x / 2)))
966デフォルトの名無しさん
2021/12/18(土) 02:09:06.48ID:iUN/Cy1s df[[‘B’, ‘C’]]= df['A'].apply(lambda x: (x * 2, x / 2)).to_list()
967デフォルトの名無しさん
2021/12/18(土) 23:23:56.96ID:rJsqD2PP 以下のようなファイル・ディレクトリ構成でツールを作ってます
mainscript.py
modules/
__init__.py
moduleA.py ← 実際のメイン処理
moduleB.py ← 関数を別ファイル化
mainscript.pyの中でmoduleA.pyに書いた機能を使うので、mainscript.pyの中にて
from modules import moduleA
として読み込んでいます
ここで、moduleA.pyは、moduleB.pyに書いた機能を使ってます
この場合、moduleA.pyに
from modules import moduleB
と、「from modules import 〜」が無いと動作しないので、必要なのだと思ってます
しかしmoduleA.py、moduleB.pyを流用するとき、moduleA.pyは「from modules」を
流用先のディレクトリ構成にあわせて修正しなければならず、困ってます
また「modules」ディレクトリは、mainscript.pyから見てのものであり、
moduleA.pyに「from modules」文があると、moduleA.pyだけ見ていても
modulesディレクトリは親ディレクトリであることを読み取れず、それも困ってます
上記のような構成にしたとき、このような問題を解決する方法を教えてください
mainscript.py
modules/
__init__.py
moduleA.py ← 実際のメイン処理
moduleB.py ← 関数を別ファイル化
mainscript.pyの中でmoduleA.pyに書いた機能を使うので、mainscript.pyの中にて
from modules import moduleA
として読み込んでいます
ここで、moduleA.pyは、moduleB.pyに書いた機能を使ってます
この場合、moduleA.pyに
from modules import moduleB
と、「from modules import 〜」が無いと動作しないので、必要なのだと思ってます
しかしmoduleA.py、moduleB.pyを流用するとき、moduleA.pyは「from modules」を
流用先のディレクトリ構成にあわせて修正しなければならず、困ってます
また「modules」ディレクトリは、mainscript.pyから見てのものであり、
moduleA.pyに「from modules」文があると、moduleA.pyだけ見ていても
modulesディレクトリは親ディレクトリであることを読み取れず、それも困ってます
上記のような構成にしたとき、このような問題を解決する方法を教えてください
968デフォルトの名無しさん
2021/12/18(土) 23:32:07.96ID:/Zq/GLbL from . import moduleB
969デフォルトの名無しさん
2021/12/18(土) 23:35:58.62ID:rJsqD2PP970デフォルトの名無しさん
2021/12/19(日) 02:23:46.60ID:xFmqbcza971デフォルトの名無しさん
2021/12/20(月) 11:22:53.74ID:sxGOmJ2J > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw
クソチョンはウンコを食べる糞食人種w
朝鮮人はゲリ便をじゅるじゅると
うまそうに食うw
972デフォルトの名無しさん
2021/12/23(木) 16:13:24.40ID:UaimnPqj beautifulsoupで取得したページでth:-soup-containsというセレクターを使うと
NotImplementedError: ':-soup-contains' pseudo-class is not implemented at this time.
と出ます。
この原因は何でしょうか?必要な情報があれば載せます
NotImplementedError: ':-soup-contains' pseudo-class is not implemented at this time.
と出ます。
この原因は何でしょうか?必要な情報があれば載せます
973デフォルトの名無しさん
2021/12/23(木) 17:45:26.84ID:QOBvhpdm beautifulsoupの最新版インストールしてるか確認しろ
974デフォルトの名無しさん
2021/12/23(木) 22:05:30.20ID:Gg61L1jf streamlinkってpythonで書かれてるんだよね。
python的な書き方ってないの?
subprocess使って
subprocess.call(['streamlink', url, 'best', '--hls-duration', time, '-o', out2])
ってやってるんだけど、python的な書き方は無いのかなって思って。
python的な書き方ってないの?
subprocess使って
subprocess.call(['streamlink', url, 'best', '--hls-duration', time, '-o', out2])
ってやってるんだけど、python的な書き方は無いのかなって思って。
975デフォルトの名無しさん
2021/12/23(木) 22:24:09.67ID:zCNeJPRa976デフォルトの名無しさん
2021/12/23(木) 22:40:50.88ID:Gg61L1jf >975
このページ、白バックに白文字になってるところが多くて読みづらいですね。
fd = stream.open()
data = fd.read( 00:30:00)
fd.output(filename)
みたいな書き方できないのかなって。
このページ、白バックに白文字になってるところが多くて読みづらいですね。
fd = stream.open()
data = fd.read( 00:30:00)
fd.output(filename)
みたいな書き方できないのかなって。
977デフォルトの名無しさん
2021/12/23(木) 22:49:03.00ID:Gg61L1jf read()でbyteじゃなて時間で指定したいし、readしたdataをoutputする方法が知りたいんです。
codec は copy で、生のまま ts とか mp4 にoutputしたい。
スクリプトのサンプル探してるんだけど、みんな ffmpeg に渡したり、subprocess 使ってる。
codec は copy で、生のまま ts とか mp4 にoutputしたい。
スクリプトのサンプル探してるんだけど、みんな ffmpeg に渡したり、subprocess 使ってる。
978デフォルトの名無しさん
2021/12/23(木) 23:04:17.60ID:zCNeJPRa 取得後は単なるデータ列としてか扱えないぽいから
https://streamlink.github.io/api.html#streamlink.stream.HLSStream
コマンドライン同様どう取得するかを指定できるだけであまりうれしくなかった。
それでいいならI/Oとしては扱える。
MPEGコンテナ操作するプログラムを別途書けば加工もできるけど
どこまで制御したいかによる。
https://streamlink.github.io/api.html#streamlink.stream.HLSStream
コマンドライン同様どう取得するかを指定できるだけであまりうれしくなかった。
それでいいならI/Oとしては扱える。
MPEGコンテナ操作するプログラムを別途書けば加工もできるけど
どこまで制御したいかによる。
979デフォルトの名無しさん
2021/12/23(木) 23:19:13.76ID:Gg61L1jf 取得したデータをffmpeg-pythonに渡してoutするしかないんですかね。
980デフォルトの名無しさん
2021/12/24(金) 06:23:53.37ID:7mLGjij2 Visual Studio Code で python 3.9を使用していたのですが
python 3.10にアップデートしました
match文を使ってみたところ、インデントのエラーが表示されます
実行はできます
Visual Studio Codeで何か設定したりしなければいけないのでしょうか?
python 3.10にアップデートしました
match文を使ってみたところ、インデントのエラーが表示されます
実行はできます
Visual Studio Codeで何か設定したりしなければいけないのでしょうか?
981デフォルトの名無しさん
2021/12/24(金) 13:23:38.00ID:w5aKK4fu pylintが3.10に対応してないバージョンなのでは
982デフォルトの名無しさん
2021/12/24(金) 17:30:33.82ID:7mLGjij2983デフォルトの名無しさん
2021/12/25(土) 14:28:37.83ID:O1DganTQ vscは基本pylanceでええょ
984デフォルトの名無しさん
2021/12/25(土) 15:00:20.62ID:f1xUz6ll Pythonの拡張のデフォルトランゲージサーバーってpylanceにじゃなかった?
まだデフォルトになってないっけ
まだデフォルトになってないっけ
985デフォルトの名無しさん
2021/12/25(土) 18:39:11.66ID:wLd1kjlZ Jediに設定したことがあったらそっちが使われるからな
俺は今でもJediを使ってる
Pylanceだと、Python 2/3の互換性を維持しようとすると、
もう片方のインポートエラーとかが鬱陶しいんだよ
まぁ、黙らせる設定でもいいんだけど、Jediのほうが手っ取り早いので
俺は今でもJediを使ってる
Pylanceだと、Python 2/3の互換性を維持しようとすると、
もう片方のインポートエラーとかが鬱陶しいんだよ
まぁ、黙らせる設定でもいいんだけど、Jediのほうが手っ取り早いので
986デフォルトの名無しさん
2021/12/25(土) 23:26:55.99ID:4wn3W7Lt 10桁以上のint値を扱うと、自動で数字変換されてしまうのですが、どういう原理になってんでしょうか?
6631510311なら-1978424486に変換
ライブラリはNumpyとPandas
6631510311なら-1978424486に変換
ライブラリはNumpyとPandas
987デフォルトの名無しさん
2021/12/26(日) 01:16:59.54ID:bjcghV5B 32ビットintだと21億までしか表現できないから適当な数(ルールはあるが面倒だからここでは触れない)に置き換えられてる
64ビットintにすれば置き換えされない
64ビットintにすれば置き換えされない
988986
2021/12/26(日) 11:08:42.45ID:+UpYRQsi 解決しました。有難う
intにもビット指定があったんすね
intにもビット指定があったんすね
989デフォルトの名無しさん
2021/12/26(日) 13:37:12.67ID:0SXvw2xa990デフォルトの名無しさん
2021/12/26(日) 15:33:50.15ID:ipgF0889 不等号を反転させ、逆の結果を得たいと思いました
a,bはint型ですが3や5には特に意味はありません
b>a(例 5>3)がTrueとなるような値を取ります
f=-1でその逆の結果になるのを想定しています
a=3
b=5
def hoge(f=1):
_if f*(b-a)>0:
__print("o")
_else:
__print("x")
hoge()
hoge(-1)
これでいいでしょうか?
例外があったり、こういうことをする場合の標準関数とかすでにあるのかなと思い質問しました
a,bはint型ですが3や5には特に意味はありません
b>a(例 5>3)がTrueとなるような値を取ります
f=-1でその逆の結果になるのを想定しています
a=3
b=5
def hoge(f=1):
_if f*(b-a)>0:
__print("o")
_else:
__print("x")
hoge()
hoge(-1)
これでいいでしょうか?
例外があったり、こういうことをする場合の標準関数とかすでにあるのかなと思い質問しました
991デフォルトの名無しさん
2021/12/26(日) 15:46:31.51ID:0SXvw2xa992デフォルトの名無しさん
2021/12/26(日) 15:52:21.23ID:YaEmqJRZ 関数にするんだったらdef hoge(a,b)みたいにしたほうが分かりやすいと思う
符号を1、-1、0で返してくれるnumpy.sign()ってのもある
符号を1、-1、0で返してくれるnumpy.sign()ってのもある
993デフォルトの名無しさん
2021/12/26(日) 17:08:09.42ID:JuKsRG7c すみません。ソースコードのディレクトリ、ファイル構成については以下を参照しているのですが、正しい情報でしょうか?
ttps://rinatz.github.io/python-book/ch04-07-project-structures/
また、上記ではライブラリとアプリケーションの区別が出来ない構成であることが問題とされています。
ライブラリを作成後、それをアプリケーションで使いたい場合、アプリケーションのソースコードの構成はどのようにするのが、定跡なのでしょうか?
よろしくお願いいたします。
ttps://rinatz.github.io/python-book/ch04-07-project-structures/
また、上記ではライブラリとアプリケーションの区別が出来ない構成であることが問題とされています。
ライブラリを作成後、それをアプリケーションで使いたい場合、アプリケーションのソースコードの構成はどのようにするのが、定跡なのでしょうか?
よろしくお願いいたします。
994デフォルトの名無しさん
2021/12/26(日) 17:26:46.11ID:v3hzgqs8995デフォルトの名無しさん
2021/12/26(日) 17:38:40.82ID:JuKsRG7c996デフォルトの名無しさん
2021/12/26(日) 17:54:42.34ID:JuKsRG7c >>994
すみません。教えていただいた情報も基本的にパッケージに関する構成についての説明のようです。
パッケージを自作することは出来そうですが、それを呼び出すアプリ側をどうすればいいのかはよくわかりませんでした。
すみません。教えていただいた情報も基本的にパッケージに関する構成についての説明のようです。
パッケージを自作することは出来そうですが、それを呼び出すアプリ側をどうすればいいのかはよくわかりませんでした。
997デフォルトの名無しさん
2021/12/26(日) 22:23:52.52ID:bjcghV5B 993のgithubの文章はアプリケーションとライブラリと両方の側面を持つプロジェクトの話をしてるけど、あなたのプロジェクトもそうなの?
そうなら文章の一番下に書いてある構成を取ればいい
そうじゃなくて他のプロジェクトからこのプロジェクトをパッケージとして参照したいということなら、それはsys.pathsの話であってプロジェクト構成はあまり関係ない
そうなら文章の一番下に書いてある構成を取ればいい
そうじゃなくて他のプロジェクトからこのプロジェクトをパッケージとして参照したいということなら、それはsys.pathsの話であってプロジェクト構成はあまり関係ない
998デフォルトの名無しさん
2021/12/26(日) 22:34:36.91ID:bjcghV5B んでパッケージを他のプロジェクトから参照したいなら
利用される方のパッケージをpip installできるように作ってインストールするか
他のプロジェクトの方で起動前にPYTHONPATHを設定するか
他のプロジェクトの方でimportする前にsys.pathを追加するか
さしあたりはどれかをする必要がある
ここらはいいガイド文章を知らないので知ってる人に紹介してほしい
利用される方のパッケージをpip installできるように作ってインストールするか
他のプロジェクトの方で起動前にPYTHONPATHを設定するか
他のプロジェクトの方でimportする前にsys.pathを追加するか
さしあたりはどれかをする必要がある
ここらはいいガイド文章を知らないので知ってる人に紹介してほしい
999デフォルトの名無しさん
2021/12/26(日) 23:35:43.44ID:kGCGxR6+ うめ
1000デフォルトの名無しさん
2021/12/26(日) 23:35:58.11ID:kGCGxR6+ pass
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 86日 7時間 49分 11秒
新しいスレッドを立ててください。
life time: 86日 7時間 49分 11秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中居正広、水面下で反撃の準備か 第三者委員会の報告書での“性暴力者”認定に強い抵抗感、自らの口で真相を明らかにする考えも [Ailuropoda melanoleuca★]
- ダウンタウンが芸能活動再開へ、今夏ネット配信サービス開始★3 [jinjin★]
- 「自衛隊は人殺しの訓練」発言の共産党滋賀県議、本会議で謝罪「申し訳ありませんでした」 [少考さん★]
- 「子どもも車道?路駐なんとかしろ」自転車の交通違反に青切符《歩道通行6000円》募る批判🚲三 [パンナ・コッタ★]
- 米インテル、赤字2倍 業績改善へ追加リストラ 1~3月期 [香味焙煎★]
- 「コメの関税を下げたら自民党は吹っ飛ぶ」 農業団体首脳が断言 農林族のドンも危機感あらわ…コメ輸入拡大で試される石破政権★2 [夜のけいちゃん★]
- 【悲報】読売新聞「万博来場100万人突破?実は16万人以上がメディアとスタッフです🤗」これは大阪国際法違反か [359965264]
- 【悲報】石破茂「氷河期世代を救うため『会議』を開く!しばし待たれよ😤」 [616817505]
- 河野太郎「専業主婦は夫の収入に余裕がある人がやっている、その人の保険料をシングルマザーが負担しているというのは公平ではない」炎上 [256556981]
- 【GDP】 🇯🇵日本 「世界5位」 になった事が判明……😱😭😨 [485983549]
- 万博行こうと思うんだけど5000円あれば足りるかな? [907330772]
- 【ジャップ悲報】嫌儲のスレ立て人「牛乳パック」、m-floのTAKU TAKAHASHI⭐︎にリプをつけられてしまう… [603865667]