我打算在单词列表中剥离由"-"
链接的单词。
我将使用加星标的表达式,因为我忽略是否会在列表中使用split()
获得列表。
我在常量表达式上工作得很好:
[i for i in [*['1','2'],'1']]
产量:
['1', '2', '1']
我将使用变量获得相同的过程:
test=pd.DataFrame( {'columns0' :[['hanging', 'heart', 't-light', 'holder']]})
test.apply(lambda x : [e if len(e.split('-'))==1 else (*e.split('-')) for e in x ])
但是如您所料,它不起作用:
File "<ipython-input-1109-dda6b3df14bb>", line 3
test.apply(lambda x : [e if len(e.split('-'))==1 else ( *e.split('-')) for e in x ])
^
SyntaxError: can't use starred expression here
答案 0 :(得分:1)
为什么还要打扰那些情况呢? id name code attribute amount
1 AV 123 Alpha 233
2 TV 122 Beta 235
4 CD 122 Beta 239
5 TP 122 Beta 240
6 RX 123 Alpha 241
不管长度如何,都会以任何一种方式返回列表。只需嵌套理解即可:
split
答案 1 :(得分:0)
显然,答案是列表推导不支持splats。
PEP得出了抽象的说法:“该PEP在列表,集合和字典理解中不包括解包运算符,尽管尚未排除在以后的提议中。”
来源:https://www.python.org/dev/peps/pep-0448/#id6
在回答类似问题时,@ Curtis Lustmore解释说:“赋值运算符(及其上的所有变体)在Python中形成一个语句,而不是一个表达式。不幸的是,列表理解(和其他理解,例如set,词典和生成器)仅支持表达式”