繁体   English   中英

解开Python?

[英]Unstring 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,

您想要生成一个字符串,因此您可以使用字符串操作(特别是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)

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

>>> 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'
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'方式),但我给了你一个简单粗暴的解决方案,所以我不会在你试图找出连接方式时杀掉你当前的课程( )方法有效。

那么使用列表理解呢?

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)

另一种解决方案:

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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM