首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python入门(三):数据结构

获取字符串: 使用数字下标(python索引从0开始) 使用切片 [m:n]表示第m至n-1个元素, [:m]表示开始至m-1个元素, [m:]表示第m个元素至字符串末尾...05 集合 set 集合set是一组无序并且没有重复元素的KEY集合; set跟dict的key类似,区别在于set没有value; key无序,所以set不支持数字索引和切片(dict也不支持); 使用场景...: 1、判断某个元素是否在集合set中(set比list速度快); 2、消除输入数据的重复元素; 特点: 和dict一样,set的key只能是数字、字符串、元组等不可变对象,不能是列表等可变对象。...创建方式: 创建一个空集合:s = set()创建一个初始化集合方法1:s = {1,2,2,3}创建一个初始化集合方法2:s = set([1,2,2,3]) 这里的参数可以是列表、元组、字符串创建空集合不能用...s = {},因为这样创建了dict字典 常用方法: len(set) 集合的元素个数for x in set 集合的遍历set.add(key) 新增一个KEY,如果有重复会自动去重set.remove

1K30

python的dict,set,list

字典(dict) dict 用 {} 包围  dict.keys(),dict.values(),dict.items()  hash(obj)返回obj的哈希值,如果返回表示可以作为dict的key ...集合(set) 集合是一个数学概念,用set()创建  set.add(),set.update.set.remove,添加更新删除,-= 可以做set减法  set.discard 和 set.remove...使用多个参数会引起异常。  count(x) 返回对象x在列表中出现的次数。  extend(L) 将列表L中的表项添加到列表中。返回None。 ...tuple=1,2,3,4,这也可以是一个元组,在不使用圆括号而不会导致混淆时,Python允许不使用圆括号的元组。 和列表一样,可对元组进行索引、分片、连接和重复。也可用len()求元组长度。  ...和列表类似,使用tuple(seq)可把其它序列类型转换成元组。

94710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    为什么String在Java中是不可变的

    创建实例时,将初始化实例中的所有信息,并且无法修改信息。 不可变类有许多优点。 本文总结了为什么 String 设计为不可变的。 这篇文章从内存,同步和数据结构的角度说明了不变性概念。 1....如果字符串是可变的,则使用一个引用更改字符串将导致其他引用的错误。 2. 缓存的哈希码 字符串的哈希码经常在 Java 中使用。 例如,在 HashMap 或 HashSet 中。...这意味着,每次使用时都不需要计算哈希码。 这更有效率。...其他对象中的字符串 为了具体,请参考以下程序: HashSet set = new HashSet(); set.add(new String("a")); set.add...(new String("b")); set.add(new String("c")); for(String a: set) a.value = "a"; 在此示例中,如果 String 是可变的

    1.3K20

    java 为什么 String 在 java 中是不可变的?

    为什么 String 在 java 中是不可变的?String 在 java 中是不可变的,一个不可变类意味着它的实例在创建之后就不可修改,实例的所有属性在创建时初始化,之后无法对这些属性进行修改。...不可变类型有着许多的优点,这篇文章总结了 为什么 String 被设计成不可变的,文章将从内存、同步和数据结构的角度说明不变性概念。...2 用作缓存时的 hashcode字符串的哈希值在 java 中是被频繁使用到的。...,考虑如下代码: 代码解读复制代码HashSet set = new HashSet();set.add(new String("a"));set.add(new String...("b"));set.add(new String("c"));for (String s : set){ a.value = "a";}在这个例子中,如果 String 是可变的,那么它的 value

    8510

    【数据结构和算法】无限集中的最小数字

    实现 SmallestInfiniteSet 类: SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。...无限集合的范围可以认为是从 1 到正无穷大,并且都是正整数。 这道我是用TreeSet和一个min变量来维护这个无限集合。为什么用TreeSet,因为TreeSet支持维护元素的自然顺序。...(简单点说:比min还大的数不用加,说明已经存在了) 添加的元素如果小于无限集合的最小值 min 也不能直接添加,如果贸然添加会导致无限集合不连续,只需要把它添加到有序集合 TreeSet 中即可...删除元素的时候: 删除的时候先判断有序集合 TreeSet 是否为空,如果不为空,说明存在比 min 还小的元素,直接从 TreeSet 中删除。...(int num) { if (num < min) {//大于的话,说明存在了 set.add(num); } } } 四、总结 使用TreeSet

    10910

    Java|Map、List与Set的区别

    "); set.add(s1); set.add(s2); set.add(s3); System.out.println(set.size());  // 打印集合中对象的数目 为 2。...TreeSet: 保存次序的Set, 底层为树结构。使用它可以从Set中提取有序的序列。 LinkedHashSet:具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序)。...一个List可以生成ListIterator,使用它可以从两个方向遍历List,也可以从List中间插入和移除元 素。 ArrayList:由数组实现的List。...LinkedHashMap:类似于HashMap,但是迭代遍历它时,取得“键值对”的顺序是其插入次序,或者是最近最少使用(LRU)的次序。只比HashMap慢一点。...而在迭代访问时发而更快,因为它使用链表维护内部次序。 TreeMap:基于红黑树数据结构的实现。查看“键”或“键值对”时,它们会被排序(次序由Comparabel或Comparator决定)。

    2.8K130

    ArrayList实现原理分析(Java源码剖析)ArrayList使用的存储的数据结构ArrayList的初始化ArrayList是如何动态增长ArrayList如何实现元素的移除ArrayList

    ArrayList使用的存储的数据结构 ArrayList的初始化 ArrayList是如何动态增长 ArrayList如何实现元素的移除 ArrayList小结 ArrayList是我们经常使用的一个数据结构...需要说明的是,本文所分析的源码引用自JDK 8版本 ArrayList使用的存储的数据结构 从源码中我们可以发现,ArrayList使用的存储的数据结构是Object的对象数组。...我们通常会这么使用 Set set = new HashSet(); set.add(1); set.add(2); set.add...(3); set.add(4); ArrayList list = new ArrayList(set); 源码中是这么实现的 /** * Constructs...ArrayList小结 ArrayList是List接口的一个可变大小的数组的实现 ArrayList的内部是使用一个Object对象数组来存储元素的 初始化ArrayList的时候,可以指定初始化容量的大小

    1.6K30

    【Java基础】Set集合系列

    本篇目录 1- Set集合的特点 2- Set集合常用方法 3- HashSet 4- TreeSet 5- LinkedHashSet Set 继承关系图 1 Set集合的特点 继承关系:从Set...2 Set集合常用方法 向集合中添加一个元素,成功添加返回true,失败则返回false set.add("测试数据") 从集合中删除一个元素,成功删除返回true,失败则返回false set.remove...测试用例: Set set = new TreeSet(); // 创建TreeSet对象 set.add(5); // 添加元素 set.add(3); set.add(4);...set.add(100); set.add(60); // 遍历TreeSet元素并打印到控制台 for (Integer i : set) { System.out.println(i);...} TreeSet底层数据结构 由于TreeSet底层实现是红黑树,所以默认整型排序为从小到大,这也就解释了为什么TreeSet元素会处于排序状态。

    31020

    (49) 剖析LinkedHashMap 计算机程序的思维逻辑

    从用法开始。 用法 基本概念 LinkedHashMap是HashMap的子类,但内部还有一个双向链表维护键值对的顺序,每个键值对既位于哈希表中,也位于这个双向链表中。...LRU缓存 缓存是计算机技术中一种非常有用的技术,是一个通用的提升数据访问性能的思路,一般用来保存常用的数据,容量较小,但访问更快,缓存是相对而言的,相对的是主存,主存的容量更大、但访问更慢。...header.before = header.after = header; } header被初始化为一个Entry对象,前驱和后继都指向自己,如下图所示: ?...(); set.add("b"); set.add("c"); set.add("a"); set.add("c"); System.out.println(set); 输出为: [b, c,...如果需要一个Map的实现类,并且键的类型为枚举类型,可以使用HashMap,但应该使用一个专门的实现类EnumMap,为什么呢?让我们下节来探讨。

    53860

    python – 数据容器

    五种数据容器 1.list(列表) 2.tuple(元组) 3.str(字符串) 4.set(集合) 5.dict(字典) 一.list(列表) 定义空列表可以使用[] 列表中的元素的是有上限的,只是比较大基本上都可以满足日常使用...} print(f"set的去重测试结果为 - {set}") # 3.set.add(元素) - 添加集合 set = {1,2,3} print(f"添加前的set为 - {set}") set.add...- {len(set)}") # 11.集合的遍历操作 # 因为集合不支持下标索引所以集合不能使用while进行遍历,只能使用for set = {1,2,3} for msg in set:...(f"dict已被清空 - {msg}") # 7.dict.keys() - 获取字典内的全部key,主要用于for循环遍历中 dict = {1:"a",2:"b",3:"c"} msg = dict.keys...() print(f"dict中的key有 - {msg}") # 8.for遍历dict dict = {1:"a",2:"b",3:"c"} for key in dict.keys():

    50620

    偷偷盘点一下京东研发岗薪资

    京东这几天的热度真的非常高,据说零售部门开始严查考勤,并且调整了午休时间,整整缩短了一个小时,从原来的 11:30-13:30 调整为 12:00-13:00。...// 创建一个 HashSet 对象 HashSet set = new HashSet(); // 添加元素 set.add("沉默"); set.add("王二"); set.add...("陈清扬"); set.add("沉默"); // 输出 HashSet 的元素个数 System.out.println("HashSet size: " + set.size()); // output...,HashMap 的键是唯一的(哈希值),相同键的值会覆盖掉原来的值,于是第二次 set.add("沉默") 的时候就覆盖了第一次的 set.add("沉默")。...三分恶面渣逆袭:HashSet套娃 hashset为什么是随机的?其他两个是按存入顺序的? ArrayList 是基于动态数组实现的,HashSet 是基于 HashMap 实现的。

    1.2K00
    领券