2017-07-18 20 views
0

私はPythonで配列内の値を循環させようとしていますが、これを行う方法はわかりません。その後、数3、私はそれがその後、数2のPID番号1を使用したい配列内の値を循環する

get("www.google.com/" + pid) 

ので:

pid = { 
    "021554", 
    "098765", 
    "287004", 
    "237655" 
} 

の上には、例えば、リンクにそれを置くためにpidを使用しようとしている私の配列、イムですそれがリストの先頭に戻り、else ifで再び開始されるまで。

if 'text' in response.text: 
    do something 
else: 
    use next pid to add to the link and start script from the top again using the new id` 
+0

'set'である配列ではありません。とにかく、Pythonの 'array.array'や' numpy.ndarray'を使うのではなく、通常のPythonの 'list'を使うことを意味します。 –

+1

'itertools.cycle'を見てください –

+0

あなたが何を求めているのかは不明です。 '要求'のような 'get'関数のためにある種のライブラリを使用していますか?私はあなたが何をしようとしているのか正確には分かりません。 –

答えて

1
from itertools import cycle 
import requests 

for pid in cycle("021554 098765 287004 237655".split()): 
    url = "www.google.com/{}".format(pid) 
    txt = requests.get(url).text 
    if "something" in txt: 
     break 

「何か」が表示されない場合、これは永遠に実行できることに注意してください。あなたは回転の固定数のサイクルにしたい場合は

0

、(たとえば2)、あなたはitertools.cycleと一緒にitertools.isliceを使用することができます:あなたはあなたのコードが永遠に動作して心配する必要はありません

import itertools 

pid_list = ['021554', '098765', '287004', '237655']  
for pid in itertools.islice(itertools.cycle(pid_list), 0, 2 * len(pid_list)): 
    url = "www.google.com/%s" %pid 
    txt = requests.get(url).text 
    ... 

。必要なだけ回転させてください。

例:

In [26]: l = [1, 2, 3] 

In [27]: for i in itertools.islice(itertools.cycle(l), 0, 2 * len(l)): 
    ...:  print(i) 
    ...:  
1 
2 
3 
1 
2 
3 
+0

'NameError:name 'itertools'が定義されていません。 –

+0

@JamieAllan' import itertools' ... –

+0

'itertools.repeat'を使用してください –

関連する問題