Python学习笔记——数据类型list、tuple、dict、set-程序员宅基地

技术标签: Python  

内容整理于廖雪峰官网和菜鸟教程

list可变用[] , tuple不可变用()
dict={} set()均不可放入可变元素

list和tuple
list
  • 定义
    listA=[‘AAA’,‘bbb’,‘ccc’]
    list的元素可以是另一个list
    listB=[‘ddd’,listA]
    listC=[‘ddd’,[‘eee’,‘fff’]]
    len(listC)=2 len计算元素数
    list的元素可以是不同类型
    listD=[‘ggg’,123,Ture]
  • 索引
    索引从0开始,越界报错
    listA[0]=‘AAA’
    listA[1]='bbb’正数第一个
    listA[-1]='ccc’倒数第一个
    可以作为二维数组来索引
    listC=[‘ddd’,[‘eee’,‘fff’]]
    listC[1][0]=‘eee’
  • append将元素插入末尾
    listA.append(‘123’)
    append将list类型元素插入list时,插入list作为一个元素
>>>istA=['AAA','bbb','ccc']
>>>e=['abc','def'] 
>>>listA.append(e) 
>>>listA
listA=['AAA','bbb',['abc','def']]
  • extend批量增加,多个元素需要作为list类型的参数引用
    listA.extend(‘abc’)——listA=[‘AAA’,‘bbb’,‘ccc’,‘a’,‘b’,‘c’]
    extend将list类型插入list时,list中的元素被拆开
>>>istA=['AAA','bbb','ccc']
>>>e=['abc','def'] 
>>>listA.extend(e) 
>>>listA
listA=['AAA','bbb','ccc','abc','def']
  • pop删除最后一个元素
    listA.pop()
    listA.pop(i) #i是索引位置
  • remove删除指定元素
    listA.remove(‘AAA’)
  • insert在指定位置插入
    list名称.insert(位置索引,元素)
    listA.insert(1,‘ggg’)
  • 元素赋值
    listA[0]=‘hahaha’
tuple
  • 定义
    一旦初始化就不能更改的有序列表,指向不变,但如果指向list,list内的元素可以变
    tupleA=(‘aaa’,‘bbb’,‘ccc’)
    只有一个元素的tuple需要加,tupleB=(1,)
    可以定义空tuple,tupleC=()
  • 删除
    tuple不允许删除元素值,可以用del tupleA删除整个tuple
  • 操作
    可以进行索引、切片、迭代、 + + +连接、*复制
  • 函数
    cmp(tuple1,tuple2) python3没有cmp函数,需要引入operator模块
    len(tuple)
    max(tuple)
    min(tuple)
    tuple(seq)将list生成tuple
dict和set

dict={} set()均不可放入可变元素

dict
  • 描述
    字典,其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度

和list比较,dict使用hash算法,有以下几个特点:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。而list相反:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。

  • 定义
    d = {key1 : value1, key2 : value2 }
>>> d = {
    'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
  • 插入key-value
    d[‘Adam’] = 67
    value可以是任何数据类型,但key必须是不可变的。每个key的value是唯一的,对一个key多次放入value,只保留最后一个

  • 删除
    d.pop(‘Michael’),删除key对应value也删除
    del d,删除整个dict

  • 判断key存在

  1. in判断
    ‘Bob’ in d
  2. get() 判断,不存在则返回None(Python交互不显示)(括号内无第二参数)或者第二参数的指定值
    d.get(‘Michael’)
    d.get(‘Wayne’,-1)
set

一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key

  • 定义
    创建set需要以list作为输入集合,输入list中的重复元素将自动被过滤,可以使用{}或者set()函数创建集合。 创建空集必须set(),{}会创建一个新字典。
s1=set('apple')
print(s1)
s2=set(('apple'))
print(s2)
s3=set(('apple',))#采取这种方式创建单一元素集合
print(s3)
{
    'p', 'a', 'l', 'e'}
{
    'p', 'a', 'l', 'e'}
{
    'apple'}
  • 判断元素是否存在
    x in s 存在返回True不存在返回False
  • 添加
    s.add(4)
    s.update(x) 参数可以是list\dict\tuple
  • 删除
    s.remove() 没有该元素则报错
    s.discard() 元素不存在也不会报错
    s.pop() 脚本模式随机删除,交互模式删除排序后集合第一个元素
  • 清空set
    s.clear()
  • 交集、并集
    set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集s1&s2、并集s1 | s2 等操作
>>> a = set('abracadabra') 
>>> b = set('alacazam')
>>> a {
    'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素 
{
    'r', 'd', 'b'} 
>>> a | b # 集合a或b中包含的所有元素 
{
    'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} 
>>> a & b # 集合a和b中都包含了的元素 
{
    'a', 'c'} 
>>> a ^ b # 不同时包含于a和b的元素 
{
    'r', 'd', 'b', 'm', 'z', 'l'}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/violette_lx/article/details/102585187

智能推荐

C语言数据结构——求二叉树叶子结点个数_求叶子结点的个数代码-程序员宅基地

小编存储了不少代码,最近新开通了程序员宅基地,以前一直看到别人的代码分享,深受启发,非常感谢,所以小编现在也要将自己的代码分享给大家,希望大家可以与潇小白一起在编程的道路上越走越远,早日成为大佬!虽然我目前只是一名大二的学生,不过我会努力哒!加油!本次分享的用C语言求二叉树叶子节点的个数,由于代码比较简单,潇小白本次就设置了一个C文件,不是以前的工程文件,小伙伴们运行时要注意哦!代码如下:..._求叶子结点的个数代码

针对类似IDEA,pycharm,Webstorm,等编译器破解-程序员宅基地

在码农的世界里用最新版本的编译器爽到爆,总会看到有人在用几年前的编译器:在网上百度搜索的一串网址什么的,有时会好使,但是有时前一秒可以用,后一起就过期了。什么改系统时间来破解我也不会。下面请注意。 先说webstorm激活方式:Webstorm激活方法百度IntelliJ IDEA 注册码点击进入破解补丁无需使用注册码,下载地址:http://idea.lanyus...

Socket网络编程【获取本机IP】-程序员宅基地

///////////运行环境VS2013//获取本地IP #include #include #pragma comment(lib,"ws2_32.lib")void main(){// 调用WSAStarup初始化WINsock库WSADATA wsaData;::WSAStartup(MAKEWORD(2,2),&wsaData);

Godot Engine:碰撞和碰撞检测的简单实例(RigidBody2D与Area2D碰撞)_godot 不用碰撞体实现碰撞检测-程序员宅基地

按照下图场景树所示构造一个场景:节点的名称即为节点类型红色方框分别对应着每个CollisionShape2D中Shape(都是RectangleShape2D)的范围注意:为了避免不必要的性能消耗,RigidBody以及RigidBody2D默认是不开启碰撞检测的,所以需要碰撞检测的话必须做两件事:将Contact Monitor设为true(开启碰撞检测)将Contact R..._godot 不用碰撞体实现碰撞检测

VScode快速移动光标到行尾和行首_vscode跳到行首-程序员宅基地

VScode快速移动光标到行尾和行首使用Home键和End键_vscode跳到行首

js 年月日中文格式日期转换成Date_js 年月日转date-程序员宅基地

new Date(Date.parse(bengDate.replace('年','-').replace('月','-').replace('日','')))_js 年月日转date

随便推点

测试磁盘IO性能_测试io-程序员宅基地

有两个常用命令来测试磁盘IO性能:dd和fiodd命令测试磁盘io性能1. 测试磁盘写能力dd if=/dev/zero of=/test1.img bs=100M count=1 oflag=dsync status=progressif=文件名:输入文件名of=文件名:输出文件名因为/dev/zero是一个伪设备(只产生空字符流),对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。bs表示读块和写块的大小都为100Mo_测试io

Spring Security页面端标签控制权限-程序员宅基地

步骤:1.pom.xml中导入依赖:<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-taglibs</artifactId> <version>${spring...

共轭方向法和共轭梯度法-程序员宅基地

共轭方向法是介于最速下降法和Newton法之间的一种方法。克服了最速下降法的锯齿现象,从而提高了收敛速度;同时,共轭方向法的迭代公式比较简单,不必求目标函数的Hesse矩阵,比Newton法减少了计算量和存储量。是一种比较实用而且有效的方法。_共轭方向法

26.蓝桥杯之Playfair密码_playfair 蓝桥杯-程序员宅基地

一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下:1.首先按行填入密钥串。2.紧接其后,按字母序按行填入不在密钥串中的字母。3.由于方阵中只有25个位置,最后剩下的那个字母则不需变换。如果密钥为youandme,则该方阵如下:y o u a nd m e b ..._playfair 蓝桥杯

OpenFOAM无反射边界条件源码学习-程序员宅基地

求解流声分解法的shen方程时,需要对变量的边界作无反射处理。OpenFOAM提供的无反射边界条件有advective和waveTransmissive这两种,但这两种似乎都不能满足笔者的需要,可能要进行某些修改。在这之前,先来学习一下这两种无反射边界条件的代码以及它俩的区别,这对自己的运用起到帮助。这里会参考日本博主的博文。他用的是英文,而且只起了个开头,后面重要的没写(等他好久了都没补上)。我写点中国人看得懂的,顺便把后面的内容也补上。无反射边界条件基于有限体积法,OpenFOAM的边界条件就是_openfoam无反射边界

百度网盘破解版,满速下载不限速【转载,亲测有效】-程序员宅基地

百度网盘限速问题一直都存在,这也就让我们一直想要找个不限速的破解版网盘,或者是登录就是vip的百度网盘,这次找的这款网盘可以说下载速度爆满,而且功能也很牛,具体的就自个尝试吧。【免登录下载】无需登录,打开百度网盘分享链接直接下载。【多账号管理】对于资源党一族来说,百度网盘空间再大也不够用,多备几个账号,但是登录切换非常麻烦,多账号登录彻底解决这个问题,理论上支持无限账号同时登录。【...