我是一个菜鸟, 如何从列表中删除引号和逗号?或者我如何“取消串联”?
在没有显示字典(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,
答案 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'