【问题标题】:How to make list of numbers from string using range()?如何使用 range() 从字符串中创建数字列表?
【发布时间】:2016-01-24 11:29:17
【问题描述】:

我知道你可以使用 split 函数从一个字符串创建一个数字列表:

let Items = '1,3,5,7'
let MyList = split(Items, ',')
echo MyList --> [1,3,5,7]

但是如何使用range()从字符串中创建数字列表?

这不起作用(尾随字符错误):

let Items = '1,100,2'
let MyList = range(eval(Items))
echo MyList --> trailing characters error

【问题讨论】:

    标签: string list vim split range


    【解决方案1】:

    eval(Items) 没有任何意义。你可能想要一些东西:

    :let Items='1,100,2'
    :let MyList=split(Items,',')
    echo range(MyList[0],MyList[1],MyList[2])
    

    【讨论】:

      【解决方案2】:

      要使用 eval,您必须有一个表示(“包含”)完整表达式的字符串。如果您想使用您的Items 字符串作为range 函数的参数,那么您可以连接一个表示range 调用的字符串并像这样评估它:

      let Items = '1,100,2'
      let MyList = eval( 'range(' . Items . ')' )
      

      我不认为这样做是个好主意,但这是可能的。

      eval 对列表和字典执行 string 的反向操作,因此使用 split(Items) 获取列表的替代方法是 eval('[' . Items . ']')。但是拆分字符串似乎更容易,也更安全。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-20
        • 1970-01-01
        • 2016-02-13
        • 2017-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-20
        相关资源
        最近更新 更多