主要内容:

列表 和 元组和字典

列表

一、列表介绍

列表是一种能存储大量数据的数据结构,是能装对象的对象。由方括号 [] 括起来,能放任意类型的数据,数据之间用逗号隔开

列表存储数据是有顺序的

二、增删改查

lis = []

1、增加 (三种)

lis.append()   在末尾追加,一次只能加一个

lis.insert(index, 元素)  在指定位置插入元素,这种方法由于会改变列表中其他索引,“牵一发而动全身”,所以运行效率会低一些

lis.extend(可迭代对象)  迭代添加

2、删除

lis.pop()   “弹出一个” 删除末尾的元素,并返回删除的元素值,也可以指定索引删除指定元素(通过索引删除)

lis.remove(元素)  移除一个某个元素(通过值删除元素)

lis.clear() 清空列表

切片删除

del lis[1:3]  # 删除索引是1,2的元素

索引切片修改
# 修改
lst = ["太白", "太", "五", "银王", "日天"]
lst[1] = "太污" # 把1号元素修改成太污
print(lst)
lst[1:4:3] = ["麻花藤", "哇靠"] # 切片修改也OK. 如果步长不是1, 要注意. 元素的个数
print(lst)
lst[1:4] = ["李嘉诚很厉害"] # 如果切片没有步长或者步长是1. 则不用关心个数
print(lst)
结果:
['太白', '太污', '五', '银王', '日天']
['太白', '麻花藤', '五', '哇靠', '日天']
['太白', '李嘉诚很厉害', '日天']

3、修改

只能根据索引值修改

lis[index] = " new"

4、查询

、根据索引和切片查找某个或某些元素

lis = ["列","表","与","元组"]
# 循环输出列表中元素
for c in lis :
print(c) # 代表列表中每个元素
# 循环输列表中元素 带索引
for n in rang(len(lis)):
print(n, lis[n])

、列表循环遍历

三、列表常用功能

lis.count(元素) 统计某个元素在列表出现次数

lis.index(元素)  返回元素的索引  没有时报错 ValueError: 5 is not in list

lis.sort()  列表排序,对于纯数字元素的列表,从小到大排序(升序)

lis.sort(reverse = True)  从大到小排序(逆序)

注意: 字符串不要用这个方法排序,不是不能排,而是用这个方法排完也没有什么价值,因为用的是默认的字符串比较大小的方式

"xxx".join(lis)    用"xxx"将列表元素连成字符串, 和split()功能相反     两个可以一起记

四、列表嵌套

想要找某个元素是,用降维的方法,一层一层的找,一定要注意每一层对应的是什么数据

元组

元组由括号()括起来。可以存任意类型数据

元组是不可变数据类型,所以,增删改查中只有查能进行,所以也被称为“只读列表”

  对元组不可变性的理解:

它的不可变性体现在元组在创建时第一层元素的内存地址就是固定的了,所以如果元素是不可变数据类型,比如字符串,那么是无法对其有修改操作的,但如果元素是可变数据类型,比如列表,是可以对其进行一些修改操作的。参考图解

注意坑:元组如果只有一个元素,要加逗号,不然会将括号算作运算符

 
t1 = (2)
t2 = (2,)
t3 = (1,2,3,)
print(t1) # 2
print(type(t1)) #<class 'int'>
print(t2) #(2,)
print(type(t2)) #<class 'tuple'>
print(t3) #(1,2,3)
print(type(t3) #<class 'tuple'>
code

常用操作:

t = (1,2,2,4,5,"张")

t.index()  查找指定索引元素  元素不存在时报错 ValueError: tuple.index(x): x not in tuple

t.count()  统计某个元素出现次数

补充知识:

range()函数
range(n)         遍历[0,n)的元素
range(m,n)       遍历[m,n)的元素
range(m,n,p)    从m到n, 每隔p个取一个  p为负数可以倒序遍历 如range(100,0,-1) 遍历[100,0)的元素

列表删除

切片删除

del lis[1:3]  # 删除索引是1,2的元素

修改

索引切片修改
# 修改
lst = ["太白", "太", "五", "银王", "日天"]
lst[1] = "太污" # 把1号元素修改成太污
print(lst)
lst[1:4:3] = ["麻花藤", "哇靠"] # 切片修改也OK. 如果步长不是1, 要注意. 元素的个数
print(lst)
lst[1:4] = ["李嘉诚个⻳⼉⼦"] # 如果切片没有步长或者步长是1. 则不用关心个数
print(lst)

字典

字典由花括号表示{ },元素是key:value的键值对,元素之间用逗号隔开

特点:1、字典中key是不能重复的 且是不可变的数据类型,因为字典是使用hash算法来计算key的哈希值,然后用哈希值来存储键值对数据

   2、字典中元素是无序的

   3、value值可以是任意类型的数据

注:字典中的key是可hash的,可hash的数据的都是不可变的数据类型

  已知的可哈希(不可变)的数据类型: int, str, tuple(元组), bool

  不可哈希(可变)的数据类型: list(列表), dict(字典), set(集合)

增删改查

创建一个空字典---两种方式:

dic ={}

dic = dict()

新增(两种方式)

dic[key] = value   # 可以新增也可修改已有key的value值

dic.setdefault(key, value)   # 如果key是没有的,新增;如果key已存在   保持原值(这个方法是分两步的 在查询会细说)

删除(四种方式)

pop(key)      # 必须指定一个key 删除指定元素

popitems( )   # 随机删除一个值(字典是无序的)  但是在3.6版本里效果是删除字典最后一个元素--->原因   3.5之前字典打印输出是无序的,但在3.6之后字典打印输出是按照元素添                           加的顺序的,所以感觉用这个方法时是删除的最后一个元素,但是这个方法的源码里还是随机删除的

del dic[key]   # 删除指定元素

dic.clear()  #  清空字典

修改(两种)

dic[key] = new value    #赋一个新值

dic.update(dic2)         #将dic2更新到dic中

查询(三种)

dic[key]    #查询指定元素 key不存在时报错

dic.get(key,[xxx])    #  查询key的value    key不存在时返回xxx,如果不写xxx,默认返回None

dic.setdefault(key,[value])   # 执行逻辑  第一步,看key是否存在,key存在, 不添加也不修改value;不存在,添加key:value键值对,value没有时默认为None

第二步,返回key对应的value值

常用操作

dic.keys()  返回所有的键  返回的是一个可迭代对象,形式像列表但又不是列表

1 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
2
3 print(dic.keys()) #dict_keys(['意大利', '意大利2', '美国', '美国电视剧'])
4
5 for k in dic.keys(): # 可以迭代。 拿到的是每一个key
6 print(k)

dic.values()  返回所有的值

dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}

print(dic.values())  #dict_values(['西西里的美丽传说', '天堂电影院', '美国往事', '越狱'])
for value in dic.values():
print(value)

dic.items()  返回所有的键值对

1 dic = {"意大利":"西西里的美丽传说", "意大利2":"天堂电影院", "美国":'美国往事', "美国电视剧":"越狱"}
2
3 print(dic.items()) #dict_items([('意大利', '西西里的美丽传说'), ('意大利2', '天堂电影院'), ('美国', '美国往事'), ('美国电视剧', '越狱')])
4 for k ,v in dic.items():
5 print(k ,v)
6
7 #遍历字典最好的方案
8 for k, v in dic.items(): # 拿到的是元组(key, value) 这是解包操作
9 print(k,v) #直接拿到key和value

python学习3(转载)的更多相关文章

  1. python学习目录(转载)

    python基础篇 python 基础知识    python 初始python    python 字符编码    python 类型及变量    python 字符串详解 python 列表详解 ...

  2. 《Python学习手册》读书笔记【转载】

    转载:http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html 之前为了编写一个svm分词的程序而简单学了下Python,觉 ...

  3. 转载-《Python学习手册》读书笔记

    转载-<Python学习手册>读书笔记 http://www.cnblogs.com/wuyuegb2312/archive/2013/02/26/2910908.html

  4. Python学习资源汇总,转载自他人

    python3英文视频教程(全87集) http://pan.baidu.com/s/1dDnGBvV python从入门到精通视频(全60集)链接:http://pan.baidu.com/s/1e ...

  5. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  6. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  7. 《Python学习手册》读书笔记

    之前为了编写一个svm分词的程序而简单学了下Python,觉得Python很好用,想深入并系统学习一下,了解一些机制,因此开始阅读<Python学习手册(第三版)>.如果只是想快速入门,我 ...

  8. python学习笔记(五岁以下儿童)深深浅浅的副本复印件,文件和文件夹

    python学习笔记(五岁以下儿童) 深拷贝-浅拷贝 浅拷贝就是对引用的拷贝(仅仅拷贝父对象) 深拷贝就是对对象的资源拷贝 普通的复制,仅仅是添加了一个指向同一个地址空间的"标签" ...

  9. Python学习路线图

    文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 Python学习路线图你可以通过百度云盘下载观看对应的视频 链接: http://pan.baidu.com/s/1c2zLllA ...

  10. Python学习一:序列基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:moyi@moyib ...

随机推荐

  1. 用StringBuilder来实现经典的反转问题

    import java.util.Scanner; public class Practise03 { public static void main(String[] args) { //键盘录入一 ...

  2. 25-Fibonacci(矩阵快速幂)

    http://poj.org/problem?id=3070     Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  3. vmtools!HashTable_GetNumElements+0x5c17

    vmtools!HashTable_GetNumElements+0x5c17 vmtools 应该就是虚拟机和主机通信的问题. HashTable_GetNumElements好想也出错了.

  4. 图(最短路径算法————迪杰斯特拉算法和弗洛伊德算法).RP

    文转:http://blog.csdn.net/zxq2574043697/article/details/9451887 一: 最短路径算法 1. 迪杰斯特拉算法 2. 弗洛伊德算法 二: 1. 迪 ...

  5. 【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)

    Fragment实现Tab 首先把activity_main.xml 文件中的ViewPager标签改成Fragment标签 <FrameLayout android:id="@+id ...

  6. ASP.NET常用数据绑定控件优劣总结

    本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已 ...

  7. b,u,i,s,这些被删除的标签以及用来替换他们的标签

    加粗文字 给文字加下划线 倾斜文字 给文字加删除线 这些是以前的HTML语言修饰文字用的,没有语义,所以被删除,不到万不得已 不能使用,HTML给了新的标签替换他们,并且有语义 定义重要性强调的文字 ...

  8. Leveling Ground(数论,三分法,堆)

    Leveling Ground(数论,三分法,堆) 给定n个数和a,b每次可以选择一段区间+a,-a,+b或-b,问最少操作几次能把他们都变成0.n<=1e5. 首先差分一下序列,问题就会变成了 ...

  9. Python列表删除的三种方法

    1.使用del语句删除元素 >>> i1 = ["a",'b','c','d'] >>> del i1[0] >>> prin ...

  10. 主要介绍JavaEE中Maven Web 项目的结构及其它几个小问题

    先说下本篇随笔的目录. 1.介绍windows中环境变量Path与ClassPath的区别. 2.可能导致命令行运行javac编译成功,但 java命令 + 所要执行的类的类名 无效的原因. 3.介绍 ...