簡體   English   中英

random.choice 總是打印相同的結果

[英]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變量的值。 而不是這樣做,創建一個數組, namesimg2.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM