python中的for循环问题仅获得最后一项

时间:2019-11-06 16:59:26

标签: python loops for-loop iteration enumerate

我是python的初学者,目前我正在尝试使用selenium自动填充网站字段。

我正在尝试使用for循环遍历嵌套列表,但总是只获取最后一个元素。有什么建议吗?

fields = [['a','b','c'],['x','y','z']]
for i in range(len(fields)):
    driver.find_element_by_xpath("element").send_keys(fields[i][0],fields[i[1],fields[i][2])
    driver.find_element_by_xpath("element_save").click()

#then loop and iterate through 2nd nested list

# OUTPUT = x,y,z

我希望从索引0开始迭代到列表的末尾。

2 个答案:

答案 0 :(得分:1)

您不需要range(len(list_))来仅迭代索引。

通常使用for。您还可以使用*打开列表的包装:

fields = [['a','b','c'],['x','y','z']]
len_ = len(fields)
for i in range(len_):
    driver.find_element_by_xpath("element").send_keys(*fields[i])

您还可以遍历fields本身的值:

fields = [['a','b','c'],['x','y','z']]

for field in fields:
    driver.find_element_by_xpath("element").send_keys(*field)

答案 1 :(得分:0)

首先,您编写的程序中存在一个错误:

fields = [['a','b','c'],['x','y','z']]
for i, v in enumerate(fields):
    driver.find_element_by_xpath("element").send_keys(fields[i][0],fields[i[1],fields[i][2])
                                                                           ^ # No closing ]

其次,Python开发人员喜欢抛出一个术语:Pythonic Code

我们喜欢编写简洁明了的代码,该代码倾向于压缩可读性,而不是压缩性能的每一寸细节。

参照此内容,您应该更改代码,因为它不必要地混乱,甚至没有使用value的{​​{1}}元素。我建议以下内容:

enumerate

此代码简短,简洁,最重要的是其他人都可以读取。

注意:将fields = [['a','b','c'],['x','y','z']] for field in fields: name, age, height = field # Replace this line with whatever the fields represent driver.find_element_by_xpath("element").send_keys(name, age, height) nameage替换为程序中所代表的内容。

如果实际上这不能解决您的问题,则您的问题可能不是python,而是硒本身,这不在此问题的范围内。您可以通过在将其输入硒功能之前简单地打印值来进行测试:

height

希望这会有所帮助。