2

我是菜鸟,如何从列表中删除引号和逗号?或者我如何“解开”?

在不显示字典 (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,
4

5 回答 5

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)
于 2012-06-17T23:26:07.567 回答
1

您可以使用连接字符串方法

>>> 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'
于 2012-06-17T23:28:52.067 回答
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( ) 方法有效。

于 2012-06-17T23:30:15.853 回答
0

使用列表理解怎么办?

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

或者,生成器表达式也可以工作(感谢@Nicklas B 提醒我,出于某种原因,我首先想到了列表理解):

', '.join(''.join(i) for i in p)
于 2012-06-17T23:36:23.127 回答
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'
于 2012-06-18T01:40:14.593 回答