有没有办法获得for循环的第一个结果?

时间:2020-05-17 05:52:54

标签: python loops

我想知道是否有任何方法可以将for循环的第一个结果保存为变量,而不是最后一个。我想按照https://github.com/ytdl-org/youtube-dl中的代码获得在youtube上搜索的第一个结果。 for循环就是这样,

for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}):
    vids = 'https://www.youtube.com' + vid['href']

但是我想要第一个结果,而不是最后一个结果。

3 个答案:

答案 0 :(得分:0)

您可以做类似的事情

library(raster)
raster <- brick("Test6.jpg")
# set the crs so that plot knows the data are not lonlat
crs(raster) <- "+proj=utm +zone=1 +datum=WGS84"

size = 64
gap <- 8
n_h <- ncol(raster)/gap - (size/gap)+1
n_v <- nrow(raster)/gap - (size/gap)+1

r_list <- list()
path <- "C:/Users/PC/Desktop/R/Image test/cropped"
ind <- 0
for(k in 1:n_h){
  for(j in 1:n_v){
    ind <- ind+1
    e <- extent((j-1)*gap, (j-1)*gap+size, (k-1)*gap, (k-1)*gap+size)
    r_list[[ind]] <- crop(raster, e)
    f <- file.path(path, paste0("image_",ind,".jpg"))
    jpeg(filename=f, width=size, height=size, units="px")
    plotRGB(r_list[[ind]])
    dev.off()
  }
}

这是您想要的吗?

答案 1 :(得分:0)

我想你想要这样的东西

lst = [1,2,3,4,5]

因此您想获得第一个元素1。您可以执行lst_saved = lst[0]

但是如果您想使用循环并获取第一个元素,则可以使用

for i in lst:
  lst_saved = i
  break

但是那太可怕了

答案 2 :(得分:0)

只是想要第一个元素,还是您要完成循环然后访问第一个元素

无论哪种方式,我都会避免循环,而做其他事情。

对于前者,您可以忽略列表的其余部分,因为“ list [0]”语法只会选择列表中的第一项:

what_you_want = 'https://www.youtube.com/' + soup.findAll(attrs={'class':'yt-uix-tile-link'})[0]['href']

否则,我建议您使用列表串联,这样您就不会在每次循环时都覆盖变量。您可以通过多种方式实现同​​一件事,但是这就是我要去的方式:

# first get your list of links
list_of_things = ['https://www.youtube.com/' + vid['href'] for vid in soup.findAll(attrs={'class':'yt-uix-tile-link'}]

# then pick out the first item in your list
what_you_want = list_of_things[0]