列表

lst = [i for i in range(10)]

切片

# 把下标小于2的显示出来
print(lst[:2])
# 把10个数有大到小输出
print(lst[::-1])
# 把下标为奇数的数字显示出来
print(lst[::2])

显示结果

[0, 1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
[0, 2, 4, 6, 8]

当切片时,会生成新的内存来存储切之后的列表。

l1 = lst
l2 = lst[::]
print(id(lst)) #
print(id(l1)) #
print(id(l2)) #

列表生成器  —— 一个使你代码牛逼的利器

# 显示能被2整除的数字
l3 = [i for i in lst if i % 2 == 0] # 注意第一个i、第二个i和第3个i要相对应

嵌套列表

# 嵌套列表
lst = [1, [2, 3]]
for i in lst:
print(i)
# 显示结果
#
# [2, 3]
for i in range(1, 4):
for j in range(5, 7):
print(i + j, end=" ")
print()

显示结果

6 7
7 8
8 9

append追加

a = [2, 3, 5]
a.append(100)
print(a)

[2, 3, 5, 100]

a.pop()
print(a)

[2, 3, 5]

b = [2, 4]
a.extend(b)
print(a)

[2, 3, 5, 2, 4]

浅拷贝

列表在存储嵌套列表时,l1 = [1, [2, 5, 6], 9]

[2, 5, 6]在l1的存储形式为[2, 5, 6]的指针

在浅拷贝时,拷贝的只是列表的连接

拷贝之后会形成新的地址

lst2 = lst.copy()
print(id(lst))
print(id(lst2))
#
#
lst2[0] = 10
print(lst)
print(lst2)

[1, [2, 5, 6], 9]
[10, [2, 5, 6], 9]

可以看到,lst2的第一个元素变成了10,而lst却没有改变

lst2[1][0] = 100

print(lst)
print(lst2)

[1, [100, 5, 6], 9]
[10, [100, 5, 6], 9]

而此时lst2的第二个元素的第一个元素会变,但lst的元素也变了。

元组

tuple, 我个人认为元组就是一个简化了的列表,也许tuple有自己的功能,但我还是觉得,元组是为了节省空间而存在的。

创建一个空元组

t1 = ()
print(type(t1))

成员检测

t2 = (1, 2, 3)
print(1 in t2)
print(4 in t2)

但我为啥会说是简化的列表呢?

tuple与list的不同

list可以增删改

而tuple不可以,tuple

t2 = (1, 2, 3)
t2.pop()
print(t2)

当我把最后一个元素删除时,你会发现Python的解释器会报错,说明了元组不能自身实现增删改的操作。

字典

字典的创建和集合差不多,都用大括号,但字典使用的是键值对

创建一个字典:

d1 = {'one': 1, 'two': 2}
print(d1)

显示结果为:{'two': 2, 'one': 1}

成员检测:

检测的是key键

print('one' in d1)
print(1 in d1)

显示结果:

True
False

在存储是,字典会按照key进行哈希存储,所以只能检测key是否存在

字典的循环

for i in d1:
print(i)
# two
# one for k in d1.keys():
print(k)
# one
# two for v in d1.values():
print(v)
#
# for k, v in d1.items():
print(k , '-----' , v)
# one ----- 1
# two ----- 2

我们在取字典值的时候,可以使用get。

print(d1.get('one'))
print(d1.get('three'))

显示结果

1

None

没有此键时,显示结果为None,而不会报错,而用d1['three']时,会报错。

集合

创建一个集合

s1 = {2, 3, 2, 4, 3, 2, 8}
print(s1)

结果为:{8, 2, 3, 4}

说明了集合的一个作用是:去重,一个集合看起来基本上是无序的。

集合增加元素:

s1.add(1)
print(s1)

集合删除元素:

如果能记住,建议用discard。当集合中没有此元素时,不会报错。

s1.discard(1)  # 把集合中的1删除
print(s1)
s1.discard(1) # 集合中已经没有1 但没有报错
print(s1)

也可以使用remove,但没有此元素时,会报错

集合适用于减法:

s3 = {2, 3, 4}
s4 = {4, 5}
print(s3 - s4)

显示结果为:{2, 3}

会把s3集合中的与s4相同的元素删除

python 列表 元组 字典 集合的更多相关文章

  1. python3笔记十八:python列表元组字典集合文件操作

    一:学习内容 列表元组字典集合文件操作 二:列表元组字典集合文件操作 代码: import pickle  #数据持久性模块 #封装的方法def OptionData(data,path):    # ...

  2. Python 列表&元组&字典&集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  3. Python列表,元组,字典,集合详细操作

    菜鸟学Python第五天 数据类型常用操作及内置方法 列表(list) ======================================基本使用====================== ...

  4. python中列表 元组 字典 集合的区别

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计 ...

  5. **python中列表 元组 字典 集合

    列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. 1.列表 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔. 列表的特 ...

  6. python_列表——元组——字典——集合

    列表——元组——字典——集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  7. python的学习笔记01_4基础数据类型列表 元组 字典 集合 其他其他(for,enumerate,range)

    列表 定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素 特性: 1.可存放多个值 2.可修改指定索引位置对应的值,可变 3.按照从左到右的顺序定义列表元素,下标从0开始顺序访问 ...

  8. python 中列表 元组 字典 集合的区别

    先看图片解释 (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复 ...

  9. Python列表,元组,字典,字符串方法笔记

    01. 列表 1.1 列表的定义 List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组 专门用于存储 一串 信息 列表用 [] 定义,数据 之间使用 , 分隔 列 ...

随机推荐

  1. Skyline 7 版本TerraExplorer Pro二次开发快速入门

    年底了,给大家整理了一下Skyline 7版本的二次开发学习初级入门教程,献给那些喜欢学习的年轻朋友. 我这整理的是Web控件版本的开发示例,里面页面代码保存成html,都可以直接运行的. 测试使用的 ...

  2. left join inner join 区别

    left 以左表为准,左表在右表没有对应的记录,也为显示(右表字段填空). inner 需要满足两张表都有记录. 不管哪种join 一对多最终的结局 只会是多条记录

  3. DIY 空气质量检测表

    DIY 空气质量检测表 前几天逛淘宝看到有空气颗粒物浓度测量的传感器,直接是 3.3V TTL 电压串口输出的,也不贵,也就 100 多一点.觉得挺好就买了个,这两天自己捣鼓了个小程序,搞了个软件界面 ...

  4. appium框架之bootstrap

    (闲来无事,做做测试..)最近弄了弄appium,感觉挺有意思,就深入研究了下. 看小弟这篇文章之前,先了解一下appium的架构,对你理解有好处,推荐下面这篇文章:testerhome appium ...

  5. 工具(3): 转换Excel表格到MarkDown:exceltk

    源码和下载: 0.1.3 mac: https://github.com/fanfeilong/exceltk/blob/master/pub/exceltk.0.1.3.pkg windows: h ...

  6. centos7之rsync+serrsync

    Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别 1.Rsync+Inotify-tools(1):Inotify-tools只能记录下被监听的目录发生了变化(包 ...

  7. 【转】Spark实现行列转换pivot和unpivot

    背景 做过数据清洗ETL工作的都知道,行列转换是一个常见的数据整理需求.在不同的编程语言中有不同的实现方法,比如SQL中使用case+group,或者Power BI的M语言中用拖放组件实现.今天正好 ...

  8. 关于mysql主从架构master宕机后,请求转移问题解决办法

    mysql架构:一主一从 问题一:有两台mysql数据库,已做好主从.如果运行某一天master服务器mysql故障导致前端请求无法处理怎么办? 答:将前端需要数据库处理的请求转移到slave机上. ...

  9. 洛谷P1608路径统计

    题目 这个提示一个简单的最短路计数,除了用数组存上最短路的个数的做法以外,还有可以在得出最短路之后,搜索加剪枝的方法来通过该题. 可以反向搜索用A*的方法来通过,但是这个题的去重十分的恶心,需要一些玄 ...

  10. 【转】Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。

    @2019-02-28 [小记] Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印.