random.choice 始终打印相同的结果
random.choice prints always the same result
我是 python 的新手,但我知道如何使用其中的大部分内容,包括 random.choice。我想从 2 个文件 list.
中随机选择一个文件名
为此,我使用了这行代码:
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)
我试图将“打印”函数放在“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 一个值,但这只包含一个值,即最后一次迭代后 names
变量的值的for循环。与其这样做,不如创建一个数组 names
并将 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))
这些代码可以通过 list comprehension:
大大缩短
names = [img2.object_name for img2 in images]
print(random.choice([names]))
我是 python 的新手,但我知道如何使用其中的大部分内容,包括 random.choice。我想从 2 个文件 list.
中随机选择一个文件名为此,我使用了这行代码:
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)
我试图将“打印”函数放在“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 一个值,但这只包含一个值,即最后一次迭代后 names
变量的值的for循环。与其这样做,不如创建一个数组 names
并将 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))
这些代码可以通过 list comprehension:
大大缩短names = [img2.object_name for img2 in images]
print(random.choice([names]))