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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2020/01/02(木) 15:56:54.08ID:ZUrZA+uS
当スレに★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公式サイト◇ http://www.python.org/
◇まとめwiki◇ ttp://python.rdy.jp/

〇前スレ〇
くだすれPython(超初心者用) その45【Ruby禁止】
https://mevius.5ch.net/test/read.cgi/tech/1571188632/
2020/02/05(水) 21:27:18.91ID:ZizT6Tal
簡単なことなんだけどな
データがあって、目的が決まっている
この二点をクリアできないと機械学習をする意味がない
二点がクリアされたとしても性能がでるという保証はないが
483デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:04:06.46ID:GAMNd4TG
BeautifulSoupとかいうのを使ってGoogle画像検索結果をスクレイピングしてたけど
多分Google検索結果あたりが変わってとれなくなりました。

html.select('.rg_meta.notranslate')
このあたりの仕様が多分変更になったと思うんですが
うまく取得できる方法を教えて頂けたら有難いです…。よろしくお願い致します;。
484デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:10:38.29ID:76t6g1c3
今後検索結果が変更になる度にここで聞くのかな?(笑)
485デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:14:57.47ID:GAMNd4TG
>>484
申し訳ありません…
でしたら、クラスの指定と思うのですがそのあたりのコツと言いますか
間違いなく出来る方法あたりをお教頂けましたら…
現在  .rg_i というクラスはあるのですが
これをもう、 .rg_i. src img href a そのた思いつくものを
やれるだけ順番を前後させても、半日以上経過しても進めず
本当に苦しくなってきてしまっておりまして、すみません…。
2020/02/06(木) 09:31:11.49ID:xfRnZ+h4
BeautifulSoup使ったことないがググったら答え即でたw
487デフォルトの名無しさん
垢版 |
2020/02/06(木) 09:37:38.28ID:GAMNd4TG
>>486
すみません…。自分は前後を変えたり何度やっても
空といいますか画像が取得できないので、
お教頂けたら、ありがたいです…。
488デフォルトの名無しさん
垢版 |
2020/02/06(木) 10:35:45.43ID:GAMNd4TG
>>486
すみませんです…どうやって検索したらよいかお教え頂けましたら…
489デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:07:22.39ID:d7NhcEcy
教えてやるからどこかにパースしてるHTMLを全部置け
そしてどの要素が欲しいかHTMLの中に <!--この要素が欲しい--> と書け
2020/02/06(木) 11:20:21.83ID:xfRnZ+h4
JavaScriptで動的になったからSelenium使えって書いてた
491デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:27:31.04ID:GAMNd4TG
有難うございます。
すみません、keywordは山として以下のようにして取得を目指しており
それで<!-- --> でほしいのですが 以下の表記方法ではだめでしょうか。




urlKeyword = parse.quote(keyword)
url = 'https://www.google.com/search?hl=jp&;q=' + urlKeyword + '&btnG=Google+Search&tbs=0&safe=off&tbm=isch'

headers = {"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:47.0) Gecko/20100101 Firefox/10.0",}
request = req.Request(url=url, headers=headers)
page = req.urlopen(request)

html = page.read().decode('utf-8')
html = bs4.BeautifulSoup(html, "html.parser")

elems = html.select('.rg_meta.notranslate')


この最後の.rg_meta.notranslate のあたりで目的の画像を一つ一つ取り出せなくなっていると分析しています。
492デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:28:23.61ID:GAMNd4TG
一昨日くらいまでは取れておりました。
現在も、 ではグーグル画像検索そのものが取れてないとか何かブロックされているのか?と言うと
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でなく こういう書式で表示されているのだな、と思いますが
ここを取得したいと思っております。
すみませんが;宜しくお願い致します;
493デフォルトの名無しさん
垢版 |
2020/02/06(木) 11:42:27.42ID:GAMNd4TG
>>490
左様でございますか。一応使ったことはありますが
ちゃんと使いこなせるのかどうか…うーむ…
2020/02/06(木) 12:10:59.12ID:xAE/eJ0Q
改行を含めてfindする方法ってないですか?
2020/02/06(木) 12:25:05.18ID:PruBe/51
>>492
他に使ってなさそうで欲しい属性分かってるんだったら
elems = html.select('img[data-iurl]')
これでよくね

あとfirefox10でも47でもないいい加減なUAはやめとけ
2020/02/06(木) 12:35:55.03ID:/hIhK6yv
要素を非同期処理で読み込むから、要素が存在しないとか、
サイトの構成が変わったとか、
XPath/CSS セレクターが間違っているとか、
相手がアクセスをブロックしてくるとか

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

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

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

ここに書いておいた

【VBScript】WSHについて話し合うスレ【JScript】
https://mevius.5ch.net/test/read.cgi/tech/1578522041/24-27
497デフォルトの名無しさん
垢版 |
2020/02/06(木) 12:41:43.46ID:zAec24ND
>>494
改行=\n または \r\n
498496
垢版 |
2020/02/06(木) 12:45:42.46ID:/hIhK6yv
>>492
Base64 は、HTML でもよく使う

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

<img src="data:image/png;base64,xxxxx..." />
499496
垢版 |
2020/02/06(木) 12:59:31.10ID:/hIhK6yv
>>492
適切に、1つに限定される、セレクターを作るのが難しい!
以下で、特定できないのか?

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

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

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

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

このように、相手のサイトを分析するのが難しい!
500デフォルトの名無しさん
垢版 |
2020/02/06(木) 13:30:53.32ID:GAMNd4TG
>>495
firefoxのUA、修正します。すみませんでした;

そして、以下でやってみましたが
elems = html.select('img[data-iurl]')
なぜか出来ずに、うむむ…と申し訳ありません、さらに研究してみますが…
501496
垢版 |
2020/02/06(木) 14:30:31.06ID:/hIhK6yv
>>496
にも書いたけど、
要素をAjax で非同期処理に読み込むから、またimg 要素が存在しないとか?

Ruby で、Selenium WebDriver を使えば、要素が出現するまで、自動的にwait する。
await みたいに、非同期処理を同期的に書ける
502496
垢版 |
2020/02/06(木) 14:34:29.34ID:/hIhK6yv
もっと簡単に、10〜20 秒ぐらい、sleep したら、img 要素が出現しないのか?
503デフォルトの名無しさん
垢版 |
2020/02/06(木) 16:58:26.66ID:GAMNd4TG
一応成功致しました!

>>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枚づつ取ることができたようでした。
有難うございました!
504デフォルトの名無しさん
垢版 |
2020/02/06(木) 20:03:36.02ID:bDkEju7l
asyncioってわかる人いますか?
505デフォルトの名無しさん
垢版 |
2020/02/07(金) 07:27:17.45ID:cGGfIEk4
知ってるよ(どの程度を期待してるのか知らないけどな)
2020/02/08(土) 07:30:51.90ID:u54KGCZV
thread
threading
multiprocessing
concurrent.futures
asyncio

この辺の違いがよく分からない
2020/02/08(土) 08:43:13.34ID:sQ9sQIGh
>>506
それらはOSやCPUを自力で作れる神クラスの技術者でないと理解できないし、使いこなせないと思う
一般人である自分もドキュメントを読んでみたが、チンプンカンプン(死語)だった
さっさと忘れてPythonを楽しみましょう
508デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:13:41.17ID:gJJFnkpu
GUIやるなら、threadかasyncioのどちらかは必須。
2020/02/08(土) 10:16:19.38ID:I0dCURwg
プロセスとスレッドの違いは知っておいて損はない
510デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:19:32.94ID:0YppiA+B
GUIやるならC#+VisualStudioが一番
511デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:26:34.58ID:iJq/sxyx
Macにも持っていけるの?
>>510
512デフォルトの名無しさん
垢版 |
2020/02/08(土) 10:32:22.39ID:0YppiA+B
Mac持ってないからわからん
俺は自分用ツールしか作ったことない
2020/02/08(土) 10:37:32.38ID:VCX1KXbd
なんで情弱しか使わないMacに対応しなきゃいけないんですか!(半ギレ
2020/02/08(土) 11:10:45.42ID:E/mrDwXz
Windowsは情強だけ使っていればよろしい
515デフォルトの名無しさん
垢版 |
2020/02/08(土) 11:12:38.04ID:K7+uW5ie
シェア一割のくせに態度だけ見てると九割くらいありそうだよなw
2020/02/08(土) 12:15:26.33ID:E/mrDwXz
Mac以外の残り9割の殆どがゴミ
517デフォルトの名無しさん
垢版 |
2020/02/08(土) 12:37:42.97ID:W0we+YOR
売れない芸人が一丁前に何か言ってるわ
518デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:20:07.76ID:iJq/sxyx
Windows/Mac/iOS/androidに対応したGUIを作ることができます
そう、pythonならね
2020/02/08(土) 13:33:43.29ID:9Nn74D/R
React Native + Expo

アシアルのMonaca(Cordova/PhoneGap) + Onsen UI もある
520デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:47:48.76ID:YnTe+96U
普通にWindowsで作ったC#はLinuxでもMacでもMonoで動くぞ
521デフォルトの名無しさん
垢版 |
2020/02/08(土) 13:48:05.92ID:YnTe+96U
GUI含めて。
2020/02/08(土) 14:36:46.22ID:FKWW677q
>>520
.netcoreだよね?
523デフォルトの名無しさん
垢版 |
2020/02/08(土) 14:46:34.93ID:KXr/QwX0
Monoって書いてるだろ
524519
垢版 |
2020/02/08(土) 15:35:46.13ID:9Nn74D/R
C# では、Microsoft が、

>>519
や、Unity などに対抗するために、Xamarin/Mono を買収した
2020/02/08(土) 16:54:09.53ID:DP9vcaNb
>>515
ワロタ!(・∀・)
526デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:09:56.17ID:Gwq8LIiY
Ruby禁止だけじゃなくMono/C#も禁止するか
527デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:19:51.57ID:szXf7gpM
qtって汚いよな
528デフォルトの名無しさん
垢版 |
2020/02/08(土) 17:28:08.83ID:uuv8oSvR
RADツールもないもんな
知らんけど
2020/02/08(土) 17:29:00.79ID:0wE1WgKD
>>515
開発者のMacのシェアは約30%、Windowsは約45%、Linuxが25%
Windowsはシェア半分もない
2020/02/08(土) 17:46:35.97ID:Ewdvkn0R
世代交代しか訴えられないんじゃぁ、ぶてぃじぇっじもたいした候補じゃねーなぁ
2020/02/08(土) 17:51:48.56ID:lxxY/dO6
やっぱ一番かっこいいのはkivy?
532デフォルトの名無しさん
垢版 |
2020/02/08(土) 20:33:49.47ID:Y+Ds/PpP
>>506>>507
良くわかるけど
Pythonやるにはあまり関係ないよ?
2020/02/08(土) 21:53:48.06ID:tg7wd02h
>>506
ソフトエンジニアならわからないと馬鹿にされるんだろうが
でも、この底辺スレに来る連中はエンジニアではなく低レベルのサンデープログラマが
ほとんどで分からない奴が大多数だろ(もちろん俺もわからん)
2020/02/08(土) 22:16:28.53ID:DP9vcaNb
>>506
プロセス(OSから見えてる単位)→スッドレ(プロセスの下にわさわさ増殖可能)→コア(CPUの部品)

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

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

(どのスッドレも同時にみんな手をつないでゴール!を強要されない計算の場合は)
1つのプロセスからいっぱいスッドレわかせて計算するより、
いっぱいプロセス湧かせて順次まとめあげる方が、高速&効率が良いはずである。
だが、
多プロセス化するとメモリはもっさり消費される傾向なので、
ほんとのところは、
やりたいことが同期を強く求めてるかどうかと、マシンスペックによるのである。
535デフォルトの名無しさん
垢版 |
2020/02/08(土) 22:17:55.33ID:0YppiA+B
突っ込まないぞ
2020/02/08(土) 22:18:40.14ID:0wE1WgKD
スッドレスッドレ
(わさわさ)
2020/02/08(土) 22:31:02.57ID:DP9vcaNb
(つづき)
さきにあげた並行処理を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
2020/02/08(土) 22:31:57.71ID:DP9vcaNb
ココハ ゴジャースナ(・∀・)スッドレ ダヨ!!!
2020/02/09(日) 01:28:40.71ID:JzPk4jqf
>>534
ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解してるようだな。
勉強してからもう一度書き込むように。
540デフォルトの名無しさん
垢版 |
2020/02/09(日) 07:52:13.11ID:CdDouLVX
>>> (10).to_bytes(2,'big')
b'\x00\n'

期待している結果となりません。
b'\x00\x0a' にならないのは何故?
2020/02/09(日) 08:44:46.73ID:vHnIKgeN
>>540
ドキュメントのbyteオブジェクト関連の項目を読むと書いてあるが
文字として見せた方がわかりやすいと思われるバイト値は
16進ではなく文字で表示する方針なのだそうだ
だから値としては正しく格納されているので気にしなくてよろしい
2020/02/09(日) 09:24:21.10ID:CdDouLVX
>>541
納得しました
誰得の方針なのか、モヤモヤは残りましたが…
2020/02/09(日) 09:30:32.92ID:vHnIKgeN
>>542
ところで、この(値).to_bytes()っていう書き方は初見なんだが
いつからある機能なんだろうか(自分の知識はver.3.3で止まっている)
JavaっぽくてPythonらしくないと感じるのだが
2020/02/09(日) 09:51:55.28ID:CdDouLVX
>>543
int.to_bytes(length, byteorder, *, signed=False)

New in version 3.2.
だそうです
2020/02/09(日) 10:38:09.30ID:hMxVM0F3
flaskでsms認証つけたいんですけど何がおすすめでしょうか?
アカウントにユーザーのメルアド、氏名、住所もつけておきたいです。
2020/02/09(日) 10:56:43.41ID:vHnIKgeN
>>544
サンクス
一つ賢くなったよ
2020/02/09(日) 11:03:20.76ID:uG+JJfG5
知識が増えただけで賢くはなって無いんじゃないの
2020/02/09(日) 11:07:52.69ID:vHnIKgeN
>>547
人の会話に茶々入れるんじゃないよ
即NGだ
2020/02/09(日) 11:26:42.55ID:uG+JJfG5
会話に茶々入れたくなければ公開掲示板なんかで聞かなきゃいいじゃん
つまりいくらでも茶々入れていいのが2ch5chでしょ
その基本を無視して俺ルールをいきなり押し付けられても困る

で、賢さってのは知識量のことなワケ?
2020/02/09(日) 11:27:51.13ID:uG+JJfG5
だって「超初心者」が知識と賢さを混同してるらしいからね
ほっとけないね
2020/02/09(日) 11:32:14.37ID:EbhgtQ51
>>539
>ハードウェアマルチスレッディングとソフトウェアによる通常のマルチスレッドをごちゃまぜに理解
そのようだ…

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

Pythonのライブラリでやれるのは
ソフトウェア的マルチスッドレだな
2020/02/09(日) 11:34:06.96ID:EbhgtQ51
というわけで
>>506よ、
536のことはうっちゃっておいて
>>537の先頭2行も脳内から消して、詳しくはケツに貼ったQiitaの人の記事を読んでクレクレ
2020/02/09(日) 12:11:02.39ID:vWZlCr2H
list = [1,2,3,4,5,6,7,8,9,10]
というリストがあった場合
for i in list:
とするよりも
for i in set(list):
とする方が高速ですか?
それとも、setに変更しても元々がリストなので早くならないですか?
2020/02/09(日) 12:16:47.36ID:uG+JJfG5
一般的には想定される普通の使い方をする時に一番早くなるように言語を作る
それに間に一枚噛んでると遅くなる、と思うのが人間

あとは長さ10万くらいのリストを数千回試して時間を計る
2020/02/09(日) 12:26:35.34ID:mfrF5HLR
>>553
試すといいよ。ってのが正しいと思うけど、あえてマニュアルから。
https://docs.python.org/ja/3/reference/compound_stmts.html#the-for-statement

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

ってあるから、ほぼ変わらんのでは?
2020/02/09(日) 12:44:06.57ID:zgc2MTJg
list->setのコスト分だけ遅いだろ
2020/02/09(日) 12:53:21.16ID:2kp9QhUs
論より証拠
昔の人は良いことを言った
558デフォルトの名無しさん
垢版 |
2020/02/09(日) 13:38:53.89ID:haksjRuS
お前ら木偶の坊なんだから俺の疑問に答えて少しは世の中の役に立てよ

という意識があのような質問を生むのだ
559デフォルトの名無しさん
垢版 |
2020/02/09(日) 14:44:11.09ID:KmTvxb40
>>555
sum(for x in range(10))
sum([for x in range(10)])
これの違い。
560デフォルトの名無しさん
垢版 |
2020/02/09(日) 14:49:31.50ID:KmTvxb40
sum(x for x in range(10))
sum([x for x in range(10)])
だった。
2020/02/09(日) 14:56:02.52ID:OACAfflF
>>560
どう違うの?
下は内包表記?
2020/02/09(日) 15:22:07.62ID:O6Vx4x7H
>>553
listをsetに変換するコストを無視してもsetをイテレートするほうが遅いよ
hash tableをイテレートする時に必要な処理とlistをイテレートする時に必要な処理の違い

といってもその差は微々たるものだから
その差が重要なプログラムを書こうとしてるなら言語を変えたほうがいいかも
563デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:35:28.11ID:vWZlCr2H
>>554-562
ありがとうございます
あまり大きくは変わらないのですね
参考にします
564デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:45:54.02ID:wTv3WydA
>>561
上: generator (リストは造らない)
下: 内包表記 (リストが造られる)
565デフォルトの名無しさん
垢版 |
2020/02/09(日) 15:54:02.80ID:KmTvxb40
for i in set(list):
listのイテレートとsetのイテレートが発生するのと、一旦setのためのメモリが確保されるから、
setの重複排除機能が必要でない限り、100%無駄だと断言できる。
2020/02/09(日) 16:12:45.54ID:O6Vx4x7H
>>563
複数のやり方でどれが速いのか気になったら%timeitしよう
567デフォルトの名無しさん
垢版 |
2020/02/09(日) 16:14:09.61ID:wTv3WydA
むしろforの中身を見直すか
numpyとか使うべき
ループはクソ遅い
2020/02/09(日) 21:20:07.67ID:U6aZQoQk
質問者はリストにin演算子使うと遅いって話と混同してるんじゃないかと
そっちは遅くて当たり前なんだが、forでsetより遅くなる道理はないと思うが
2020/02/09(日) 22:35:43.77ID:u7Xk0tZr
>>568
>そっちは遅くて当たり前なんだが
その当たり前を教えてくれ
2020/02/09(日) 23:21:11.41ID:U6aZQoQk
>>569
setはハッシュ値で格納位置を一発で割り出す
リストは要素をすべて舐め回して探す
2020/02/10(月) 00:00:12.89ID:NX1L632S
>>568
リストをfor文を回してsetより速くする方法が他にあるってことですか?
2020/02/10(月) 00:07:40.31ID:fRmEVRio
>>570
リストって、毎回全要素をリニアサーチしているって事ですか?
2020/02/10(月) 01:46:01.93ID:y8VN1gM7
>>571
>>568
>forでsetより遅くなる道理はないと思うが
と言っている。で、これから
>リストをfor文を回してsetより速くする方法が他にあるってことですか?
がなぜ出てくるんだ?
>>568の前の部分はfor~inについてではなく、
list/setの要素にこれ(x)ある?を調べるin演算(x in list/set)についての
ことを言っている。
2020/02/10(月) 07:54:06.49ID:NX1L632S
>>573
なるほど、ありがとうございます
575デフォルトの名無しさん
垢版 |
2020/02/10(月) 09:51:35.16ID:5lt6zYiz
>>572
570はサーチとイテレートをごっちゃにしてるわな。
listは動的配列だから、オブジェクトへのポインタのポインタをインクリメントしてるだけだわな。
サーチはその後の話だろ。
2020/02/10(月) 09:58:28.58ID:8uBZGbTk
>>575
いや君がごっちゃにしてるだけでイテレートの話なんてしてないだろ
570はin演算子使った時にどうやって探すかの話だろ
2020/02/10(月) 16:12:22.59ID:fRmEVRio
色々脱線はしているのかもしれないが、最初の質問は >>553
リストを処理するのに、そのままよりも、
setを噛ませた方が速くなるかどうか、ということであって
リストの内容は全件処理しているようだし
2020/02/10(月) 17:20:59.87ID:8uBZGbTk
なに意味不明なことうだうだ言ってんの
2020/02/10(月) 17:29:20.70ID:fRmEVRio
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 がちゃんとすれば良いんだと思う
2020/02/10(月) 17:38:58.14ID:8uBZGbTk
逆になにがわからないのかわからないんだが
2020/02/10(月) 17:42:34.83ID:fRmEVRio
分かるまで、みんなの話を聞いていたら
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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