Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成包含“key1”到“keyN”的列表最一致的方法是什么?_Python - Fatal编程技术网

Python 生成包含“key1”到“keyN”的列表最一致的方法是什么?

Python 生成包含“key1”到“keyN”的列表最一致的方法是什么?,python,Python,我使用的是Python2.6,希望通过“keyN”生成“key1”的方法最为一致?我尝试过但没有成功: Python 2.6 (r26:66721, Oct 2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> N=10 >>> x = range(1,

我使用的是Python2.6,希望通过“keyN”生成“key1”的方法最为一致?我尝试过但没有成功:

Python 2.6 (r26:66721, Oct  2 2008, 11:35:03) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> N=10
>>> x = range(1, N + 1)
>>> 'key' + str(x)
'key[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'
>>> map('key' + _, map(str, range(N + 1)))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object is not callable
>>> map('key' + ?, map(str, range(N + 1)))
  File "<stdin>", line 1
    map('key' + ?, map(str, range(N + 1)))
                ^
SyntaxError: invalid syntax
>>> map('key' + *, map(str, range(N + 1)))
  File "<stdin>", line 1
    map('key' + *, map(str, range(N + 1)))
                ^
SyntaxError: invalid syntax
>>>

如果您想将列表作为输出,只需执行以下操作:

>>> N = 10
>>> ['key' + str(i) for i in range (0, N)]
['key0', 'key1', 'key2', 'key3', 'key4', 'key5', 'key6', 'key7', 'key8', 'key9']
如果要使用map supply a lambda,请执行以下操作:

map(lambda x: 'key' + str(x), range(0, 10))
然而,正如你从答案中看到的那样,可能还有其他更干净的方法可以做到这一点。

你可以试试

['key%s' % x for x in range(N)] 
我认为列表理解是最简洁的:

lst = ['key{}'.format(i) for i in range(N)]

您不需要指定零开始索引,其范围比目前提供的选项快一些:

map('key{}'.format, range(N))
如果需要实际的列表,可以在列表构造函数中换行:

list(map('key{}'.format, range(N)))
# Or on Python 3.5+ for even more concise code
[*map('key{}'.format, range(N))]

一般来说,我建议使用基于列表理解的方法,因为使用用户定义的函数映射,特别是使用lambdas,其中listcomp可以完全避免函数调用,比等效的listcomp慢。但是,使用C语言实现的内置函数,map可以在速度和简洁性两方面获胜;由于您特别要求使用最简洁的解决方案,因此,除了老式的printf样式的格式之外,这比任何东西都要好。在printf样式的格式中,如果您不坚持PEP8的间距规则,可以将[*map'key{}.format,range]替换为一个字符,即三个字符。

我认为这个问题不值得投反对票。这是一个有效的问题,它包括一套已经尝试过的方法。因为它们不起作用,OP正在寻求解决方案。那么为什么要投否决票呢?
list(map('key{}'.format, range(N)))
# Or on Python 3.5+ for even more concise code
[*map('key{}'.format, range(N))]