[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/30 19:48 / Filesize : 277 KB / Number-of Response : 1011
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その46【Ruby禁止】



1 名前:デフォルトの名無しさん [2020/01/02(木) 15:56:54.08 ID:ZUrZA+uS.net]
当スレに★Python以外のプログラミング言語での回答類を書くべからず★
☆「Ruby では」「Rubyでは」をNGワード登録推奨

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

★Pythonのソースコードはそのまま5ちゃんにコピペするとインデントが崩れるので
  ↓等のてきとうなソースコード用うpろだに貼ってきてください。
  スクショをImgur等にうp といった 手抜き(クソ行為)禁止。
ttp://ideone.com/      デフォ設定はC用のため言語選択ボタン押下がピコ手間かも。
ttp://codepad.org/      ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/     まずまずシンプル。
ttp://dpaste.com/      とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
ttps://jupyter.org/try    (旧try.jupyter.org)ちょっとめんどうそう

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

◇Python公式サイト◇ www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/

496 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:28:23 ID:GAMNd4TG.net]
一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
elems= の前に 例えば print(html) とするとGoogle画像検索結果の画面全体は取れているのです。
しかしそれは全体像なので、個々の1枚1枚を取得してphpmyadminに格納したり、とかそれが狙いであるので
elems = のところでつまずいてはやはりまずい具合です。

そして目的の画像検索結果、 例えば 山で検索して


<!--
<img class="rg_i Q4LuWd tx8vtf"
src="data:image/gif;base64,R0lGODlhAQABAIAAAP///////yH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
data-iid="0" data-iurl="https://encrypted-tbn0.gstatic.com/images?q=tbn%3AANd9GcRFWZJ-G8GOvPEcPPJZqy_IqLTMokKOyW_VAdDON2S_9V6cnOQZ" jsname="Q4LuWd"
alt="「山」の画像検索結果" />
-->
↑この要素が欲しいものです
ここのimgのclassにrg_i というものがありこれはヒントの一つ?かと想像したりするのですが
data-iurl= のこれが取得したい画像のURLだと思います。 URLで hrefでなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します;

497 名前:デフォルトの名無しさん [2020/02/06(Thu) 11:42:27 ID:GAMNd4TG.net]
>>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ…

498 名前:デフォルトの名無しさん mailto:sage [2020/02/06(Thu) 12:10:59 ID:xAE/eJ0Q.net]
改行を含めてfindする方法ってないですか?

499 名前:デフォルトの名無しさん mailto:sage [2020/02/06(木) 12:25:05.18 ID:PruBe/51.net]
>>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね

あとfirefox10でも47でもないいい加減なUAはやめとけ

500 名前:デフォルトの名無しさん mailto:sage [2020/02/06(Thu) 12:35:55 ID:/hIhK6yv.net]
要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか

スクレイピングは、相手のサイトを分析するのが難しいのと、
適切に限定される、セレクターを作るのが難しい

API が公開されているなら、APIを使った方がよい

漏れは、Ruby で、Selenium WebDriver, Nokogiri などで、
Chrome, Edge などのブラウザーを自動操作して、スクレイピングするけど

ここに書いておいた

【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27

501 名前:デフォルトの名無しさん [2020/02/06(Thu) 12:41:43 ID:zAec24ND.net]
>>494
改行=\n または \r\n

502 名前:496 mailto:sage [2020/02/06(Thu) 12:45:42 ID:/hIhK6yv.net]
>>492
Base64 は、HTML でもよく使う

Base64の文字列で、PNG/JPEG画像を、HTMLファイルに直接埋め込める

<img src="data:image/png;base64,xxxxx..." />

503 名前:496 mailto:sage [2020/02/06(木) 12:59:31.10 ID:/hIhK6yv.net]
>>492
適切に、1つに限定される、セレクターを作るのが難しい!
以下で、特定できないのか?

class="rg_i Q4LuWd tx8vtf"
data-iid="0"
jsname="Q4LuWd"

それか、img 要素の外側で、id など、限定される要素を探すか。
基本的には、idを探さないと特定できない

idを振っていない場合は、そのサイト特有のルールを発見しないといけない!

例えば、5ch のスレ内では、id が無いから、
data-id に投稿番号が入っているので、それを使うとか

このように、相手のサイトを分析するのが難しい!

504 名前:デフォルトの名無しさん [2020/02/06(Thu) 13:30:53 ID:GAMNd4TG.net]
>>495
firefoxのUA、修正します。すみませんでした;

そして、以下でやってみましたが
elems = html.select('img[data-iurl]')
なぜか出来ずに、うむむ…と申し訳ありません、さらに研究してみますが…



505 名前:496 mailto:sage [2020/02/06(木) 14:30:31.06 ID:/hIhK6yv.net]
>>496
にも書いたけど、
要素をAjax で非同期処理に読み込むから、またimg 要素が存在しないとか?

Ruby で、Selenium WebDriver を使えば、要素が出現するまで、自動的にwait する。
await みたいに、非同期処理を同期的に書ける

506 名前:496 mailto:sage [2020/02/06(木) 14:34:29.34 ID:/hIhK6yv.net]
もっと簡単に、10〜20 秒ぐらい、sleep したら、img 要素が出現しないのか?

507 名前:デフォルトの名無しさん [2020/02/06(Thu) 16:58:26 ID:GAMNd4TG.net]
一応成功致しました!

>>500
結果としてelems = html.select('img[data-iurl]')
で、このelemsとしては取れていたようです!

ここは元々elems = html.select('.rg_meta.notranslate')
であったと最初に出しましたが このelemsを
↓(適当〜8行くらい)
------------------
for ele in elems:
eledict = dict()
ele = ele.contents[0].replace('"','').split(',')
for e in ele:
num = e.find(':')
eledict[e[0:num]] = e[num+1:]
imageURL = eledict['ou']・・・・・
--------------
というような感じで使っていたのですが img[data-iurl]の今回? 目的のurl自体はスムーズに取れていたようで

for ele in elems:
imageURL = ele.get('data-iurl')

今回elemsのeleを ele.get('data-iurl') で、1枚づつ取ることができたようでした。
有難うございました!

508 名前:デフォルトの名無しさん [2020/02/06(Thu) 20:03:36 ID:bDkEju7l.net]
asyncioってわかる人いますか?

509 名前:デフォルトの名無しさん [2020/02/07(金) 07:27:17 ID:cGGfIEk4.net]
知ってるよ(どの程度を期待してるのか知らないけどな)

510 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 07:30:51.90 ID:u54KGCZV.net]
thread
threading
multiprocessing
concurrent.futures
asyncio

この辺の違いがよく分からない

511 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 08:43:13.34 ID:sQ9sQIGh.net]
>>506
それらはOSやCPUを自力で作れる神クラスの技術者でないと理解できないし、使いこなせないと思う
一般人である自分もドキュメントを読んでみたが、チンプンカンプン(死語)だった
さっさと忘れてPythonを楽しみましょう

512 名前:デフォルトの名無しさん [2020/02/08(土) 10:13:41 ID:gJJFnkpu.net]
GUIやるなら、threadかasyncioのどちらかは必須。

513 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 10:16:19 ID:I0dCURwg.net]
プロセスとスレッドの違いは知っておいて損はない

514 名前:デフォルトの名無しさん [2020/02/08(土) 10:19:32 ID:0YppiA+B.net]
GUIやるならC#+VisualStudioが一番



515 名前:デフォルトの名無しさん [2020/02/08(土) 10:26:34 ID:iJq/sxyx.net]
Macにも持っていけるの?
>>510

516 名前:デフォルトの名無しさん [2020/02/08(土) 10:32:22 ID:0YppiA+B.net]
Mac持ってないからわからん
俺は自分用ツールしか作ったことない

517 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 10:37:32 ID:VCX1KXbd.net]
なんで情弱しか使わないMacに対応しなきゃいけないんですか!(半ギレ

518 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 11:10:45 ID:E/mrDwXz.net]
Windowsは情強だけ使っていればよろしい

519 名前:デフォルトの名無しさん [2020/02/08(土) 11:12:38 ID:K7+uW5ie.net]
シェア一割のくせに態度だけ見てると九割くらいありそうだよなw

520 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 12:15:26 ID:E/mrDwXz.net]
Mac以外の残り9割の殆どがゴミ

521 名前:デフォルトの名無しさん [2020/02/08(土) 12:37:42 ID:W0we+YOR.net]
売れない芸人が一丁前に何か言ってるわ

522 名前:デフォルトの名無しさん [2020/02/08(土) 13:20:07.76 ID:iJq/sxyx.net]
Windows/Mac/iOS/androidに対応したGUIを作ることができます
そう、pythonならね

523 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 13:33:43.29 ID:9Nn74D/R.net]
React Native + Expo

アシアルのMonaca(Cordova/PhoneGap) + Onsen UI もある

524 名前:デフォルトの名無しさん [2020/02/08(土) 13:47:48 ID:YnTe+96U.net]
普通にWindowsで作ったC#はLinuxでもMacでもMonoで動くぞ



525 名前:デフォルトの名無しさん [2020/02/08(土) 13:48:05 ID:YnTe+96U.net]
GUI含めて。

526 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 14:36:46.22 ID:FKWW677q.net]
>>520
.netcoreだよね?

527 名前:デフォルトの名無しさん [2020/02/08(土) 14:46:34 ID:KXr/QwX0.net]
Monoって書いてるだろ

528 名前:519 mailto:sage [2020/02/08(土) 15:35:46.13 ID:9Nn74D/R.net]
C# では、Microsoft が、

>>519
や、Unity などに対抗するために、Xamarin/Mono を買収した

529 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 16:54:09 ID:DP9vcaNb.net]
>>515
ワロタ!(・∀・)

530 名前:デフォルトの名無しさん [2020/02/08(土) 17:09:56 ID:Gwq8LIiY.net]
Ruby禁止だけじゃなくMono/C#も禁止するか

531 名前:デフォルトの名無しさん [2020/02/08(土) 17:19:51 ID:szXf7gpM.net]
qtって汚いよな

532 名前:デフォルトの名無しさん [2020/02/08(土) 17:28:08 ID:uuv8oSvR.net]
RADツールもないもんな
知らんけど

533 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:29:00 ID:0wE1WgKD.net]
>>515
開発者のMacのシェアは約30%、Windowsは約45%、Linuxが25%
Windowsはシェア半分もない

534 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:46:35.97 ID:Ewdvkn0R.net]
世代交代しか訴えられないんじゃぁ、ぶてぃじぇっじもたいした候補じゃねーなぁ



535 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 17:51:48.56 ID:lxxY/dO6.net]
やっぱ一番かっこいいのはkivy?

536 名前:デフォルトの名無しさん [2020/02/08(土) 20:33:49.47 ID:Y+Ds/PpP.net]
>>506>>507
良くわかるけど
Pythonやるにはあまり関係ないよ?

537 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 21:53:48 ID:tg7wd02h.net]
>>506
ソフトエンジニアならわからないと馬鹿にされるんだろうが
でも、この底辺スレに来る連中はエンジニアではなく低レベルのサンデープログラマが
ほとんどで分からない奴が大多数だろ(もちろん俺もわからん)

538 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:16:28 ID:DP9vcaNb.net]
>>506
プロセス(OSから見えてる単位)→スッドレ(プロセスの下にわさわさ増殖可能)→コア(CPUの部品)

1プロセス=1CPU
プロセスとプロセスの間の情報やり取りはゲキムズ&低速。

スッドレとスッドレの間はやり取りOKだけど、
メモリを奪い合わったり書き換えっこになったりしないように要注意。
あと、旧来は1スッドレ1コアが普通だったけど、
今は2スッドレ1コアが普通になりつつあり、
多スッドレ→1コアする場合はメモリ領域の扱いに注意が必要。

(どのスッドレも同時にみんな手をつないでゴール!を強要されない計算の場合は)
1つのプロセスからいっぱいスッドレわかせて計算するより、
いっぱいプロセス湧かせて順次まとめあげる方が、高速&効率が良いはずである。
だが、
多プロセス化するとメモリはもっさり消費される傾向なので、
ほんとのところは、
やりたいことが同期を強く求めてるかどうかと、マシンスペックによるのである。

539 名前:デフォルトの名無しさん [2020/02/08(土) 22:17:55 ID:0YppiA+B.net]
突っ込まないぞ

540 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:18:40 ID:0wE1WgKD.net]
スッドレスッドレ
(わさわさ)

541 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:31:02 ID:DP9vcaNb.net]
(つづき)
さきにあげた並行処理をPythonにさせるとき使うライブラリが506の質問であがってるさいしょの3ツ。

threading : スッドレをいっぱいわかせることができる(マルチスッドレ)
multiprocessing : プロセスを複数作れる

ケツ2つはやはり並行処理なのだが、
「ノンブロッキング処理」とゆうのをさせるためのもので、
投入されたPythonのバージョンが違う(concurrent.futuresの方が古い)のと、
とっつきやすさが違う(concurrent.futuresの方が人類にはとっつきやすい)。
これらを使うメリットがあるのは下の3条件を満たしてるとき。特に3についてはよく考えろ。
1.過程で、ボトルネックなクソ重い処理がある
2.それが何度もやってくる
3.ボトルネックの通過完了時刻が全部バラバラになってもおk(追い越しOK)で、
  最終的にまとまればいい。

もっと詳しくは
ggってHitした↓でもよんでくれ。
ttps://qiita.com/icoxfog417/items/07cbf5110ca82629aca0

542 名前:デフォルトの名無しさん mailto:sage [2020/02/08(土) 22:31:57 ID:DP9vcaNb.net]
ココハ ゴジャースナ(・∀・)スッドレ ダヨ!!!

543 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 01:28:40 ID:JzPk4jqf.net]
>>534
ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解してるようだな。
勉強してからもう一度書き込むように。

544 名前:デフォルトの名無しさん [2020/02/09(日) 07:52:13.11 ID:CdDouLVX.net]
>>> (10).to_bytes(2,'big')
b'\x00\n'

期待している結果となりません。
b'\x00\x0a' にならないのは何故?



545 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 08:44:46 ID:vHnIKgeN.net]
>>540
ドキュメントのbyteオブジェクト関連の項目を読むと書いてあるが
文字として見せた方がわかりやすいと思われるバイト値は
16進ではなく文字で表示する方針なのだそうだ
だから値としては正しく格納されているので気にしなくてよろしい

546 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:24:21 ID:CdDouLVX.net]
>>541
納得しました
誰得の方針なのか、モヤモヤは残りましたが…

547 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:30:32 ID:vHnIKgeN.net]
>>542
ところで、この(値).to_bytes()っていう書き方は初見なんだが
いつからある機能なんだろうか(自分の知識はver.3.3で止まっている)
JavaっぽくてPythonらしくないと感じるのだが

548 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 09:51:55.28 ID:CdDouLVX.net]
>>543
int.to_bytes(length, byteorder, *, signed=False)

New in version 3.2.
だそうです

549 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 10:38:09 ID:hMxVM0F3.net]
flaskでsms認証つけたいんですけど何がおすすめでしょうか?
アカウントにユーザーのメルアド、氏名、住所もつけておきたいです。

550 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 10:56:43 ID:vHnIKgeN.net]
>>544
サンクス
一つ賢くなったよ

551 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:03:20 ID:uG+JJfG5.net]
知識が増えただけで賢くはなって無いんじゃないの

552 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:07:52 ID:vHnIKgeN.net]
>>547
人の会話に茶々入れるんじゃないよ
即NGだ

553 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:26:42 ID:uG+JJfG5.net]
会話に茶々入れたくなければ公開掲示板なんかで聞かなきゃいいじゃん
つまりいくらでも茶々入れていいのが2ch5chでしょ
その基本を無視して俺ルールをいきなり押し付けられても困る

で、賢さってのは知識量のことなワケ?

554 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:27:51 ID:uG+JJfG5.net]
だって「超初心者」が知識と賢さを混同してるらしいからね
ほっとけないね



555 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:32:14 ID:EbhgtQ51.net]
>>539
>ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解
そのようだ…

ありがとう
そしてありがとう

Pythonのライブラリでやれるのは
ソフトウェア的マルチスッドレだな

556 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 11:34:06 ID:EbhgtQ51.net]
というわけで
>>506よ、
536のことはうっちゃっておいて
>>537の先頭2行も脳内から消して、詳しくはケツに貼ったQiitaの人の記事を読んでクレクレ

557 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:11:02.39 ID:vWZlCr2H.net]
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?

558 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:16:47 ID:uG+JJfG5.net]
一般的には想定される普通の使い方をする時に一番早くなるように言語を作る
それに間に一枚噛んでると遅くなる、と思うのが人間

あとは長さ10万くらいのリストを数千回試して時間を計る

559 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:26:35 ID:mfrF5HLR.net]
>>553
試すといいよ。ってのが正しいと思うけど、あえてマニュアルから。
https://docs.python.org/ja/3/reference/compound_stmts.html#the-for-statement

> 式リストは一度だけ評価されます。

ってあるから、ほぼ変わらんのでは?

560 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:44:06 ID:zgc2MTJg.net]
list->setのコスト分だけ遅いだろ

561 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 12:53:21 ID:2kp9QhUs.net]
論より証拠
昔の人は良いことを言った

562 名前:デフォルトの名無しさん [2020/02/09(日) 13:38:53 ID:haksjRuS.net]
お前ら木偶の坊なんだから俺の疑問に答えて少しは世の中の役に立てよ

という意識があのような質問を生むのだ

563 名前:デフォルトの名無しさん [2020/02/09(日) 14:44:11 ID:KmTvxb40.net]
>>555
sum(for x in range(10))
sum([for x in range(10)])
これの違い。

564 名前:デフォルトの名無しさん [2020/02/09(日) 14:49:31 ID:KmTvxb40.net]
sum(x for x in range(10))
sum([x for x in range(10)])
だった。



565 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 14:56:02.52 ID:OACAfflF.net]
>>560
どう違うの?
下は内包表記?

566 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 15:22:07.62 ID:O6Vx4x7H.net]
>>553
listをsetに変換するコストを無視してもsetをイテレートするほうが遅いよ
hash tableをイテレートする時に必要な処理とlistをイテレートする時に必要な処理の違い

といってもその差は微々たるものだから
その差が重要なプログラムを書こうとしてるなら言語を変えたほうがいいかも

567 名前:デフォルトの名無しさん [2020/02/09(日) 15:35:28.11 ID:vWZlCr2H.net]
>>554-562
ありがとうございます
あまり大きくは変わらないのですね
参考にします

568 名前:デフォルトの名無しさん [2020/02/09(日) 15:45:54.02 ID:wTv3WydA.net]
>>561
上: generator (リストは造らない)
下: 内包表記 (リストが造られる)

569 名前:デフォルトの名無しさん [2020/02/09(日) 15:54:02.80 ID:KmTvxb40.net]
for i in set(list):
listのイテレートとsetのイテレートが発生するのと、一旦setのためのメモリが確保されるから、
setの重複排除機能が必要でない限り、100%無駄だと断言できる。

570 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 16:12:45 ID:O6Vx4x7H.net]
>>563
複数のやり方でどれが速いのか気になったら%timeitしよう

571 名前:デフォルトの名無しさん [2020/02/09(日) 16:14:09 ID:wTv3WydA.net]
むしろforの中身を見直すか
numpyとか使うべき
ループはクソ遅い

572 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 21:20:07.67 ID:U6aZQoQk.net]
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが

573 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 22:35:43 ID:u7Xk0tZr.net]
>>568
>そっちは遅くて当たり前なんだが
その当たり前を教えてくれ

574 名前:デフォルトの名無しさん mailto:sage [2020/02/09(日) 23:21:11 ID:U6aZQoQk.net]
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す



575 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:00:12 ID:NX1L632S.net]
>>568
リストをfor文を回してsetより速くする方法が他にあるってことですか?

576 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 00:07:40 ID:fRmEVRio.net]
>>570
リストって、毎回全要素をリニアサーチしているって事ですか?

577 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 01:46:01.93 ID:y8VN1gM7.net]
>>571
>>568
>forでsetより遅くなる道理はないと思うが
と言っている。で、これから
>リストをfor文を回してsetより速くする方法が他にあるってことですか?
がなぜ出てくるんだ?
>>568の前の部分はfor~inについてではなく、
list/setの要素にこれ(x)ある?を調べるin演算(x in list/set)についての
ことを言っている。

578 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 07:54:06.49 ID:NX1L632S.net]
>>573
なるほど、ありがとうございます

579 名前:デフォルトの名無しさん [2020/02/10(月) 09:51:35 ID:5lt6zYiz.net]
>>572
570はサーチとイテレートをごっちゃにしてるわな。
listは動的配列だから、オブジェクトへのポインタのポインタをインクリメントしてるだけだわな。
サーチはその後の話だろ。

580 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 09:58:28 ID:8uBZGbTk.net]
>>575
いや君がごっちゃにしてるだけでイテレートの話なんてしてないだろ
570はin演算子使った時にどうやって探すかの話だろ

581 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 16:12:22 ID:fRmEVRio.net]
色々脱線はしているのかもしれないが、最初の質問は >>553 で
リストを処理するのに、そのままよりも、
setを噛ませた方が速くなるかどうか、ということであって
リストの内容は全件処理しているようだし

582 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:20:59 ID:8uBZGbTk.net]
なに意味不明なことうだうだ言ってんの

583 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:29:20 ID:fRmEVRio.net]
568 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 21:20:07.67 ID:U6aZQoQk
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが

570 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 23:21:11.41 ID:U6aZQoQk
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す

この辺の説明を ID:U6aZQoQk がちゃんとすれば良いんだと思う

584 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:38:58 ID:8uBZGbTk.net]
逆になにがわからないのかわからないんだが



585 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:42:34 ID:fRmEVRio.net]
分かるまで、みんなの話を聞いていたら

586 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:44:23 ID:fRmEVRio.net]
553 名前:デフォルトの名無しさん[sage] 投稿日:2020/02/09(日) 12:11:02.39 ID:vWZlCr2H
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?

これが最初の質問

587 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:47:57 ID:fRmEVRio.net]
この質問で想定される回答は

for i in set(list):の方が高速
どちらも変わらない
set 使わない方が高速

この三通りじゃないかと思うが

588 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:55:55 ID:cKG4UD69.net]
>>580
俺も何がわからないのかわからん

in演算子が何かわかってないから
>>568や>>570に書いてることが理解できないんじゃないかな
と想像してみる

589 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 17:59:57 ID:cKG4UD69.net]
>>583
それはもう回答が出てるでしょ

んで普通に考えたらsetにしたほうがが速いという考えにはならないのに
setのほうが高速かもしれないと思ってしまってるのは
for loopのfor x in fooの`in`と
contains(foo, x)を演算子にしたin演算子の`in`とを勘違いしてるんじゃない?
ってコメントが>>568

590 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:20:13.36 ID:fRmEVRio.net]
回答までにしか興味は無いです
後は、妄想も含めた雑談なわけだし

591 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 18:21:49.94 ID:8uBZGbTk.net]
>>584
そういうことかね

>>585
前にQiitaでリストにin演算子使うと遅いっていう記事がバズってたからね
そういうの見て質問者が漠然とリストはsetより遅いって思い込んでしまった可能性はあるね

592 名前:デフォルトの名無しさん [2020/02/10(月) 19:06:26.64 ID:NX1L632S.net]
>>584
質問者ですがそうです
setのforループの方が早いのかと思い込んでいました
>>574で自分の勘違いに気づいたところです

593 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:34:40.34 ID:TAH0RZ5f.net]
>>583
ケースバイケース
っていう可能性もあるかと

594 名前:デフォルトの名無しさん mailto:sage [2020/02/10(月) 19:44:21.91 ID:fRmEVRio.net]
>>589
ハッシュキーが衝突したレコードが大量にあるとか、かな?



595 名前:デフォルトの名無しさん [2020/02/11(火) 10:10:26.19 ID:QVEssOx9.net]
ちっちゃい質問かもなんですが
かっこ閉じ際の位置ってpython的にはどこが良いですか?

例えば
def kakko(a,b):
____a+b
というdefを使うときに行の最後にかっこをつけるか
kakko(
____1+2+3+4,
____5+4+6+7)
改行してかっこの中のインデントに合わせるか
kakko(
____1+2+3+4,
____5+4+6+7
___)

kakkoのインデントに合わせるのか
kakko(
____1+2+3+4,
____5+4+6+7
)

596 名前:デフォルトの名無しさん mailto:sage [2020/02/11(火) 10:24:42.95 ID:iLli/Di+.net]
>>591
pythonの思想は1行で処理だから改行すな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<277KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef