首页 > 解决方案 > 需要将 2000 个变量组合到一个列表中以在 for 循环中使用

问题描述

我正在尝试使用 for 循环在 selenium 中循环 2000 次迭代。我已经创建了我的排列并为每个排列创建了单独的变量(使用 excel 来合并它们)。

我从 A1...A2000 列出了我的变量。我需要把它放到一个列表中,这样我就可以在我的代码的 for 循环中使用它。如果我用逗号分隔它(例如:A1、A2、A3 ......),我唯一知道的方法是,但这对于 2000 个变量是不现实的。

有什么建议么?

变量按顺序列出,如下所示:

    A1 = ('xpath text')
    A2 = ('xpath text')
    A2000 = ('xpath text')

我正在使用 selenium 通过下拉菜单进行网络爬网

    for i in range(1, 2000):
      xpathlist = [A&i]
      for xp in xpathlist:
        b.find_element_by_xpath(xp)
        click = download.click()

标签: pythonlistfor-loop

解决方案


...使用 excel 合并它们...

我可能对此读得太多了,但是您可以通过以下方式绕过 Excel:

from itertools import product

NAMES= ('x', 'y', 'z')
VALUES = ('foo', 'bar')

nvs = [f'{n} {v}' for n, v in product(NAMES, VALUES)]
print(nvs)

['x foo',
 'x bar',
 'y foo',
 'y bar',
 'z foo',
 'z bar']

或者对于排列(如你所说):

from itertools import permutations

VALUES = ('foo', 'bar', 'baz', 'qux')

perms = [f'{a}/{b}/{c}' for a, b, c in permutations(VALUES, 3)]
print(perms)
['foo/bar/baz', 'foo/bar/qux', 'foo/baz/bar', 'foo/baz/qux',
 'foo/qux/bar', 'foo/qux/baz', 'bar/foo/baz', 'bar/foo/qux',
 'bar/baz/foo', 'bar/baz/qux', 'bar/qux/foo', 'bar/qux/baz',
 'baz/foo/bar', 'baz/foo/qux', 'baz/bar/foo', 'baz/bar/qux',
 'baz/qux/foo', 'baz/qux/bar', 'qux/foo/bar', 'qux/foo/baz',
 'qux/bar/foo', 'qux/bar/baz', 'qux/baz/foo', 'qux/baz/bar']

然后你可以遍历列表nvsperms


推荐阅读