版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。

1 python与scala基本数据结构

1.1 scala 数据结构

  • List 案例

     val l = List(1, 1, 2, 2, 3, 5)List元素的追加val list2 = list1 :+ 99println(list2)val list3 = 100 +: list1List的创建与追加,符号“::”,注意观察去掉Nil和不去掉Nil的区别scala> val list4 = 1 :: 2 :: 3 :: list1list4: List[Int] = List(1, 2, 3, 1, 2)scala> val list5 = 1 :: 2 :: 3 :: list1 :: Nillist5: List[Any] = List(1, 2, 3, List(1, 2))//map操作scala> l.map(_ * 2)res0: List[Int] = List(2, 4, 6, 8, 10)//filter操作scala> l.filter(_ > 2)res3: List[Int] = List(3, 4, 5)//collect操作scala> l.collect {case i if i > 2 => i * 2}res1: List[Int] = List(6, 8, 10)//定义一个列表scala> val l = List(List(1, 2, 3), List(4, 5, 6), Seq(7, 8, 9))l: List[Seq[Int]] = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))//flatten操作scala> l.flattenres5: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)//flatMap操作scala> l.flatMap(i => i.map(_ * 2))res6: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18)case class Student(name: String,age: Int,sex: String)val jilen = Student(name = "Jilen",age = 30,sex = "m")val shaw = Student(name = "Shaw",age = 18,sex = "m")val yison = Student(name = "Yison",age = 40,sex = "f")val l = List(jilen, shaw, yison)l: List[Student] = List(Student(Jilen,30,m), Student(Shaw,18,m), Student(Yison,40,f))val nameList = l.map(_.name)nameList: List[String] = List(Jilen, Shaw, Yison)val maleList = l.filter(_.sex == "m")maleList: List[Student] = List(Student(Jilen,30,m), Student(Shaw,18,m))l.zipWithIndexList[(Student, Int)] = List((Student(Jilen,30,m),0), (Student(Shaw,18,m),1),(Student(Yison,40,f),2))val group = l.groupBy(_.sex)group: scala.collection.immutable.Map[String,List[Student]] = Map(m -> List(Student(Jilen,30,m), Student(Shaw,18,m)), f -> List(Student(Yison,40,f)))
    复制代码
  • Array结构

      定义val arr1 = new Array[Int](10)//赋值arr1(1) = 7或://定义val arr1 = Array(1, 2)//定义val arr2 = ArrayBuffer[Int]()//追加值arr2.append(7)//重新赋值arr2(0) = 7定长数组与变长数组的转换arr1.toBufferarr2.toArray多维数组//定义val arr3 = Array.ofDim[Double](3,4)//赋值arr3(1)(1) = 11.11Scala数组转Java数组import scala.collection.JavaConversions.bufferAsJavaListval javaArr = new ProcessBuilder(arr4)println(javaArr.command())import scala.collection.JavaConversions.asScalaBufferimport scala.collection.mutable.Bufferval scalaArr: Buffer[String] = javaArr.command()println(scalaArr)for(x <- arr1) {println(x)}
    复制代码
  • 元组 Tuple

      元组的创建val tuple1 = (1, 2, 3, "heiheihei")println(tuple1)元组数据的访问,注意元组元素的访问有下划线,并且访问下标从1开始,而不是0val value1 = tuple1._4println(value1)元组的遍历for (elem <- tuple1.productIterator) {print(elem)}tuple1.productIterator.foreach(i => println(i))tuple1.productIterator.foreach(print(_))
    复制代码
  • 映射 Map

      构造不可变映射val map1 = Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> 30)构造可变映射val map2 = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 20, "Kotlin" -> 30)对偶元组 val map4 = Map(("Alice", 10), ("Bob", 20), ("Kotlin", 30))取值如果映射中没有值,则会抛出异常,使用contains方法检查是否存在key。如果通过 映射.get(键) 这样的调用返回一个Option对象,要么是Some,要么是None。val value1 = map1("Alice")//建议使用get方法得到map中的元素println(value1)scala> map1.get("Alice")res1: Option[Int] = Some(10)更新值map2("Alice") = 99println(map2("Alice"))或:map2 += ("Bob" -> 99)map2 -= ("Alice", "Kotlin")println(map2)或:val map5 = map2 + ("AAA" -> 10, "BBB" -> 20)println(map5)遍历for ((k, v) <- map1) println(k + " is mapped to " + v)for (v <- map1.keys) println(v)for (v <- map1.values) println(v)for(v <- map1) prinln(v)
    复制代码
  • Set集合

      集是不重复元素的结合。集不保留顺序,默认是以哈希集实现。Set不可变集合的创建val set = Set(1, 2, 3)println(set)Set可变集合的创建,如果import了可变集合,那么后续使用默认也是可变集合import scala.collection.mutable.Setval mutableSet = Set(1, 2, 3)可变集合的元素添加mutableSet.add(4)mutableSet += 6注意该方法返回一个新的Set集合,而非在原有的基础上进行添加mutableSet.+(5)//该方法相当于 “:+” 这个方法可变集合的元素删除mutableSet -= 1mutableSet.remove(2)println(mutableSet)for(x <- mutableSet) {println(x)}
    复制代码
  • 迭代器

      val iterator = List(1, 2, 3, 4, 5).iteratorwhile (iterator.hasNext) {println(iterator.next())}或:for(enum <- iterator) {println(enum)}
    复制代码

1.2 python 数据结构

  • List 案例

          list1=['两点水','twowter','liangdianshui',123]# 通过索引来访问列表print(list1[2])# 通过方括号的形式来截取列表中的数据print(list1[0:2])# 通过索引对列表的数据项进行修改或更新list1[2]=456print(list1)# 使用 append() 方法来添加列表项list1.append('hello');print(list1)list1=['两点水','twowter','liangdianshui',123]print(list1)# 使用 del 语句来删除列表的的元素del list1[3]print(list1)函数&方法                描述cmp(list1, list2) 比较两个列表的元素len(list)  列表元素个数max(list) 返回列表元素最大值min(list)  返回列表元素最小值list(seq)  将元组转换为列表list.append(obj)    在列表末尾添加新的对象list.count(obj)  统计某个元素在列表中出现的次数list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)  从列表中找出某个值第一个匹配项的索引位置list.insert(index, obj) 将对象插入列表list.pop(obj=list[-1])  移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.reverse()   反向列表中元素list.sort([func])    对原列表进行排序
    复制代码
  • Tuple元祖(两种创建,不可变)

      tuple1=('两点水','twowter','liangdianshui',123,456)tuple2='两点水','twowter','liangdianshui',123,456   元组中只包含一个元素时,需要在元素后面添加逗号tuple4=(123,)print(tuple1[1])print(tuple2[0])
    复制代码
    #-*-coding:utf-8-*-list1=[123,456]tuple1=('两点水','twowater','liangdianshui',list1)print(tuple1)list1[0]=789list1[1]=100print(tuple1)('两点水', 'twowater', 'liangdianshui', [123, 456])('两点水', 'twowater', 'liangdianshui', [789, 100])tuple1=('两点水','twowter','liangdianshui',[123,456])print(tuple1)del tuple1
复制代码
  • dict (字典,可变容器模型,且可存储任意类型对象)

      #-*-coding:utf-8-*-dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'}print(dict1)# 新增一个键值对dict1['jack']='444444'print(dict1)# 修改键值对dict1['liangdianshui']='555555'print(dict1){'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'}{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333', 'jack': '444444'}{'liangdianshui': '555555', 'twowater': '222222', '两点水': '333333', 'jack': '444444'}#-*-coding:utf-8-*-dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'}print(dict1)# 通过 key 值,删除对应的元素del dict1['twowater']print(dict1)# 删除字典中的所有元素dict1.clear()print(dict1)# 删除字典del dict1
    复制代码
  • set 无序不重复元素集

      set1=set([123,456,789,123,123])print(set1)
    复制代码

3 总结

秦凯新 于深圳

数据处理利器python与scala基本数据结构对比分析1-大数据ML样本集案例实战相关推荐

  1. Python技术栈与Spark交叉数据分析双向整合技术实战--大数据ML样本集案例实战

    版权声明:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客.QQ邮箱地址:1120746 ...

  2. python工资高还是java-未来Java、大数据、Python哪个前景更好,薪资更高?

    都知道现在最火爆的是人工智能.大数据.而人工智能和大数据主要用的语言就是Java和Python.今天我们就来分析一下,当前java,python和大数据,哪个就业前景更好?自己该学哪一个? Java和 ...

  3. 数据可视化:利用Python和Echarts制作“用户消费行为分析”可视化大屏

    数据可视化:利用Python和Echarts制作"用户消费行为分析"可视化大屏 前言 实验目的: 准备工作: 一.创建项目: 二.建立数据库连接获取数据: 三.页面布局: 四.下载 ...

  4. 利用python爬取猫眼电影,分析《大侦探皮卡丘》|凹凸数读

    利用python爬取猫眼电影,分析<大侦探皮卡丘>,看看当皮卡丘长出绒毛,"丑拒"还是"真香"都在猫眼短评里了. 本文首发于微信公众号<凹凸数 ...

  5. Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn)

    Python在Seaborn中手动指定调色板颜色进行数据可视化颜色自定义实战(Manually Specify Palette Colors in Seaborn) 目录

  6. Python爬虫,爬取51job上有关大数据的招聘信息

    Python爬虫,爬取51job上有关大数据的招聘信息 爬虫初学者,练手实战 最近在上数据收集课,分享一些代码. 分析所要爬取的网址 https://search.51job.com/list/000 ...

  7. 大数据Spark入门案例5–统计广告点击数量排行Top3(scala版本)

    大数据Spark入门案例5–统计每广告点击数量排行Top3(scala版本) 1 数据准备 链接:https://pan.baidu.com/s/1afzmL-hNsAJl1_gx_dH2ag 提取码 ...

  8. python、oracle、linux、mysql、大数据及其它内容学习导航站

    本导航站汇聚本博主所有python.oracle.linux.mysql.大数据及其它学习原创内容,励志将50篇归为一类,该导航站方便大家收藏查看. 一.python python-利用python写 ...

  9. 后端开发、爬虫开发、人工智能、金融量化分析、大数据跟Python是什么关系?

    Python是一种计算机程序设计语言,又被称为胶水语言,可以用混合编译的方式使用c/c++/java等语言的库.你可能已经听说过很多种流行的编程语言,比如在大学里感觉非常难学的C语言,进入社会非常流行 ...

  10. Go语言和Java、python等其他语言的对比分析

    一.Go语言设计初衷 1.设计Go语言是为了解决当时Google开发遇到的问题: 大量的C++代码,同时又引入了Java和Python 成千上万的工程师 数以万计行的代码 分布式的编译系统 数百万的服 ...

最新文章

  1. 深度学习表数据的工具
  2. 把一个人的特点写具体作文_五年级下册第五单元习作把一个人的特点写具体写作指导+范文赏析+图文解读...
  3. socket工具android,Android通过socket长连接实现推送
  4. RuntimeException:java.lang.ClassNotFoundException: Class wordcount.WordCountMapper not fonud
  5. java线程的5个使用技巧
  6. 【CSS3】填色表格演示hsl()
  7. 整数的个数(信息学奥赛一本通-T1067)
  8. 【Flink】Flink消费Kafka数据时指定offset的五种方式
  9. java 经典免费教程下载
  10. python获取session里的_python 怎么取sessionid-问答-阿里云开发者社区-阿里云
  11. pythonocc_链轮
  12. OMNeT 例程 Tictoc9 学习笔记
  13. [python案例]金融知识图谱构建流程
  14. 8.字典操作。建立一个月份与天数的字典monthdays,月份为“Jan”“Feb”“Mar”“Apr”“May”“Jun” “Jul” “Aug” “Sep” “Oct” “Nov“ “Dec“
  15. 杭电计算机学院和其他学院,浙江最好的5所大学,浙江大学一家独大,其余4所争议很大...
  16. php用ckeditor无法上传大图片,php ckeditor上传图片文件大小限制修改
  17. Chainlink 预言机新技术研发成果 - CCIP,DECO,FSS 和 OCR 2.0
  18. [code] PTA 胡凡算法笔记 DAY003
  19. 《剑指 Offer》题目汇总
  20. python 类属性函数,python_30期【类包含属性和函数】

热门文章

  1. Choosing Capital for Treeland codeforce 219-D
  2. 数据库事务的一致性和原子性浅析
  3. Mysq 5.7l服务无法启动,没有报告任何错误
  4. MySQL 6.子查询
  5. Javascript作用域、闭包原理以及性能问题
  6. [转贴]Linux新增用户和组
  7. cat(MATLAB
  8. Ford-Fulkerson Edmonds-Karp算法
  9. 如何在 Mac 上管理用于锁定备忘录的密码?
  10. 如何利用FL Studio中文版做出失真效果