如何将这个Python变量分配给循环使用的列表? 感谢所有让我的第一篇StackOverflow帖子变得非常有用和有趣的人。

如何将这个Python变量分配给循环使用的列表? 感谢所有让我的第一篇StackOverflow帖子变得非常有用和有趣的人。,python,for-loop,Python,For Loop,我一整天都在解决这个问题,已经到了这个地步。我几乎弄明白了 方向: 您的任务是将变量名_和_秩分配给一个列表,每个元素等于城市名及其对应的秩。例如,第一个元素是,1。布宜诺斯艾利斯和第二个将是2。多伦多使用for循环并列出city_索引和city_名称来完成此操作。我们需要执行一些漂亮的字符串插值来正确格式化字符串。查看f字符串插值,了解如何将值传递到字符串中。请记住,列表索引从零开始,但我们希望名称和排名列表从一开始 以下是我所拥有的: 代码city_索引只给了我11个,所以我把它列在了一个列

我一整天都在解决这个问题,已经到了这个地步。我几乎弄明白了

方向: 您的任务是将变量名_和_秩分配给一个列表,每个元素等于城市名及其对应的秩。例如,第一个元素是,1。布宜诺斯艾利斯和第二个将是2。多伦多使用for循环并列出city_索引和city_名称来完成此操作。我们需要执行一些漂亮的字符串插值来正确格式化字符串。查看f字符串插值,了解如何将值传递到字符串中。请记住,列表索引从零开始,但我们希望名称和排名列表从一开始

以下是我所拥有的:

代码city_索引只给了我11个,所以我把它列在了一个列表中

city_indices = list(range(0, len(cities)))
city_indices

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
生成正确列表但未分配给正确变量的原始代码。生成的列表应分配给名称和等级

此列表正确,编号正确。但是,它似乎与名称_和_ranks变量不正确对应。事实上,当我跑步时:

names_and_ranks[0]
我得到清单上最后一项12。。。。请记住,列表索引是0-11,但我将输出编号为0-12

有什么想法吗?一旦我分配了这个变量并运行了一个成功的循环来显示从1开始的城市列表。我需要打印新列表中的不同元素

ie名称和排名[0]应返回1。布宜诺斯艾利斯

运行的当前结果:

names_and_ranks[0] # should return '1. Buenos Aires'



IndexErrorTraceback (most recent call last)
<ipython-input-152-871e7a906308> in <module>
----> 1 names_and_ranks[0] # '1. Buenos Aires'
      2  # '2. Toronto'
      3  # '12. Iguazu Falls'

IndexError: list index out of range


使用enumerate怎么样? 您可以轻松地使用索引 比如说,

for index, value in enumerate(['foo', 'bar', 'baz']):
    print(index, value)
这是回报 0福 1巴
2 baz

这里使用的是f'字符串,返回的结果与上面相同:

city_names = ['Buenos Aires',
 'Toronto',
 'Marakesh',
 'Albuquerque',
 'Los Cabos',
 'Greenville',
 'Archipelago Sea',
 'Pyeongchang',
 'Walla Walla Valley',
 'Salina Island',
 'Solta',
 'Iguazu Falls']

names_and_ranks = []
for index,city in enumerate(city_names):
        names_and_ranks.append(f'{index+1}. {city}')
print(names_and_ranks)
输出: ['1.布宜诺斯艾利斯','2.多伦多','3.马拉凯什','4.阿尔伯克基','5.洛斯卡波斯','6.格林维尔','7.群岛海','8.平昌','9.瓦拉瓦拉谷','10.萨利纳岛','11.索塔','12.伊瓜苏瀑布']

编辑:因为提问者希望名称_和_排名[8]返回'8。平昌'这是编辑:

city_names = ['Buenos Aires',
 'Toronto',
 'Marakesh',
 'Albuquerque',
 'Los Cabos',
 'Greenville',
 'Archipelago Sea',
 'Pyeongchang',
 'Walla Walla Valley',
 'Salina Island',
 'Solta',
 'Iguazu Falls']

names_and_ranks = [0]
city_indices = 1
for city in city_names:
        names_and_ranks.insert(city_indices,f'{city_indices}. {city}')
        city_indices+=1

print(names_and_ranks[8])
这里有一种方法:

names_and_ranks = [f'{i}. {x}' for i,x in enumerate(l, 1)]

print(names_and_ranks[0])
1. Buenos Aires

除了第一行之外,您的整个代码都是正确的:

city_indices = -1
这是一个索引,我想应该从0开始,而不是从-1开始

原因,

在Python中,-1指向list/string/的最后一个元素。。和-2作为第二个和最后一个元素,依此类推。 因此,我建议您只进行以下更改: 城市指数=0

然后根据这一行更改进一步的代码

city_indices = 0
names_and_ranks = [city_names[city_indices]]
for elements in city_names:
    print(f'{city_indices+1}. {city_names[city_indices]}')
    city_indices += 1
在意识到自己可能在一些相对简单的事情上花费了太多时间后,我继续前进。我找到了解决方案手册。这是正确的答案。我希望这可能会帮助其他人在Learn.co Flatiron学校数据科学预科工作。。。
谢谢@sshashank124的更正。我不确定我是否理解问题所在,您的代码似乎工作正常。@AMC在您从names_和调用元素之前,代码工作正常_ranks@AMC刚刚更新了我的帖子,显示了我从运行名称和等级[1]中得到的结果。请共享所有相关代码和数据。请参阅:。说明特别要求我使用f字符串插值这是返回的代码:[“1.布宜诺斯艾利斯”][“1.布宜诺斯艾利斯”,“2.多伦多”][“1.布宜诺斯艾利斯”,“2.多伦多”,“3.马拉凯什”][“1.布宜诺斯艾利斯”,“2.多伦多”,“3.马拉凯什”,“4.阿尔布开基”,“1.布宜诺斯艾利斯”,“2.多伦多”,“3.马拉凯什”,“4.阿尔布开基”,“5.洛斯卡沃斯”]['1.布宜诺斯艾利斯'、'2.多伦多'、'3.马拉凯什'、'4.阿尔布开基'、'5.洛斯卡沃斯'、'6.格林维尔']['1.布宜诺斯艾利斯'、'2.多伦多'、'3.马拉凯什'、'4.阿尔布开基'、'5.洛斯卡沃斯'、'6.格林维尔'、'7.群岛海']['1.布埃诺等。如果您使用您在问题中给出的城市名称列表,并运行此代码和打印名称和等级,您将获得['1.布宜诺斯艾利斯','2.多伦多','3.马拉凯什','4.阿尔布开基','5.洛斯卡布斯','6.格林维尔','7.群岛海','8.平昌','9.瓦拉瓦拉谷','10.萨利纳岛','11.索塔','12.伊瓜苏瀑布']这是我从那个密码中得到的回报我的原始代码给出了正确的返回值,这样我得到了一个由编号列表中的城市组成的列表,从1开始……我遇到的问题是将其分配给名称_和_秩,然后能够从名称_和_秩调用元素。例如,如果平昌是8,我调用名称_和_秩[8]我应该得到一个“8.平昌”的返回。请发布提供此输出的完整代码。我已经编辑了我的答案并提供了完整的代码。如果您正在使用您的代码,请使用该代码。实际上,我只想指出,当我运行names_和_ranks[1]时,它超出了范围。这很奇怪。names_和_ranks[0]效果很好。到底是什么问题?你只是没有将元素附加到列表中吗?@AMC问题之一是我没有将名称和等级设置为列表的新的空变量。我的for循环循环了不正确的列表。 我没有将新值附加到变量名_和_秩。f字符串也不正确。
city_indices = -1
city_indices = 0
names_and_ranks = [city_names[city_indices]]
for elements in city_names:
    print(f'{city_indices+1}. {city_names[city_indices]}')
    city_indices += 1
names_and_ranks = []
for elements in city_indices:
        names_and_ranks.append(f"{elements + 1}. {city_names[elements]}")

names_and_ranks