[英]random.choice prints always the same result
我對 python 很陌生,但我知道如何使用其中的大部分內容,包括 random.choice。 我想從 2 個文件列表中選擇一個隨機文件名。
為此,我正在使用這行代碼:
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
for img2 in images:
names = img2.object_name
print(random.choice([names]))
每次我嘗試運行它時,它總是打印相同的文件名(c81d9307-7666-447d-bcfb-2c13a40de5ca.png)
我試圖將“打印” function 放在“for”塊中,但它會打印出兩個文件的名稱
您現在正在將變量names
設置為一個特定的圖像實例。 這意味着它只是一個單一的值。 嘗試將它們添加到數組或類似中。
例如:
names = [img2.object_name for img2 in images]
print(random.choice(names))
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice([names]))
試試這個,問題可能是你的名字沒有列出變量
如果要選擇其中一個文件名,請嘗試以下操作:
minio = Minio('myip',
access_key='mykey',
secret_key='mykey',
)
images = minio.list_objects('mybucket', recursive=True)
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice(names))
第一個代碼嘗試從數組[names]
中隨機 select 一個值,但這僅包含一個值,即 for 循環最后一次迭代后的names
變量的值。 而不是這樣做,創建一個數組, names
和img2.object_name
從 for 循環的每次迭代到該數組的 img2.object_name 的值。 並使用此數組來獲取隨機名稱。
你的names
只是一個簡單的變量,包含最近看到的圖像名稱,而不是一個完整的列表。
腳本的最后一行如下所示:
value = 2
print(random.choice([value]))
總是打印 2。要得到你想要的,你需要一個所有圖像的列表。 這是您的代碼,有一個簡單的修復:
names = []
for img2 in images:
names.append(img2.object_name)
print(random.choice(names))
使用列表推導可以大大縮短這些代碼:
names = [img2.object_name for img2 in images]
print(random.choice([names]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.