基础数据类型汇总

一、列表(list)

例如:删除索引为奇数的元素

  1. lis=[11,22,33,44,55]
  2.  
  3. #第一种:
  4. for i in range(len(lis)):
  5. if i%2==1:
  6. del lis[i]
  7. print(lis)
  8.  
  9. #第二种
  10. li=[]
  11. for i in lis:
  12. if lis.index(i)%2==0:
  13. li.append(i)
  14. lis=li
  15. print(lis)
  16.  
  17. #第三种:
  18. for i in range(len(lis)-1,-1,-1):
  19. if i%2==1:
  20. del lis[i]
  21. print(lis)
  22.  
  23. #第四种:当然 最简单了
  24. lis=lis[0::2]
  25. print(lis)

注意:在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错。

二、字典(dict)

  1. dic=dict.fromkeys([1,2,3],"二哥")
  2. print(dic) #{1: '二哥', 2: '二哥', 3: '二哥'}

1.同一个列表

  1. dic=dict.fromkeys([1,2,3],[])
  2. print(dic) #{1: [], 2: [], 3: []}
  3.  
  4. dic[1].append("二哥")
  5. print(dic) #{1: ['二哥'], 2: ['二哥'], 3: ['二哥']}

2.删除键为“k”开头的键值对

  1. dic={"k1":"v1","k2":"v2","a1":"v3"}
  2. #第一种:
  3. dic1={}
  4. for i in dic:
  5. if "k" not in i:
  6. dic1.setdefault(i,dic[i])
  7. dic=dic1
  8. print(dic)
  9.  
  10. #第二种:
  11. l=[]
  12. for i in dic:
  13. if "k" in i:
  14. l.append(i)
  15. for i in l:
  16. del dic[i]
  17. print(dic)

注意:字典、列表删除时不能循环键值对

三、元组(tuple)

  1. tu1 = (1)
  2. tu2 = (1,)
  3. print(tu1,type(tu1)) #1 <class 'int'>
  4. print(tu2,type(tu2)) #(1,) <class 'tuple'>
  5.  
  6. tu1 = ([1])
  7. tu2 = ([1],)
  8. print(tu1,type(tu1)) #[1] <class 'list'>
  9. print(tu2,type(tu2)) #([1],) <class 'tuple'>

注意:如果元组里面只有一个元素 ,且不加逗号,则此元素是啥类型就是啥类型;

如果有其他元素或只有一个逗号,就是元组。

四、集合

集合操作

特点:1)集合为可变的数据类型,但集合元素必须是不可变的数据类型。

2)无序

3不重复

1、创建集合

  1. # set1=set({1,2,3,4,5})
  2. # set2={4,5,6,7,8}

2、增

1)add

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. set1.add("女神")
  4. print((set1)) #{'wusir', 'barry', 'ritain', 'egon', 'alex', '女神'}

2)update:迭代添加

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. set1.update("abc")
  4. print(set1) #{'egon', 'barry', 'c', 'b', 'alex', 'a', 'wusir', 'ritain'}

3、删除

1)、pop(随机删除,有返回值)

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. set1.pop() #随机删除(有返回值)
  4. print(set1) #{'egon', 'barry', 'alex', 'ritain'}

2)remove(按元素)

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. set1.remove("alex") #按元素
  4. print(set1) {'ritain', 'egon', 'wusir', 'barry'}

3)clear(清空集合)

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. set1.clear() #清空集合
  4. print(set1) #set()

4)del(删除字典)

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. del set1 #删除集合
  4. print(set1) #报错

不能改:无序、元素为不可变数据类型

4、查

for循环

  1. set1={"alex","wusir","ritain","egon","barry",}
  2.  
  3. for i in set1:
  4. print(i)

5、交集(&  或者 intersection)

  1. set1={1,2,3,4,5}
  2. set2={4,5,6,7,8}
  3. print(set1 & set2)
  4. print(set1.intersection(set2)) #{4, 5}

6、并集(| 或者 union)

  1. set1={1,2,3,4,5}
  2. set2={4,5,6,7,8}
  3. print(set1|set2)
  4. print(set2.union(set1)) #{1, 2, 3, 4, 5, 6, 7, 8}

7、反交集(^ 或者 symmetric_difference)

  1. set1={1,2,3,4,5}
  2. set2={4,5,6,7,8}
  3. print(set1^set2)
  4. print(set1.symmetric_difference(set2)) #{1, 2, 3, 6, 7, 8}

8、差集(- 或者 difference)

  1. set1={1,2,3,4,5}
  2. set2={4,5,6,7,8}
  3. print(set1-set2)
  4. print(set1.difference(set2)) #{1, 2, 3}

9、子集与超集

  1. set1 = {1,2,3}
  2. set2 = {1,2,3,4,5,6}
  3.  
  4. print(set1 < set2)
  5. print(set1.issubset(set2)) # 这两个相同,都是说明set1是set2子集。
  6.  
  7. print(set2 > set1)
  8. print(set2.issuperset(set1)) # 这两个相同,都是说明set2是set1超集。

10、5,frozenset不可变集合,让集合变成不可变类型。

  1. s = frozenset('barry')
  2. print(s,type(s)) # frozenset({'a', 'y', 'b', 'r'}) <class 'frozenset'>

深浅copy

1、赋值运算

  1. l1 = [1,2,3,['barry','alex']]
  2. l2 = l1
  3.  
  4. l1[0] = 111
  5. print(l1) # [111, 2, 3, ['barry', 'alex']]
  6. print(l2) # [111, 2, 3, ['barry', 'alex']]
  7.  
  8. l1[3][0] = 'wusir'
  9. print(l1) # [111, 2, 3, ['wusir', 'alex']]
  10. print(l2) # [111, 2, 3, ['wusir', 'alex']]

注意:对于赋值运算来说,l1与l2指向的是同一个内存地址,所以他们是完全一样的。

2、浅拷贝copy

  1. l2 = l1.copy()
  2. print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2380296895816
  3. print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2380296895048
  4. l1[1] = 222
  5. print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2593038941128
  6. print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2593038941896
  7.  
  8. l1[3][0] = 'wusir'
  9. print(l1,id(l1[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016
  10. print(l2,id(l2[3])) # [1, 2, 3, ['wusir', 'alex']] 1732315659016

注意:对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。

3,深拷贝deepcopy

  1. import copy
  2. l1 = [1,2,3,['barry','alex']]
  3. l2 = copy.deepcopy(l1)
  4.  
  5. print(l1,id(l1)) # [1, 2, 3, ['barry', 'alex']] 2915377167816
  6. print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048
  7.  
  8. l1[1] = 222
  9. print(l1,id(l1)) # [1, 222, 3, ['barry', 'alex']] 2915377167816
  10. print(l2,id(l2)) # [1, 2, 3, ['barry', 'alex']] 2915377167048
  11.  
  12. l1[3][0] = 'wusir'
  13. print(l1,id(l1[3])) # [1, 222, 3, ['wusir', 'alex']] 2915377167240
  14. print(l2,id(l2[3])) # [1, 2, 3, ['barry', 'alex']] 2915377167304

注意:对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。

枚举

放可迭代对象,自动匹配索引,默认从0开始。

  1. li=["alex","taibai","wusir","egon"]
  2. for i in enumerate(li):
  3. print(i)
  4.  
  5. # (0, 'alex')
  6. # (1, 'taibai')
  7. # (2, 'wusir')
  8. # (3, 'egon')
  1. li=["alex","taibai","wusir","egon"]
  2. for index,i in enumerate(li): #默认从0开始
  3. print(index,i)
  4.  
  5. # 0 alex
  6. # 1 taibai
  7. # 2 wusir
  8. # 3 egon
  1. li=["alex","taibai","wusir","egon"]
  2. for index,i in enumerate(li,1): #可设置索引从1开始
  3. print(index,i)
  4.  
  5. # 1 alex
  6. # 2 taibai
  7. # 3 wusir
  8. # 4 egon 

Python基础 之列表、字典、元组、集合的更多相关文章

  1. python之字符串,列表,字典,元组,集合内置方法总结

    目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...

  2. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  3. python基础之 列表、元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  4. Python基础之列表、元组、字典、集合的使用

    一.列表 1.列表定义 names=["Jhon","Lucy","Michel","Tom","Wiliam ...

  5. python基础之 列表,元组,字典

    other help(str.strip) #查看是否有返回值以及返回值类型[] :称为索引操作符 1.列表 列表相比字符串来说能存储大量数据的python的基本数据类型,并且也拥有字符串的一些方法( ...

  6. Python基础2 列表 字典 集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

  7. Python基础学习 -- 列表与元组

    本节学习目的: 掌握数据结构中的列表和元组 应用场景: 编程 = 算法 + 数据结构 数据结构: 通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些元素可以是数字或者字符,或者其他数据 ...

  8. python基础4 列表和元组

    一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...

  9. python基础之列表、元组

    一.列表 列表(list)是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 作用:多个装备,多个爱好,多门课程,多个女朋友等 定义:[ ]内可以有多个任意类型的值,逗号 ...

  10. Python基础:列表,元组和字典的基本操作

    列表(集合list)的基本操作: # 列表的常见操作 nameList = ["张学友", "刘德华", "郭富城", "黎明&q ...

随机推荐

  1. 关于ip层的作用网址链接

    http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091113054.shtml

  2. ecmall分页

    在Ecmall的二次开发中,分页是必不可少的.这个系统已经自带了分页功能,下面来看看如何使用这个分页. 下面是一个自定义的类,用于查看订单的详细情况.关键在于get_order_data()这个方法, ...

  3. 浅谈对【OSI七层协议】的理解

    我们每天都在上网冲浪,在这背后到底有那些设备.协议去支撑呢?ISO是[Open System Interconnection]的缩写,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本 ...

  4. Nginx httpS server配置

    Nginx httpS 配置 配置同时支持http和httpS协议: server { listen ; #backlog:每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包 ...

  5. sql server中类似oracle中decode功能的函数

    sqlserver 2008 写法 select t.PROJECTNAME, t.BUILDCONTENTSCALE, CASE t.PROJECTLEVEL ' THEN '国家重点' ' THE ...

  6. PHP 16 个编程法则

    HP是最好的编程语言.对于PHP开发者来说,掌握一些编程法则是十分重要的.而在PHP中,以双下划线(__)开头的方法称为魔术方法,它们扮演着非常重要的角色. 常用的魔术方法包括: -__constru ...

  7. 深入浅出K-Means算法

    在数据挖掘中,K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法. 问题 K-Means算法主要解决的问题如下图所示. ...

  8. nginx.conf自己整理的中文解读

    自己收集了网上有关conf文件的中文详解,这样以后就不怕看不懂nginx的配置文件啦! #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数. ...

  9. ALUA and SRM

    A couple important (ALUA and SRM) notes There’s some internal dialog today on our “VMware Champions” ...

  10. POJ 2823 Sliding Window(单调队列入门题)

      Sliding Window Time Limit: 12000MS   Memory Limit: 65536K Total Submissions: 67218   Accepted: 190 ...