python 中的 for 循环问题只获取最后一项
issue with for loop in python only gets the last item
我是 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 开始迭代到列表末尾。
您不需要 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)
首先,您编写的程序中存在错误:
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。
我们喜欢编写简短的代码,这些代码有利于可读性,而不是挤压每一寸性能。
提到这个你应该改变你的代码,因为它不必要地混乱而且你甚至没有使用 enumerate
的 value
元素。我会推荐以下内容:
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)
这段代码简短、简洁,最重要的是对其他人来说非常易读。
注意:将 name
、age
、height
替换为它们在您的程序中代表的任何内容。
如果实际上这并没有解决您的问题,那么您的问题可能不是 python 而是 selenium 本身,这超出了这个问题的范围。您可以通过在将值提供给 selenium 函数之前简单地打印值来测试它,如下所示:
fields = [['a','b','c'],['x','y','z']]
for field in fields:
name, age, height = field # Replace this line with whatever the fields represent
print(name, age, height)
driver.find_element_by_xpath("element").send_keys(name, age, height)
希望对您有所帮助。
我是 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 开始迭代到列表末尾。
您不需要 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)
首先,您编写的程序中存在错误:
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。
我们喜欢编写简短的代码,这些代码有利于可读性,而不是挤压每一寸性能。
提到这个你应该改变你的代码,因为它不必要地混乱而且你甚至没有使用 enumerate
的 value
元素。我会推荐以下内容:
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)
这段代码简短、简洁,最重要的是对其他人来说非常易读。
注意:将 name
、age
、height
替换为它们在您的程序中代表的任何内容。
如果实际上这并没有解决您的问题,那么您的问题可能不是 python 而是 selenium 本身,这超出了这个问题的范围。您可以通过在将值提供给 selenium 函数之前简单地打印值来测试它,如下所示:
fields = [['a','b','c'],['x','y','z']]
for field in fields:
name, age, height = field # Replace this line with whatever the fields represent
print(name, age, height)
driver.find_element_by_xpath("element").send_keys(name, age, height)
希望对您有所帮助。