需要将2000个变量组合到列表中以便在for循环中使用

时间:2019-03-29 18:47:32

标签: python list for-loop

我正在尝试使用for循环在硒中循环进行2000次迭代。我已经创建了排列并为每个排列创建了单独的变量(使用Excel进行合并)。

我从A1 ... A2000中列出了我的变量。我需要将其放入一个列表中,以便可以在代码中使用for循环。他们唯一的方式就是知道用逗号分隔它(例如:A1,A2,A3 ...)是怎么回事,但这对于2000个变量来说是不现实的。

有什么建议吗?

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

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

我正在使用硒通过下拉列表进行网络爬取

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

2 个答案:

答案 0 :(得分:0)

假设您在模块foo.py中拥有所有这些变量:

import foo
all_vars = (getattr(foo, f'A{i}') for i in range(1, 2000))

其优点是不创建列表,而是在迭代时检索每个值。有关生成器here

的更多信息

注意::我使用了格式化字符串(f''),它需要python 3.6+,而较旧的版本则使用'A{}'.format(i)'A%d' % i

答案 1 :(得分:0)

...使用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