如何在python中为循环分配变量?

时间:2019-11-21 23:20:18

标签: python-3.x

for names in city_names:
    iteration_count += 1
    print(iteration_count, names)

我正在尝试将此循环的结果设置为等于变量,我将如何进行呢?

这是我在循环中使用的列表:

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

3 个答案:

答案 0 :(得分:1)

尝试一下:

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

 result = ''
 iteration_count = 1
 for names in city_names:    
    result = result + str(iteration_count) + ' ' + names + ' '
    iteration_count += 1
 print (result)

结果如您所愿:

1 Buenos Aires 2 Toronto 3 Marakesh 4 Albuquerque 5 Los Cabos 6 Greenville 7 Archipelago Sea 8 Pyeongchang 9 Walla Walla Valley 10 Salina Island 11 Solta 12 Iguazu Falls 

答案 1 :(得分:1)

您可以将str.join方法与生成器表达式一起使用,该表达式可以迭代enumerate生成器,并使用计数器输出city_names

output = ''.join(f'{count} {name}\n' for count, name in enumerate(city_names, 1))

output变为:

1 Buenos Aires
2 Toronto
3 Marakesh
4 Albuquerque
5 Los Cabos
6 Greenville
7 Archipelago Sea
8 Pyeongchang
9 Walla Walla Valley
10 Salina Island
11 Solta
12 Iguazu Falls

答案 2 :(得分:1)

通常,要将捕获到标准输出的内容捕获到变量中,可以使用sys.stdout方法作为上下文管理器,使用StringIO对象临时覆盖unittest.mock.patch:< / p>

from io import StringIO
from unittest.mock import patch

with patch('sys.stdout', new=StringIO()) as output:
    iteration_count = 0
    for names in city_names:
        iteration_count += 1
        print(iteration_count, names)
print(output.getvalue())

这将输出:

1 Buenos Aires
2 Toronto
3 Marakesh
4 Albuquerque
5 Los Cabos
6 Greenville
7 Archipelago Sea
8 Pyeongchang
9 Walla Walla Valley
10 Salina Island
11 Solta
12 Iguazu Falls