我有一个photo chooser函数,它计算给定目录中的文件数并列出它们的列表。我希望它只返回5个图像url。功能如下:
from os import listdir
from os.path import join, isfile
def choose_photos(account):
photos = []
# photos dir
pd = join('C:\omg\photos', account)
# of photos
nop = len([name for name in listdir(location) if isfile(name)]) - 1
# list of photos
pl = list(range(0, nop))
if len(pl) > 5:
extra = len(pl) - 5
# How can I pop extra times, so I end up with a list of 5 numbers
shuffle(pl)
for p in pl:
photos.append(join('C:\omg\photos', account, str(p) + '.jpg'))
return photos
我先发几个答案。获取列表的最简单方法是使用
slice
符号:如果您真的想从列表中弹出,可以:
如果您是在随机选择列表中的选项,这可能是最有效的:
在大多数语言中,pop()从集合中移除并返回最后一个元素。因此,要同时移除并返回n个元素,请执行以下操作:
因为这是一个列表,所以您可以通过切片来获取最后五个元素:
这将返回一个浅层副本,因此任何列表中的任何编辑都将反映在另一个列表中。如果你不想这样做,你应该先做一个深刻的模仿。
编辑:
当然应该是[5:]而不是[:-5] 但如果你真的想“弹出”它5次,这意味着你想要没有最后5个元素的列表。。。
相关问题 更多 >
编程相关推荐