首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一日一技:包含非hashable元素的列表如何去重并保持顺序?

    如果是一个包含数字的列表,我们要对它进行去重同时保持剩余数据的顺序,可以使用集合来实现: a = [2, 1, 6, 3, 2, 7, 6]dup = set()a_uni = []for element...然而,数字之所以可以放进集合里面,是因为数字是 hashable的对象。在Python中,所有不可变的对象都是 hashable的,例如数字、字符串、元组。而列表和字典不是 hashable的。...为了解决这个问题,我们需要把字典转换为 hashable的对象,此时方法有很多种,其中一种是使用 json.dumps把字典转换为JSON格式的字符串。...在Python 3.6之前,由于字典的顺序是不确定的,所以同一个字典,转换为JSON以后可能会出现顺序不一致的情况,这就会导致两个实际上相等的字典转成JSON字符串以后不相等。...移除包含非 hashable元素的列表,就可以使用JSON字符串来辅助去重: import jsona = [ {'name': 'kingname', 'salary': 99999},

    1.2K30

    如何在网页置灰的时候,部分元素保持彩色-有意思的面试题

    网页置灰方案讨论如何在网页置灰的前提下,保持部分元素彩色在线体验本文视频版链接最近哀悼日,网页端如何一键变灰已经有很多实现方式了,但是我看到一个推文很有意思,是一个不错的面试题现在网页置灰已经不仅仅是一行...css的事了,如何在网页置灰的前提下,部分元素保持彩色,这是一个不错的system design题一键变灰这个大部分同学都写了,直接html{ filter: grayscale(100%);}考虑...js就可以了 图片那么问题来了,如何在置灰的前提下部分元素保持彩色呢filter重置(失败)如果能直接某个元素重置filter, 尝试下面的写法,但是不生效html{ filter:grayscale...方案更普及一些,不过作为面试题的话 我们还可以继续用filter这个方法,图片图片我们设置有一些选择器保持彩色,然后统计出当前这个网页中,需要置灰的元素,网页是一个属性结果,我们先对选中元素的父元素进行遍历标记图片..., 不过这样设置filter可能会导致部分元素的定位失效,不过作为面试题的追问还不错图片总结作为面试题来说,考察了面试者的css,js的dom遍历,递归思想,很不错的入门题

    84530

    Scala 【 11 Scala的集合体系结构 】

    Scala的集合体系结构 ​ Scala 中的集合体系主要包括:Iterable、Seq、Set、Map。 ​ 其中 Iterable 是所有集合 trait 的根 trait。...这个结构与Java的集合体系非常相似。 ​ Scala 中的集合是分成可变和不可变两类集合的,其中可变集合就是说,集合的元素可以动态修改,而不可变集合的元素在初始化之后,就无法修改了。...List 的创建: val list = List(1,2,3,4) ​ List 有 head 和 tail,head 代表List 的第一个元素,tail 代表第一个元素之后的所有元素。...Set ​ Set 代表一个没有重复元素的集合,将重复元素加入 Set 是没有用的。 ​ 而且 Set 是不保证插入顺序的,也就是说,Set 中的元素是乱序的。...val s = new scala.collection.mutable.HashSet[Int](); s += 1 s += 2 s += 5 ​ LinkedHashSet 会用一个链表维护插入顺序

    41120

    Spark基础-scala学习(五、集合)

    这个结构与java的集合体系非常相似 scala中的集合是分成可变和不可变两类集合的,其中可变集合就是说,集合的元素可以动态修改,而不可变集合的元素在初始化之后,就无法修改了。...代表List的第一个元素,tail代表第一个元素之后的所有元素,list.head,list.tail List有特殊的::操作符,可以用于将head和tail合并成一个List,0::list 案例:...用递归函数来给List中每个元素都加上指定前缀,并打印 如果一个List只有一个元素,那么它的head就是这个元素,它的tail为Nil scala> def decorator(l:List[Int]...循环将列表中的每个元素都乘以2 scala> val list = scala.collection.mutable.LinkedList(1,2,3,5,6) scala> var currentList...;s+1;s+4 而且Set是不保证插入顺序的,也就是说,Set中的元素是乱序的,val s = new scala.collection.mutable.HashSetInt;s+=1;s+=2;s+

    56220

    Flink - 自己总结了一些学习笔记

    逻辑地将一个流拆分成不相交的分区,每个分区包含具有相同 key 的元素,在内部以 hash 的形式实现的 Split 根据某些特征把一个 DataStream 拆分成两个或者多个 Select 从一个...SplitStream 中获取一个或者多个 DataStream Connect 连接两个保持他们类型的数据流,两个数据流被 Connect 之后,只是被放在了一个同一个流中,内部依然保持各自的数据和形式不发生任何变化...如将集合中每个元素按照空格切分。...functions) 每条数据到来就进行计算,保持一个简单的状态。...与常规 SQL 语言中将查询指定为字符串不同,Table API 查询是以 Java 或 Scala 中的语言嵌入样式来定义的,具有 IDE 支持如:自动完成和语法检测;允许以非常直观的方式组合关系运算符的查询

    91910

    JDK新特性——Stream代码简洁之道的详细用法

    无状态: 指元素的处理不受之前元素的影响; 有状态: 指该操作只有拿到所有元素之后才能继续下去。...非短路操作: 指必须处理所有元素才能得到最终结果; 短路操作: 指遇到某些符合条件的元素就可以得到最终结果,如 A || B,只要A为true,则无需判断B的结果。...API 5.1 中间操作 1. filter: 过滤流中的某些元素 //中间操作:如果调用方法之后返回的结果是Stream对象就意味着是一个中间操作 Arrays.asList(1,2,3,4,5...排序 sorted():返回由此流的元素组成的流,根据自然顺序排序。 sorted(Comparator com):返回由该流的元素组成的流,根据提供的 Comparator进行排序。...='java' name='scala' name='python') Stream.of(str2.split(",")).map(Users::new).forEach(System.out:

    65130

    Flink1.4 并发执行

    本节介绍如何在Flink中配置程序的并行执行。一个Flink程序由多个任务(transformations/operators,data sources和sinks)组成。...StreamExecutionEnvironment.getExecutionEnvironment val text = [...] val wordCounts = text .flatMap{ _.split...(5)) .sum(1).setParallelism(5) wordCounts.print() env.execute("Word Count Example") 1.2 执行环境级别 如这所述...客户端可以是Java或Scala程序。Flink的命令行接口(CLI)就是一种客户端。 对于CLI客户端,可以使用-p指定并发度参数。 例如: ./bin/flink run -p 10 .....备注: 将最大并发度设置为非常大的数值可能会对性能造成不利影响,因为一些后端状态必须保持在内部数据结构,而这些内部数据结构随key-groups(这是可扩展状态的内部实现机制)的数量进行扩展。

    1.1K40

    Spring-Web-Flux实战(三) - Stream 流

    流的操作不会修改数据源,例如filter不会将数据源中的数据删除。 延迟操作 流的很多操作如filter,map等中间操作是延迟执行的,只有到终点操作才会将操作顺序执行。...纯消费 流的元素只能访问一次,类似Iterator,操作没有回头路,如果你想从头重新访问流的元素,对不起,你得重新生成一个新的流 Java Stream提供了提供了串行和并行两种类型的流,保持一致的接口...中间操作会返回一个新的流,并且操作是延迟执行的,它不会修改原始数据源,而是由在终点操作开始的时候才真正开始执行 这和Scala集合的转换操作不同,Scala集合转换操作会生成一个新的中间集合,显而易见...这个方法不担保按照流的encounter order顺序执行,如果对于有序流按照它的encounter order顺序执行,你可以使用forEachOrdered方法 Stream.of(1,2,3,4,5...它是一个值得关注的类,你需要熟悉这些特定的收集器,如聚合类averagingInt、最大最小值maxBy minBy、计数counting、分组groupingBy、字符串连接joining、分区partitioningBy

    1.5K30

    日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url

    p.parseRecord(_).getOrElse(nullObject).request也就是我们取到uri .map(_.split(" ")(1))是取到我们过滤的url,过滤掉不想要的版本等信息...reduce、reduceByKey reduce(binary_function) reduce将RDD中元素前两个传给输入函数,产生一个新的return值,新产生的return值与RDD中下一个元素...KV对的RDD中Key相同的元素的Value进行binary_function的reduce操作,因此,Key相同 的多个元素的值被reduce为一个值,然后与原RDD中的Key组成一个新的KV对。...(3,4),(3,6))) a.reduceByKey((x,y) => x + y).collect //结果 Array((1,5), (3,10)) Seq Sequence都有一个预定义的顺序...)根据不同的条件对序列元素进行排序。

    90430

    Flink(二)

    基本转换算子 (1)map 映射,对每个元素进行一定的变换后,映射为另一个元素。输出泛型可以变化,常用作分词操作。 (2)flatMap 将元素摊平,每个元素可以变为0个、1个、或者多个元素。...3* 支持的数据类型 (1)Java和Scala基础数据类型; (2)Java和Scala元组(Tuples); (3)Scala样例类(case classes) (4)Java简单对象(POJO...与常规函数的区别是,可以获取运行环境的上下文,并拥有一些生命周期方法(open、close、invoke)。 如MapFunction对应RichMapFunction。 4....Window API 窗口分配器window()方法,必须在keyBy之后才能用,再做聚合操作。flink还提供了.timeWindow和.countWindow方法。...增量聚合函数(incremental aggregation functions) 每条数据到来就进行计算,保持一个简单的状态,计算内容简单。

    52820

    Spark——RDD操作详解

    Scala: val lines=sc.parallelize(List("hello word","hi","I'm back")) val words=lines.flatMap(line=>line.split...行动操作会对RDD计算一个结果,并把结果返回到驱动程序中,或把结果存储到外部存储系统中(如HDFS)中。...top()按照RDD元素的顺序,返回RDD的前几个元素。 first()就是一个行动操作,他会返回RDD的第一个元素。...如果缓存的数据太多,内存中放不下,Spark会自动利用最近最少使用(LRU)的缓存策略把最老的分区从内存中移除。当然对于使用内存和磁盘缓存级别的分区来说,移除的数据会写如磁盘。...最后,还可以使用unpersist()方法手动把持久化的RDD从缓存中移除。 cache()方法,是延迟执行,需要在一个action执行之后,进行缓存RDD。是persist特殊缓存方式。

    1.6K20
    领券