1

如果我有如下列表:

[(10, 20), (50, 60), (100, 110)]

我怎么能让这个看起来像这样:

'10-20,50-60,100-110'

如果我列表中的对数是可变的?

我很抱歉这么简单的问题。但是我尝试过的每一件事,比如用“-”替换“,”都失败了。有任何想法吗?

4

4 回答 4

5
>>> x = [(10, 20), (50, 60), (100, 110)]
>>> ','.join('-'.join(map(str, t)) for t in x)
'10-20,50-60,100-110'
于 2012-04-28T01:47:19.397 回答
2

进行这种格式化的另一种(更具可读性)方法是使用

A) % 样式字符串格式:

data = [(10, 20), (50, 60), (100, 110)]

fmt = "%d-%d, %d-%d, %d-%d" % (data[0][0], data[0][1], data[1][0], data[1][1],...)

或者,使用列表理解:

fmt = ",".join("%d-%d" % i for i in data)

B)pythonstring.format方法:

fmt = ",".join("{0}-{1}".format(*i) for i in data)
于 2012-04-28T02:00:02.983 回答
1

这是你要找的吗?

data = [(10, 20), (50, 60), (100, 110)]
for x in data:
    print x[0], "-", x[1]
于 2012-04-28T01:45:19.243 回答
0

您可以在理解内迭代列表时解压列表的值:

>>> x = [(10, 20), (50, 60), (100, 110)]
>>> ','.join('%d-%d' % (y,z) for (y,z) in x)
'10-20,50-60,100-110'
于 2012-04-28T02:25:47.457 回答