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

智能推荐

vue获取时间并格式化_Vue 获取当前时间并格式化-程序员宅基地

Vue 获取当前时间并格式化现在的代码,一家原创,万家抄袭,嗯,我也是...直接就是大代码一顿狂粘!!啪啪啪!用去吧!/*** 获取当前时间* 格式YYYY-MM-DD*/Vue.prototype.getNowFormatDate = function() {var date = new Date();var seperator1 = "-";var year = date.getFullYea...

0-1由码畜向大牛进阶之路_码畜的晋升之路-程序员宅基地

01 经历&感受生活中我们总有时候总感觉自己一直迷茫浑浑噩噩的过着日子。生活单调乏味,如同最近的一个词-工具人,当然我们都是工具人。我们大多数人除了上班,下班,吃饭睡觉,偶尔期盼假期但假期来了也不知道要做什么才是真正有意义、有意思。偶有夜深人静时,回想数年前读书的时候向往限制这样的生活,觉得自由自在,可是现在又无限怀念读书甚至儿童时的无忧无虑。对于现状,工作时心情好忙碌的时候觉得充..._码畜的晋升之路

opencv绘制椭圆_opencv 画椭圆-程序员宅基地

在Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数。下面一段示例程序就是用该函数在黑色背景下,绘制一个圆心在(260,240)、长轴170、短轴130、线宽为3的白色椭圆。import cv2import numpy as npimg=np.zeros((512,512..._opencv 画椭圆

sqoop报错 java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: covidchina_sqoop数据迁移报错java.lang.exception: java.io.ioexceptio-程序员宅基地

项目场景:从hdfs导入数据到mysql问题描述:java.lang.Exception: java.io.IOException: java.lang.ClassNotFoundException: covidchina at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:492) at org.apache.hadoop.mapred.LocalJobRunner$Job.run(Loc_sqoop数据迁移报错java.lang.exception: java.io.ioexception: unable to lookup

Direct3D 11 Tutorial 7:Texture Mapping and Constant Buffers_Direct3D 11 教程7:纹理映射和常量缓冲区...-程序员宅基地

概述在上一个教程中,我们为项目引入了照明。 现在我们将通过向我们的立方体添加纹理来构建它。 此外,我们将介绍常量缓冲区的概念,并解释如何使用缓冲区通过最小化带宽使用来加速处理。本教程的目的是修改中心立方体以将纹理映射到其上。资源目录(SDK root)\Samples\C++\Direct3D11\Tutorials\Tutorial07Github纹...

程序员必备:几个国外IT网站_关于 it类英文文章的网站-程序员宅基地

【IT168 应用】最近有些读者给我来信说很喜欢这个网站上的文章,并且也想通过翻译学习英文,他们询问我这些文章的英文原文是从哪里找到的?  外刊IT评论上的翻译的英文来源很杂,我总结了一下,大概有几个 集中的出处,下面列举出来供大家学习参考:  1.TheServerSide  这是一个老牌的IT信息网站,从名称上你就能看出,它是关注服务器端编程的,以Java和Java周边_关于 it类英文文章的网站

随便推点

java osg_osg:多方位观察牛~_孙煜征的博客-程序员宅基地

透视投影与正视投影图:正视投影正上方观察牛的代码:#include #include#includeosg::Camera* createBirdsEye( const osg::BoundingSphere&bs ){osg::ref_ptr camera = newosg::Camera;camera->setClearMask( GL_COLOR_BUFFER_BIT |GL_..._java调用osg

jquery ajax 返回json java,Jquery Ajax实现无刷新登陆时返回json数据格式需要修改package name=login& extends=json-default...-程序员宅基地

Jquery Ajax实现无刷新登陆时返回json数据格式需要修改package name=login& extends=json-default2012/2/29 9:21:10 wxb880114 程序员俱乐部 我要评论(0)摘要:解决方案:JqueryAjax实现无刷新登陆时返回json数据格式需要修改严重:Exceptionstartingfilterstruts2Unabl...

java 人力资源软件_基于-JAVA人力资源管理系统.doc-程序员宅基地

...毕业设计(论文)课 题 名 称 人力资源管理系统的设计与实现学 生 姓 名 万友利学 号 1041302041系、年级专业 信息工程系、10级计算机科学与技术指 导 教 师 柳 小 文职 称 讲 师2014年05月10日..摘 要随着计算机的普及与计算机科..._人力资源系统java

006-寻找最大值和最小值-分治法-《算法设计技巧与分析》M.H.A学习笔记-程序员宅基地

在一个含n个元素的数组中寻找最大值和最小值。采用分治法可能仅用3n/2-2次比较在数组中找到最大值和最小值。

android listview 数据混乱,求解,listView里面嵌套listView数据显示混乱-程序员宅基地

我弄了个listView嵌套listView从服务器上获取数据最后显示出来,子项listView把所有orderproduct里的数据都显示出来了,Json格式大致是这样{"code":"1","result":[{"id":"10259","createdate":"2014-06-3021:23","amount":"95.00","score":"0","paytype":...

厉害了!信通院云大所诞生了!_信通院云大所面试-程序员宅基地

点击上方蓝字关注大事件!大事件!懂小姐见证了一个重要的历史时刻!迫不及待和大家分享“云大所”成立了!有童鞋问我,和云南有什么关系吗?作为一个IT屌丝这样的问题太不专业了!如果你的第一反应不是云计算和大数据那么以后需要多读懂小姐的文章了!信息通信行业权威智库中国信息通信研究院正式成立云计算与大数据研究所中国信息通信研究院院长刘多中国信息通信研究院党委书记李勇为云大所揭牌云大所是啥东东?云大所是个厉害_信通院云大所面试

推荐文章

热门文章

相关标签