You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向空列表追加子列表以生成列表的列表?经纬度场景问题

问题解决:生成包含城市与经纬度的嵌套列表

错误原因

你触发的TypeError: list expected at most 1 argument, got 3是因为list()函数仅能接收一个可迭代参数(比如元组、字符串等),但你直接传入了三个独立参数city, latitude, longitude,不符合函数调用规则。

另外代码还有一个逻辑问题:temp_list = []被放在for循环内部,每次循环都会重新创建空列表,最终只会保留最后一个城市的数据,无法生成你需要的嵌套列表。

修正后的代码

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='MyApp')

cities_list = ['New York', 'Los Angeles', 'Houston']
temp_list = []  # 移到循环外部,避免每次清空列表

for city in cities_list:
    city_coordinates = geolocator.geocode(city)
    # 增加判断,防止找不到城市时触发属性错误
    if city_coordinates:
        latitude = city_coordinates.latitude
        longitude = city_coordinates.longitude
        # 直接用方括号创建包含城市名和经纬度的列表
        list_element = [city, latitude, longitude]
        temp_list.append(list_element)

print(temp_list)

简化写法(可选)

利用city_coordinates.point属性直接获取经纬度元组,简化代码:

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent='MyApp')

cities_list = ['New York', 'Los Angeles', 'Houston']
temp_list = []

for city in cities_list:
    city_coordinates = geolocator.geocode(city)
    if city_coordinates:
        # point返回(纬度, 经度, 海拔)元组,取前两个元素
        lat, lon, _ = city_coordinates.point
        temp_list.append([city, lat, lon])

print(temp_list)

运行后即可得到你期望的结果:

[['New York', 40.7127281, -74.0060152], ['Los Angeles', 34.0536909, -118.242766], ['Houston', 29.7589382, -95.3676974]]

内容的提问来源于stack exchange,提问作者zeroes_ones

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 20:25:30