此问题在此处已有答案:
Understanding for loops in Python(4个答案)
9天前关闭。
我是一个编程新手,在弄清楚如何使用Python在列表中循环列表时遇到了麻烦。
我正在处理来自美国的输出。Census API的格式如下:
[['NAME', 'POP_2020', 'POP_2021', 'state'],
['Oklahoma', '3962031', '3986639', '40'],
['Nebraska', '1961455', '1963692', '31'],
['Hawaii', '1451911', '1441553', '15'],
['South Dakota', '887099', '895376', '46'],
['Tennessee', '6920119', '6975218', '47']]
字符串
我想写一个函数,从每个列表中提取州名。
下面是我的代码:
import requests
url = f'https://api.census.gov/data/2021/pep/populationget=NAME,POP_2020,POP_2021&for=state:*'
response = requests.get(url)
data = response.json()
def statenames():
for i in data:
print(data[0])
型
上面的函数返回以下输出,这不是我想要的:
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
['NAME', 'POP_2020', 'POP_2021', 'state']
型
我已经能够通过编写一系列像这样的print语句来获得各个州的名称:
print(data[0][0])
print(data[1][0])
print(data[2][0])
型
我知道这不是很有效,我希望有一种方法可以使用for循环来代替。
提前感谢您的帮助!
4条答案
按热度按时间ws51t4hk1#
Python提供了两种通过循环迭代数据的方法。你可以使用普通的索引for循环,也可以通过for-each循环来实现。无论选择哪种方法,都需要一个嵌套循环来迭代列表。外部循环将为外部列表中的所有项目运行,即,它将返回列表,就像您的代码一直在做的那样。内部循环将帮助您遍历该列表中的单个项。
索引方法:
字符串
对于每个循环:
型
这两个代码将给予相同的输出,因此您可以根据需要选择其中之一。在您可能需要根据数据的位置修改数据的情况下,索引循环将非常有用。否则,如果你只想遍历数据,你可以使用for-each循环,因为它会降低意外修改数据的风险。
apeeds0o2#
在遍历整个列表时,从每个子列表中获取第一个索引,如下所示:
字符串
其输出:
型
3pmvbmvn3#
你的for循环在statenames中只打印了列表中的第一项。如果你想得到列表中子列表的第一项。你可以这样解决
字符串
ruoxqz4g4#
您只需要正确地迭代
data
列表以提取状态名称。当前,循环正在遍历data
列表的每个元素,但您希望跳过第一个元素(标题行)并提取每个后续列表的第一个元素。下面是如何使用for循环实现它:
字符串
在上面的代码中,循环从索引1(
range(1, len(data))
)而不是0开始,因此它跳过了标题行。对于每次迭代,它从每个列表的第一个元素(data[i][0]
)中提取状态名并打印出来。这将产生以下输出:
型