如何合并列表并使用条件语句将其打印出来? Python

时间:2018-09-25 16:03:17

标签: python list loops

好的,所以我在这里有一个气象站列表,它们的经度和纬度坐标都在不同的列表中。

# Station names
stations = ['Hanko Russarö', 'Heinola Asemantaus', 'Helsinki Kaisaniemi', 
            'Helsinki Malmi airfield', 'Hyvinkää Hyvinkäänkylä', 'Joutsa Savenaho', 
            'Juuka Niemelä', 'Jyväskylä airport', 'Kaarina Yltöinen', 'Kauhava airfield', 
            'Kemi Kemi-Tornio airport', 'Kotka Rankki', 'Kouvola Anjala', 
            'Kouvola Utti airport', 'Kuopio Maaninka', 'Kuusamo airport', 
            'Lieksa Lampela', 'Mustasaari Valassaaret', 'Parainen Utö', 'Pori airport', 
            'Rovaniemi Apukka', 'Salo Kärkkä', 'Savonlinna Punkaharju Laukansaari', 
            'Seinäjoki Pelmaa', 'Siikajoki Ruukki', 'Siilinjärvi Kuopio airport', 
            'Tohmajärvi Kemie', 'Utsjoki Nuorgam', 'Vaala Pelso', 'Vaasa airport', 
            'Vesanto Sonkari', 'Vieremä Kaarakkala', 'Vihti Maasoja', 'Ylitornio Meltosjärvi']

# Latitude coordinates of Weather stations  
lats = [59.77, 61.2, 60.18, 60.25, 60.6, 61.88, 63.23, 62.4,
       60.39, 63.12, 65.78, 60.38, 60.7, 60.9, 63.14, 65.99,
       63.32, 63.44, 59.78, 61.47, 66.58, 60.37, 61.8, 62.94,
       64.68, 63.01, 62.24, 70.08, 64.5, 63.06, 62.92, 63.84,
       60.42, 66.53]

# Longitude coordinates of Weather stations 
lons = [22.95, 26.05, 24.94, 25.05, 24.8, 26.09, 29.23, 25.67, 
       22.55, 23.04, 24.58, 26.96, 26.81, 26.95, 27.31, 29.23, 
       30.05, 21.07, 21.37, 21.79, 26.01, 23.11, 29.32, 22.49, 
       25.09, 27.8, 30.35, 27.9, 26.42, 21.75, 26.42, 27.22, 
       24.4, 24.65]

如何合并这些内容,以便找出列表中哪些站点属于某个纬度和经度区域?我将在

循环中进行
N = len(stations)
print(N)
34

但是我该如何使用该循环找出站,经纬度对呢?我是否使用某种索引方法?

5 个答案:

答案 0 :(得分:3)

您可以这样做

for combo in zip(stations,lats,lons):
    print(combo)

答案 1 :(得分:3)

使用测站及其坐标创建字典

您可以使用内置函数zip()组合这些列表,然后遍历它们:

locations = {}

for station, latitude, longitude in zip(stations, lats, lons):
   locations[station] = latitude, longitude

这将产生具有以下格式的字典:

locations = {
  "Hanko Russarö" : (59.77, 22.95),
  "Heinola Asemantaus" : (61.2, 26.05),
  ...
}

当然这也可以写在一行上

locations = { station : (lat, lon) for station, lat, lon in zip(statios, lats, lons)}

创建具有附加条件的字典

这可以与某些条件结合使用,例如:

locations = { station : (lat, lon) for station, lat, lon in zip(statios, lats, lons) if lat > 50}

locations = {}

for station, latitude, longitude in zip(stations, lats, lons):
    if latitude > 50:
        locations[station] = latitude, longitude

答案 2 :(得分:1)

这里有一些好的解决方案,但是您可能也有兴趣使用pandas DataFrames管理数据:

import pandas as pd
df = pd.DataFrame({
    'station': stations,
    'lat': lats,
    'lon': lons
})
print(df)

答案 3 :(得分:0)

如果您知道长度相等的列表:

for i in range(len(stations)):
    print(stations[i], lats[i], lons[i])

回答第二个问题

  

是否可以将条件语句集成到其中?例如:如果我<64.5,我会以lats表示我?

是的,只需在打印之前添加一个条件即可。

for i in range(len(stations)):
    if lats[i] > 64.5:
        print(stations[i], lats[i], lons[i])

答案 4 :(得分:0)

您可以使用zip()函数来迭代多个可迭代对象:

for station, lat, lon in zip(stations, lats, lons):
    print(f'Station {station} with latitude {lat} and lon {lon}')