0

我想要做:

    (tokens.append(),tokens.append(), remaining) = remaining.partition(blank)

但这不是有效的语法。相反,我这样做:

    (t1, t2, remaining) = remaining.partition(blank) 
    tokens.append(t1) 
    tokens.append(t2) 

有没有更清洁的方法?顺便说一句,我相信我必须使用 .partition,因为我不能将多个空白合并为一个。

4

3 回答 3

2

尝试这个:

tokens.extend(remaining.partition(blank))
remaining = tokens.pop()
于 2012-07-02T14:59:34.717 回答
1

在 Python 3 中,您可以通过扩展的可迭代解包来完成此操作:

*tokens[len(tokens):], remaining = remaining.partition(' ')
于 2012-07-02T15:08:18.600 回答
0

我的目标是让每个{结果的单个元素}作为方法的参数或赋值的值传递。

剩余 = 'abc def ghi jkl' 令牌=[]

从概念上讲,我想

(tokens.append(),tokens.append(), 剩余的) = 剩余的.partition(空白)

备选方案 1:这就是我所做的:

(t1,t2,剩余)=剩余。分区(空白)

令牌.append(t1)

令牌.append(t2)

备选方案 2:非常难看,因为“繁重”的不必要的重复处理,在这种情况下,就是分区:

[(tokens.append(t1), tokens.append(t2), remaining) for t1 in (remaining.partition(' ')[0],) for t2 in (remaining.partition(' ')[1],)留在 (remaining.partition(' ')[2],) ]

备选方案 3:仍然丑陋,但在概念上更接近:

t=remaining.partition('')

[(tokens.append(t1), tokens.append(t2), remaining) for t1 in (t[0],) for t2 in (t[1],) for remaining in (t[2],) ]

这里的技巧是在“for”之前使用方法调用,在“in”之前使用单个项目列表。单项列表中的逗号,例如 (t[0],) 必须跟在唯一项之后。逗号不能放在它前面。

于 2012-07-06T02:46:13.613 回答