你有一个元组列表。交换元组只是访问元组中 0 索引之前的第一个索引并存储输出的问题。
EL = (42.7358, -84.4844)
Det = (42.3831, -83.1022)
Kal = (42.2747, -85.5883)
AA = (42.2753, -83.7308)
Lan = (42.7092, -84.5539)
GR = (42.9614, -85.6558)
SSM = (46.4844, -84.3656)
cities = [EL, Det, Kal, AA, Lan, GR, SSM]
print(cities)
#Output:
[(42.7358, -84.4844),
(42.3831, -83.1022),
(42.2747, -85.5883),
(42.2753, -83.7308),
(42.7092, -84.5539),
(42.9614, -85.6558),
(46.4844, -84.3656)]
cities2 = [(x[1], x[0]) for x in cities]
print(cities)
#Output:
[(-84.4844, 42.7358),
(-83.1022, 42.3831),
(-85.5883, 42.2747),
(-83.7308, 42.2753),
(-84.5539, 42.7092),
(-85.6558, 42.9614),
(-84.3656, 46.4844)]
至于反转列表,有many ways to reverse a list。有的创建副本,有的修改原始列表,如.reverse()
cities3 = cities[::-1] #created a reversed copy.
#Alternatively
cities3 = list(reversed(cities))
不过,最后是一个建议。
您的元组列表没有多大意义,但名称标签赋予了元组含义。
您应该考虑使用不同的数据结构来存储此信息,dictionaries 在这种情况下是有意义的。您可以将它们视为key:value 对之间的映射。
EL = (42.7358, -84.4844)
Det = (42.3831, -83.1022)
Kal = (42.2747, -85.5883)
AA = (42.2753, -83.7308)
Lan = (42.7092, -84.5539)
GR = (42.9614, -85.6558)
SSM = (46.4844, -84.3656)
cities = [EL, Det, Kal, AA, Lan, GR, SSM]
city_names = ["EL", "Det", "Kal", "AA", "Lan", "GR", "SSM"]
cities_dict = dict(zip(city_names, cities))
请注意,以上代码等价于以下内容:
cities_dict = {"EL": EL,
"Det": Det,
"Kal": Kal,
"AA": AA,
"Lan": Lan,
"GR": GR,
"SSM": SSM
}
print(cities_dict)
#Output:
{'EL': (42.7358, -84.4844),
'Det': (42.3831, -83.1022),
'Kal': (42.2747, -85.5883),
'AA': (42.2753, -83.7308),
'Lan': (42.7092, -84.5539),
'GR': (42.9614, -85.6558),
'SSM': (46.4844, -84.3656)}
现在,需要注意的是,字典本质上是无序的。如果您想要一个支持排序的类 dict 数据结构,请使用 OrderedDict。
from collections import OrderedDict
cities = [EL, Det, Kal, AA, Lan, GR, SSM]
city_names = ["EL", "Det", "Kal", "AA", "Lan", "GR", "SSM"]
cities_dict = OrderedDict(zip(city_names, cities))
print(cities_dict)
cities2_dict = OrderedDict((key, (v[1], v[0])) for (key,v) in cities_dict.items())
print(cities2_dict)
cities3_dict = OrderedDict(reversed(cities_dict.items()))
print(cities3_dict)