我想知道是否有任何方法可以将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']
但是我想要第一个结果,而不是最后一个结果。
答案 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]