2012-05-17 19 views
1

我是新来的蟒蛇,并想在列表格式是这样这样的话我可以使用CSV作家。Repeate字与号附

["Structure1", "Structure2", ... "Structure50"] 

我明白我可以使用"Structure "*50获得结构重复50次,但如何将它进入一个清单,以及追加多少?

谢谢!

+0

我想作一般性评论,因为这是一个非常激烈的线程:-)。有多种方向,你可以这样做。要么你正在寻找最具可读性,或者字面上最快,或者甚至是最高效的内存。这真的归结为你作为你的答案之后。 – jdi

回答

0

这Python的语句应该作为一个解决方案:

["Structure" + str(x) for x in xrange(51)] 
+0

这给'[“Structure0”,“Structure1”,......,“Structure49”]' – Eric

+0

而且它使用字符串转换和字符串连接: -/ – jdi

+0

如果OP无法弄清楚如何得到它从这个例子中显示1-50而不是0-49,他有更大的问题。 – Falmarri

6

使用列表理解和字符串格式化:

["Structure%d" % i for i in xrange(1,51)] 
+0

请勿使用'%'作为字符串格式。如果除了简单的连接之外必须使用* anything *,则使用'str.format'。 –

+0

这是一个非常有效的方法。 –

+0

同意,很好地把 –

6

列表理解:

>>> ["Structure{0}".format(x) for x in range(1,51)] 

['Structure1', 'Structure2', 'Structure3'... 'Structure50' 
+1

这在python2.x中不起作用:“ValueError:格式为零的长度字段名称” – jdi

+0

如果您发布了python2.x compat版本,其实际速度比我的要快。 – jdi

+1

说它不适用于2.x不正确,它在2.7中正常工作。我假设你使用2.6,但我不知道那是一个问题。不过,我会为了便携性而改变它。 – Josiah

2

为了完整起见,这里有一个功能风格的解决方案:

map("Structure{0}".format, xrange(1, 51)) 
+0

速度方面,这是非常快的:-) – jdi

+0

@jdi:也使用最少的字符(删除空格)!尽管我更喜欢列表解析。 – Eric