zoukankan      html  css  js  c++  java
  • scala 列表List

    列表: 列表是不可变,也就是说不能通过赋值改变列表的元素; 列表有递归结构,而数据是连续的

      List 类型:List() 同样也是List(String)

      列表是基于Nil (是空的)和::(列表从前端扩展) x :: xs 的一个第一个元素为x, 后面紧跟元素 xs

      列表的操作:

      head :返回列表的第一个元素

      tail: 返回除第一个之外所有元素组成的列表

      isEmpty:如果返回为空,则返回真

    head 和tail 方法仅能作用在非空列表上,如果在空上执行会抛异常

    def isort(sx: List[Int]): List[Int] =  {
        if (sx.isEmpty) Nil else isinsert(sx.head, isort(sx.tail))
      }
    
    def isinsert(x: Int,sx: List[Int]) : List[Int] =
        if (sx.isEmpty || x <= sx.head) x :: xs else sx.head :: isinsert(x, sx.tail)

    列表模式: List(...) 对所有的元素做匹配,可以使用:: 操作符和Nil 常量组成的模式逐位拆分

    使用匹配模式

     def isort2(sx: List[Int]) : List[Int] = sx match {
        case List() => List()
        case x :: sxl => insert2(x, isort2(sxl))  
      }
      
      def insert2(x: Int, xs: List[Int]): List[Int] = xs  match {
        case List() => List(x)
        case y :: ys => if (x <= y) x:: xs else y :: insert2(x, ys)
      }

    List 类的一阶方法

    xs::: ys结果依次是 sx , ys的新列表

    访问列表尾部 init 方法和last方法

    head 和tail 运行的都是常量,但是init和last 需要遍历整个列表以及算结果,所耗的时间和列表成正比

    reverse反转列表方法:某种原因需要访问列表尾部,可以先反正在处理

    前缀与后缀: drop, take和splitAt

  • 相关阅读:
    SpringBoot,来实现MySQL读写分离技术
    range范围
    tuple元组
    序列通用操作及可变序列通用操作
    list列表
    数据
    python基础知识
    charm写代码时添加快捷键
    2、添加到项目里 在⚙图标里选择Add Remote...charm初期设置(远程服务器)
    5、优化
  • 原文地址:https://www.cnblogs.com/zhanggl/p/4984512.html
Copyright © 2011-2022 走看看