【金莎娱乐电子游戏网】Python的数据结构

LinkedList 后生可畏种可以在任何岗位打开快速地插入和删除操作的不改变类别

11.LinkedHashMap  能够记住键值增多次序的映射表

boolean isExists=false;
    Iterator iterator=set.iterator();
    while(it.hasNext())           {
    String oldStr=it.next();
    if(newStr.equals(oldStr)){
    isExists=true;
    }
    }

映射Mapping

  • dict:字典
    • dict内置函数如下:
      • copy:再次来到三个字典的浅复制
      • fromkeys:以钦命系列为键创建二个新字典,值都以形似的,使用情形很特定
      • update:以键批量更新的办法,(相符的更新,贫乏的补偿卡塔尔
      • get:再次来到钦命键的值,要是值不在字典中回到default值
      • setdefault:和get()肖似,
        但假如键一纸空文于字典中,将会增多键并将值设为default
      • pop:删除字典给定键 key
        所对应的值,重回值为被剔除的值;key值必需付出,不然重返default值
      • popitem:随机再次来到并剔除字典中的大器晚成对键和值
      • clear:删除字典内有所因素,变为{}
      • items
      • keys
      • values

# 键必须是唯一的,但值则不必。# 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组# d = {key1 : value1, key2 : value2 }dict1 = { 'abc': 456,'sss':'sss',100:100 }dict2 = { 'abc': 123, 98.6: 37, 'sss':['a',3,5] }dict3 = dict.fromkeys([1,2,3], [1,2,3])   # {1: [1, 2, 3], 2: [1, 2, 3], 3: [1, 2, 3]}# 访问/取值,依靠键dict2['abc']       # 返回123dict2.get('abc','no')   # 效果一样,但如果建不存在,会方法默认值,这里设为no,默认值的参数默认是Nonedict2.setdefault('s','sd') # 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default,default默认为None# 批量更新dict2.update # 相同的键,就更新值,缺少的键,直接增补print        # {98.6: 37, 100: 100, 'abc': 456, 'sss': 'sss'}# 删除print(dict2.pop("abc")) # 指定键,进行删除,并返回该键对应的值,如果键不存在,直接报错print(dict2.popitem  # 随机删除一对键值,并返回该对键值的元组形式# 遍历for k,v in dict2.items():    print(k,":",v)for k in dict2.keys():    printfor v in dict2.values():    print

请必须注意,dict内部寄存的依次和key归入的依次是未有关联的

和list相比较,dict有以下多少个特征:

  1. 搜求和插入的快慢不慢,不会随着key的充实而变慢
  2. 亟需占用大批量的内部存款和储蓄器,内部存款和储蓄器浪费多

而list相反:

  1. 检索和插入的小运随着成分的加码而扩展
  2. 占用空间小,浪费内部存款和储蓄器相当少

因而,dict是用空间来换取时间的意气风发种方法

dict能够用在须求快捷查找的不菲地方,在Python代码中大概无处不在,正确利用dict比较重大,必要记住的首先条正是dict的key必需是不可变对象

那是因为dict依据key来计量value的寄放位置,假诺每一趟计算同风姿潇洒的key得出的结果区别,那dict内部就完全混乱了。这么些通过key计算地点的算法称为哈希算法

ArrayList 大器晚成种能够动态增进和减弱的目录类别

9.ArrayQueue  循环数组完结的双端队列

    Map(映射):
    Map
是意气风发种把键对象和值对象映射的聚众,它的每三个要素都含有黄金时代对键对象和值对象。
    Map未有世袭于Collection接口
    从Map集结中检索成分时,只要给出键对象,就能够重返对应的值对象。
    Map 的常用方法:     1 加上,删除操作:
    Object put(Object key, Object value): 向集结中加入成分
    Object remove(Object key):   删除与KEY相关的因素
    void putAll(Map t):   未来自特定印象的具备因素增添给该印象
    void clear(): 从印象中剔除全部映射
    2 询问操作:
    Object get(Object key): 拿到与第一字key相关的值
   
Map集合中的键对象不容许再度,也就说,大肆七个键对象通过equals()方法相比较的结果都是false.
    可是足以将随意多少个键独享映射到同贰个值对象上。
    Conllections : 集合实用类
    Conllections提供了供JAVA集结实用的静态方法
    总结:    
JAVA集合的为主用法,都归咎了,上边这么些是常常最常用的JAVA集结,具体的此外的,还要参照他事他说加以考查JDK扶助文书档案了,呵呵
关于 Map的采用,还应该有为数不菲,具体正是这么些,Conllections提供了众多 List /Map
实用的法子,对平庸开荒特别常有效。

  • Python内置的数据结构
    • 序列Sequence
    • 映射Mapping
    • 集合Sets

TreeSet 大器晚成种有序集

10.PriorityQueue  允许高效去除最小成分的聚合

 

集合Sets

  • set:可变会集
    • set和dict相像,也是意气风发组key的集合,但不存款和储蓄value;这几个key既不另行,也冬季
  • frozenset:不可变集结
set frozenset 说明
add y
clear y y
copy y
difference y y
difference_update y
discard y
intersection y y
intersection_update y
isdisjoint y y
issubset y y
issuperset y y
pop y
remove y
symmetric_differen y y
symmetric_difference_update y
union y y
update y

参考:

HashSet 风度翩翩种未有重新成分的无序集中

2.LinkedList 方可在别的岗位急忙插入和删除错左的平稳种类

 list l = new ArrayList();
 l.add("aa");
 l.add("bb");
 l.add("cc");
 for (Iterator iter = l.iterator(); iter.hasNext();) {
  String str = (String)iter.next();
  System.out.println(str);
 }
 /*迭代器用于while循环
 Iterator iter = l.iterator();
 while(iter.hasNext()){
  String str = (String) iter.next();
  System.out.println(str);
 }
 */

序列Sequence

  • list:列表,有序的 可变 序列
  • tuple:元组,有序的 不可变 序列
  • str:字符组成的 有序的 不可变 类别,字符可使用编码来了然
  • bytes:字节组成的 有序的 不可变 体系
    • (分化:字符串是字符组成的行列,以三个字符为单位;字节体系是字节组成的队列,以字节为单位)
  • bytearray:字节组成的 有序的 可变 种类

小本事:查看二个类的放置方法

for _def in dir:    if "__" in _def:   # 内部方法跳过        continue    else:        print

对照list和tuple的结果如下:

append clear copy count extend index insert pop remove reverse sort
list y y y y y y y y y y y
tuple y y

PS:元组只不过是可读的列表,并由[]改为()

# 定义empty_list = []num_list = [1,2,3,4,5,6,7,8,9,10]mix_list = [1,"str",[1,2],[3,4]]empty_tuple = ()num_tuple = (1,2,3,4,5,6,7,8,9,10)mix_tuple = (1,"str",,[3,4])# 增empty_list.append("a")       # 插入元素,默认末端插入empty_list.append("b")empty_list.insert(0,"e")     # 指定位置插入元素empty_list.insert(-1,"e")empty_list.extend(["c","d"]) # 扩展,在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)empty_list.append(["c","d"])# 拼接print(num_list + mix_list)   # 拼接两个listprint(num_list * 3)          # 拼接三个相同的list# 删empty_list.remove("e") # 指定元素删除,# 移除列表中某个值的第一个匹配项empty_list.pop()       # 弹栈,删除末端的一个元素del(empty_list[-1])    # 非list内置方法del(empty_list)        # 整个对象删除,连变量名都不存在了empty_list.clear()     # 清空,变成空的列表[],变量还是存在的;与del不同,del后对象是不存在的,使用该变量的花会直接报错# 改empty_list[0] = 'change' # 查--切片printprint(num_list[0:2])print(num_list[:2])print(num_list[7:])print(num_list[7:-1])print(num_list[-3:])print(num_list[-3:-1])print(num_list[10:])print(num_list[0:-1:3]) # 间隔切片print(num_list[::3])    # 间隔切片# 查--检验print(4 in mix_list)print(4 in mix_list[-1])print(1 not in mix_list)# 查--计数print(len)        # 查看整个list的元素数量print(num_list.count   # 查看指定元素的数量# 查cmp(list1, list2)           # 比较两个列表的元素print(num_list          # 从列表中找出某个值第一个匹配项的索引位置print(len)        # 查看整个list的元素数量print(min)        # 返回列表元素最小值print(max)        # 返回列表元素最大值# 对象的复制num_copy = num_list.copy()  # 使用copy才会在内存中开辟新的内存去存储num_copy的值num_copy = num_list         # 简单的赋值语句只不过是两个不同的变量名指向同一块内存,感觉上就是改变一个,另一个也改变num_copy = list        # 将元组转换为列表# 顺序操作num_list.reverse()          # 反向列表中元素printnum_list.sort()             # 对原列表进行排序,模式升序,配合reverse(),升降序就都实现了print

LinkHashSet 生龙活虎种能够记住元素插入次序的群集

6.TreeMap  键值有序排列的映射表

*   * 全数的JAVA集合都坐落 java.util包中!
    JAVA会集只可以寄存援引类型的的多少,不能够贮存基本数据类型.
    JAVA集结主要分为二种档期的顺序:
    Set(集)
    List(列表)
    Map(映射)
    Collection 接口
   
Collection是最核心的集中接口,申明了适用于JAVA集结(只囊括Set和List卡塔尔国的通用方法。
    Set 和List 都连任了Conllection,Map未有
    Collection接口的法子:
    boolean add(Object o)   :向聚集中步向一个目的的援用
    void clear()                       
:删除集合中负有的对象,即不再具有那些目的的援引
    boolean isEmpty()           :判定会集是还是不是为空
    boolean contains(Object o): 推断群集中是还是不是有所一定目的的援用
    Iterartor iterator()              :
重临三个Iterator对象,能够用来遍历集合中的成分
    boolean remove(Object o):从会集中除去多个对象的援引
    int size()                               :再次来到集结瓜时素的多寡
    Object[] toArray()                
:重回一个数组,该数组中包蕴会集中的全部因素
    关于:Iterator() 和toArray()
方法都用来集合的装有的要素,前者重回多个Iterator对象,前者再次来到一个分包集合中有着因素的数组。
    Iterator接口注明了之类方法:     hasNext(): 判定集合凉月素是或不是遍历达成,若无,就回去true
    next()       :再次回到下八个要素
    remove():从集合中除去上三个有next()方法重临的成分。
    Set(集合):
   
Set是最简便的生机勃勃种集合。集合中的对象不按一定的章程排序,而且未有重新对象。
    Set接口注重达成了多少个贯彻类:
    HashSet : HashSet类根据哈希算法来存取集结中的对象,存取速度非常的慢
    TreeSet   :
TreeSet类实现了SortedSet接口,能够对聚聚集的对象开展排序。
    Set 的用法:     存放的是指标的援引,未有再次对象
   

目录

PriorityQueue 生机勃勃种能够非常快去除最小成分的集聚

7.  EunmMap  枚举类型的映射表

  Java中的Iterator效率比较轻松,并且不能不单向运动:

Python内置的数据结构

Python语言简洁明了,能够用非常少的代码完结均等的作用。这其间Python内置的数据结构(能够统称为容器container卡塔 尔(阿拉伯语:قطر‎功不可没,首借使序列映射以及集合三类重要的器皿,最常用的为以下多个子类:

  • list
  • tuple
  • dict
  • set

LinkedHashMap 后生可畏种可以记住插入次序的照耀

14.LinkedHashSet  能够记住插入次序的汇集

在Java中应用Set,能够方便地将供给的连串以聚众类型保存在一个变量中.首要选取在呈现列表.Set是多个不带有重复成分的
collection。更方便地讲,set 不含有满意 e1.equals(e2) 的成分对 e1 和
e2,並且最多富含叁个 null 成分。

相关文章