Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用列表值作为范围?_Python_List - Fatal编程技术网

Python 如何使用列表值作为范围?

Python 如何使用列表值作为范围?,python,list,Python,List,我有一个整数列表和一个填充了33行的QTableWidget 我的列表如下(对应于QTableWidget中的行): 我想按行数从表中提取信息 例如,我想在表中循环前15行,然后是下14行,然后是下1行等等。因此,目前我使用: my_list = [15, 14, 1, 2, 1] for row in range(15): # Do something for row in range(15,29) # Do something for row in range(29,3

我有一个整数列表和一个填充了33行的QTableWidget

我的列表如下(对应于QTableWidget中的行):

我想按行数从表中提取信息

例如,我想在表中循环前15行,然后是下14行,然后是下1行等等。因此,目前我使用:

my_list = [15, 14, 1, 2, 1]

for row in range(15):
    # Do something

for row in range(15,29)
    # Do something

for row in range(29,30)
    # Do something

...

由于列表中的值(以及项目的数量)可能会发生变化,因此最有效的方法是什么?

通过这种方法,您可以获得配对并将其用于
范围()

现在,你可以走了:

for item in next(ranges):
编辑#1

如果你的
#做事
总是不一样,你可以使用:

for row in next(ranges):
    # Do something

for row in next(ranges):
    # Do something
编辑#2

如果你的
#做某事
总是一样的,你可以:

for item in my_list:
    for row in next(ranges):
        # Do something

您可以使用列表索引进行尝试

for row in range (my_list[0]):
    print "abc"
for row in range (my_list[1]):
    print "bc"
for row in range (my_list[2]):
    print "ac"
for row in range (my_list[3]):
    print "amc"
for row in range (my_list[4]):
    print "c"

当我对下一个(范围)中的项目使用
时:
,它只对前15个项目执行此操作。我应该使用其他东西吗?请参阅编辑。我知道你正在改变每个范围的操作。啊,我明白你的意思,谢谢!在问题中,我在列表中提到了5项,因此我必须对下一行(范围)使用
5次。如果列表中有3个项目,则必须对下一行(范围)使用
3次。基本上,我正在运行一个GIS插件,因此列表中的项目数量可能会有所不同。是否有一种方法可以适应此更改,而不必对下一行(范围):
x次进行硬编码?也就是说,它可以在单个循环中完成吗?如果您的
#Do something
始终相同,请进行另一次编辑。是的,我正要对使用嵌套的
for
循环发表评论,如中所述)。现在它工作得很好,非常感谢:)谢谢你的回答,但想法是列表中的项目数可以更改(即,我显示了
5
,但也可以是
3
)。我正在寻找一种更通用的方法,而不是硬编码:)
for item in my_list:
    for row in next(ranges):
        # Do something
for row in range (my_list[0]):
    print "abc"
for row in range (my_list[1]):
    print "bc"
for row in range (my_list[2]):
    print "ac"
for row in range (my_list[3]):
    print "amc"
for row in range (my_list[4]):
    print "c"