python的可变list和不可变tuple, dict和set
list和tuple
在python中分为可变表和不可变表:
类型 | 名称 | 表示方法 |
---|---|---|
可变 | list | [] |
不可变 | tuple | () |
list
- list是可变表,list内部索引从0开始,正整数是正序的索引,负整数是 反向索引,例如list[-1]和list[-2]分别表示最后一个和倒数第二个元素
- list索引越界会报错“list index out of range”
- list支持二维和多维,元素可以是list或tuple
- list的方法
序号 | 方法 | 作用 |
---|---|---|
1 | append() | 末尾追加 |
2 | insert(index, context) | 指定位置插入 |
3 | pop(index) | 删除指定位置元素,如果index为空表示删除末尾元素 |
4 | list[i] = context | 替换指定位置的元素内容 |
l1 = [1, 2, 'a']
print(l1)
l1.append('b')
print(l1)
l1.pop()
print(l1)
l1.insert(1, 'c')
tuple
tuple是有序表,也就是内容是不可变的,编程中尽量以tuple代替list
- 定义一个空的tuple是直接复制空:
t = ();
- 定义只有一个元素的tuple不能将1写入括号中,要用逗号区分:
t = (1,);
注意如果tuple中间包含的是list,那么改变list的内容是合法的
dict
*dict也就是dictionary,是python中的map,底层也是hash算法来实现。采用空间换时间
d = {'name1':'zhangsang', 1:100}
print(d['name1'])
print(d[1])
if 'name1' in d:
print(d['name1'])
print('Reset name1:lisi')
d['name1'] = 'lisi'
print(d['name1'])
print('get name1 from d:')
d.get('name1')
print('pop name1')
d.pop('name1')
print(d)
#d.get('name1', -1)
#print(d['name1'])
从代码中可以看出来:
- dict以key和value配对出现
- dict的key是否存在可以用in来判断,或者使用get方法。并且get方法如果没有默认返回None或是自己指定的值
- dict使用pop来移除元素
- dict的key的选取要使用不可变元素:整数和字符串等
set
set也是不可变的,其中只存放key
s = set([1, 2, 3])
print('s is a set:', s)
print('add 1 twice:')
s.add(1)
s.add(1)
print('new s is a set:', s)
s1 = set(['a', 'b'])
print(s1)
print('s | s1')
print(s | s1)
print('remove "'"a"'" from s1')
s1.remove('a')
print(s1)
从代码中看:
- 赋值的方法要注意有set关键字
- list是set的输入集合
- set不支持重复元素
- set可以使用交集和并集来处理元素
python的可变list和不可变tuple, dict和set的更多相关文章
- 六、python沉淀之路--int str list tuple dict 重点总结
一.数字int(..)二.字符串replace/find/join/strip/startswith/split/upper/lower/formattempalte = "i am {na ...
- Python(可变/不可变类型,list,tuple,dict,set)
补充:(可用操作技巧) >>> x=900 >>> y=900 >>> x==y True >>> type(x) is typ ...
- Python基础(list和tuple)可变集合和‘不可变’集合
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ...
- 【Python】可变对象和不可变对象
Python在heap中分配的对象分成两类:可变对象和不可变对象.所谓可变对象是指,对象的内容是可变的,例如list.而不可变的对象则相反,表示其内容不可变. 不可变对象:int,string,flo ...
- Python 可变对象和不可变对象
具体可以看这里:http://thomaschen2011.iteye.com/blog/1441254 不可变对象:int,string,float,tuple 可变对象 :list,dicti ...
- Python中的可变对象和不可变对象
Python中的可变对象和不可变对象 什么是可变/不可变对象 不可变对象,该对象所指向的内存中的值不能被改变.当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一 ...
- python,可变对象,不可变对象,深拷贝,浅拷贝。
学习整理,若有问题,欢迎指正. python 可变对象,不可变对象 可变对象 该对象所指定的内存地址上面的值可以被改变,变量被改变后,其所指向的内存地址上面的值,直接被改变,没有发生复制行为,也没有发 ...
- python 中的可变对象与不可变对象
近日辞职待工,没有实际的项目与大家分享.暂写写在实际运用python中遇到的关于可变对象和不可变对象的坑. 首先我们需要明确一个概念,在python中一且皆对象.我们一般定义一个变量a=0,其实质a是 ...
- Python入门之python可变对象与不可变对象
本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...
随机推荐
- loadrunner 函数解释
一.lr_save_string 使用介绍1.该函数主要是将程序中的常量或变量保存为lr中的参数.格式: //将常量保存为参数lr_save_string("777"," ...
- 【数据库】Eclipse连接MySQL数据库
我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/detail/paulwin ...
- 这些 .Net and Core 相关的开源项目,你都知道吗?(持续更新中...)
最近更新时间2017-12-28 序列化 Json.NET http://json.codeplex.com/Json.Net是一个读写Json效率比较高的.Net框架.Json.Net 使得在.Ne ...
- Redis高速内存缓冲平台可视化监控之RedisLive配置实战
一.引用 这两天在弄Reids高速缓存平台的图形化监控,由于对于Python并不是很熟悉,安装过程中遇到了不少问题,包括: 1.python必备安装包的安装问题 2.Redis Live界面显示问题 ...
- 为MyEclipse配置Spring的约束
1.Spring框架概述 Spring是一个Service层的框架,可以整合许多其它框架进行工作 Spring的主要技术是 IOC(DI) AOP IOC - 控制反转(依赖注入) AOP - 免息那 ...
- ASP.NET Web Pages:文件夹
ylbtech-.Net-ASP.NET Web Pages:文件夹 1.返回顶部 1. ASP.NET Web Pages - 文件夹 本章介绍有关文件夹和文件夹路径的知识. 在本章中,您将学到: ...
- Python 标准库 ConfigParser 模块 的使用
Python 标准库 ConfigParser 模块 的使用 demo #!/usr/bin/env python # coding=utf-8 import ConfigParser import ...
- 数据读取速度达1.5G/s,UFS 2.1存储技术曝光
目前最快的是苹果NVME,当然UFS2.1也不差 iPhone6s与iPhone6s Plus在硬件的规格上有了很大的提升,但是它们身上的变化远没有苹果在发布会上所提到的A9处理器.1200万摄像头以 ...
- php文件下载(解决文件下载后多几个字节的问题) 与封装成类的例子
php文件下载比较常见,网上的资料比较多,在此不再强调怎么去实现(因为也是网上看的).下面主要说明的是下载代码的注意点. php下载文件主要是把文件以字节流直接输出,也就是echo fread($fi ...
- vmware 共享文件夹(win10下的vmware安装了centos7)
最近研究下了docker.我的笔记本是win10系统,就尝试使用了 win10的hyper-v虚拟化技术,总是感觉占用系统较多,于是换成了vmware,在虚拟机中安装 docker容器服务. 考虑到开 ...