解开Python?

时间:2012-06-17 23:23:49

标签: python

我是一个菜鸟, 如何从列表中删除引号和逗号?或者我如何“取消串联”?

在没有显示字典(dic)的情况下,我使用的代码如下所示:

>>>import itertools
>>>list(itertools.product(dic[2], dic[3])

我的结果如下:

[('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), ('C', 'D'), ('C', 'E'), ('C', 'F')]

我希望他们看起来像这样:

AD, AE, AF, BD, BE, BF,

5 个答案:

答案 0 :(得分:11)

您想要生成一个字符串,因此您可以使用字符串操作(特别是join方法):

>>> import itertools
>>> a = ['A', 'B']
>>> b = ['D', 'E', 'F']
>>> print ', '.join(''.join(x) for x in itertools.product(a, b))
AD, AE, AF, BD, BE, BF

实际上你甚至不需要itertools,你可以使用嵌套理解:

>>> print ', '.join(x + y for x in a for y in b)

答案 1 :(得分:1)

您可以使用join string method

>>> import itertools
>>> p = list( itertools.product( ['a','b','c' ],['e','f','g'] ) )
>>> p
[('a', 'e'), ('a', 'f'), ('a', 'g'), ('b', 'e'), ('b', 'f'), ('b', 'g'), ('c', 'e'), ('c', 'f'), ('c', 'g')]
>>> ', '.join( a+b for (a,b) in p )
'ae, af, ag, be, bf, bg, ce, cf, cg'

答案 2 :(得分:0)

import itertools
import sys
yourlist = list(itertools.product(dic[2], dic[3])
sys.stdout.write (yourlist[0][0] + yourlist[0][1])
for i in xrange (1, len(yourlist)):
    sys.stdout.write (", " + yourlist[i][0] + yourlist[i][1])

虽然其他答案使用join()方法(正确和'python'方式),但我已经给了你一个简单粗暴的解决方案,所以我不会在你试图计算时杀死你当前的课程了解join()方法的工作原理。

答案 3 :(得分:0)

使用list comprehension怎么样?

p = [('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), ('C', 'D'), ('C', 'E'), ('C', 'F')]

', '.join([''.join(i) for i in p])

join()连接字符串给出:

AD, AE, AF, BD, BE, BF, CD, CE, CF

或者,generator expression也可以使用(感谢@Nicklas B提醒我,出于某种原因,我首先想到了列表理解):

', '.join(''.join(i) for i in p)

答案 4 :(得分:0)

另一种解决方案:

In [61]: l=[('A', 'D'), ('A', 'E'), ('A', 'F'), ('B', 'D'), ('B', 'E'), ('B', 'F'), 
            ('C', 'D'), ('C', 'E'), ('C', 'F')]

In [62]: ', '.join(t[0]+t[1] for t in l)
Out[62]: 'AD, AE, AF, BD, BE, BF, CD, CE, CF'