拆分不返回空元素

时间:2018-07-20 03:49:26

标签: perl

为什么这些都不全部返回bbb?

def solution(A):
     positive = range(min([max(0,min(A))]),max(A))
     return [value for value in positive if value not in A]

在所有情况下,我都希望>>> A = [-6,-8,2,3,5] >>> solution(A) [0, 1, 4] 返回一个包含3个元素的数组。

$ perl -e '$a="  "; print map { "b" } split / /, $a;'
<<nothing>>
$ perl -e '$a=",,"; print map { "b" } split /,/, $a;'
<<nothing>>
$ perl -e '$a="  a"; print map { "b" } split / /, $a;'
bbb
$ perl -e '$a=",,a"; print map { "b" } split /,/, $a;'
bbb

1 个答案:

答案 0 :(得分:9)

split的第三个参数表示要生成多少个元素:

  

split /PATTERN/,EXPR,LIMIT

     

...   如果LIMIT为负,则将其视为任意大;否则,将其视为任意大。产生尽可能多的字段。

     

如果省略LIMIT(或等效地为零),则通常将其视为负值,但除去尾随的空白字段(始终保留空的开头字段);如果所有字段均为空,则所有字段都被视为尾随(因此在这种情况下将被剥离)。

默认值为0,表示尽可能多的,但不包含任何尾随的空元素

您可以将-1作为第三个参数传递给split,以抑制此行为。