'Stop for loop iteration trough a list at a certain point
Basically I want that my for loop stops itself after a certain element in the list is being processed. Here is the code:
vids = [
'https://www.itatv.com/ita_video.php?viewkey=626de171d928a',
'https://www.itatv.com/ita_video.php?viewkey=6050c75748399',
'https://www.itatv.com/ita_video.php?viewkey=6277dbe97910c',
'https://www.itatv.com/ita_video.php?viewkey=5d660515990ec&pkey=150469821',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=60dd6838ce483',
]
for v in vids:
try:
vids.remove(v)
if '&pkey=' in v:
raise StopIteration
except StopIteration:
break
print(vids)
The output is:
[
'https://www.itatv.com/ita_video.php?viewkey=626de171d928a',
'https://www.itatv.com/ita_video.php?viewkey=6050c75748399',
'https://www.itatv.com/ita_video.php?viewkey=6277dbe97910c',
'https://www.itatv.com/ita_video.php?viewkey=5d660515990ec&pkey=150469821',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=60dd6838ce483',
]
As you can see nothing changes, but i don't know where my code is faulty. Does anyone have any suggestions?
Solution 1:[1]
A simple solution uses another list and a for loop:
vids = [
'https://www.itatv.com/ita_video.php?viewkey=626de171d928a',
'https://www.itatv.com/ita_video.php?viewkey=6050c75748399',
'https://www.itatv.com/ita_video.php?viewkey=6277dbe97910c',
'https://www.itatv.com/ita_video.php?viewkey=5d660515990ec&pkey=150469821',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811',
'https://www.itatv.com/ita_video.php?viewkey=60dd6838ce483',
]
new_vids = []
seen = False
for vid in vids:
if '&pkey=' in vid:
seen = True
if seen:
new_vids.append(vid)
print(new_vids)
# ['https://www.itatv.com/ita_video.php?viewkey=5d660515990ec&pkey=150469821', 'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811', 'https://www.itatv.com/ita_video.php?viewkey=6201e028e3811', 'https://www.itatv.com/ita_video.php?viewkey=60dd6838ce483']
Note that it is usually a bad idea to modify the list while iterating over it. Hence, a new list is used. While not the most efficient, this solution is easy to understand and maintain.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
