python - 如何迭代列表的名称

标签 python list function arguments

我有多个列表(bit0、bit1、bit2 等),我想在如下循环中迭代它们:

for i in range(3):
    view_image(bit1[i])  
    view_image(bit2[i]) 
    view_image(bit3[i]) 
    view_image(bit4[i]) 
    view_image(bit5[i]) 

如何通过在循环内构造其参数名称来避免重复 view_image 语句?

类似这样的:view_image('bit' + str(i+1)[i])

这些列表将图像集合表示为 numpy 数组。例如,bit1[0] 是 bit1 集合中的第一个图像。

最佳答案

我希望它能像这样

arrays = (bit1, bit2, bit3, bit4, bit5)

for i in range(3):
    for arr in arrays:
        view_image(arr[i])

由于您要存储多个不同分辨率的图像,并且可能有运行时确定的数量,因此您可以采取以下措施:

要创建列表,您可以:

resolutions = ('low', 'medium', 'high', 'hq')
images = {} # empty dict
for res in resolutions:
    if pic_present(res):
        images[res] = get_image(res)

# Now you can proceed as above:
for i in range(3):
    for res, img in images.iteritems():
        announce(res, i) # sth. like print "Showing component", i, "of image", res
        view_image(img[i])

如果图像数量始终相同,则可以使用列表:

images = [] # empty list
for index, res in enumerate(resolutions):
    images[index] = get_image(res)

# Now you can proceed as above:
for i in range(3):
    for index, img in enumerate(images):
        announce(resolutions[index], i) # sth. like print "Showing component", i, "of image", res
        view_image(img[i])

同样的事情有点不同,如果你有256级分辨率,未命名。在这种情况下,您只需替换

resolutions = ('low', 'medium', 'high', 'hq')

resolutions = range(256) # gives you the numbers of 0 to 255 to iterate over

并按上述方式进行。无需费心处理 256 个不同的变量名称,但数据会整齐地放入字典或列表中,仅此而已。

关于python - 如何迭代列表的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27749839/

相关文章:

python - 读取和处理大文件时进行多线程(对于内存来说太大)

c# - 以编程方式重新定位 VLC 窗口

python - 为 conda 安装 pip3

python按字符串匹配模式对列表项进行分组

c++ - 如何编写接受无限参数的函数?

python - sorted() 函数不同于通过列表理解获得的结果

python - 从python字典中删除重复的键但连接重复键的值

Python - 如果列表中的任何元素在行中

c++ - 遍历二叉树的函数

javascript - jQuery .append 发生了多次。我该如何防止这种情况?