Python入门(三)——list和tuple,条件判断和循环,dict和set

原创 2017年12月08日 00:00:00

作者:刘某人程序员

博客:/qq_26787115

声明:未经原作者允许请勿转载

好的,我们继续来学习python,这次我们讲容器,也就是list,我们可以这样表示


640?wx_fmt=png&wxfrom=5&wx_lazy=1

一.list

640?wx_fmt=png&wxfrom=5&wx_lazy=1


这样我们可以看下输出的内容

640?wx_fmt=png&wxfrom=5&wx_lazy=1

我们可以看到打印的内容,以及他的长度是3,也就是有三个子集,python中的list和java中的数组回去内容是一样的,但是他可以索引,以及可以随时的增加或者删除,我么可以看下

640?wx_fmt=png&wxfrom=5&wx_lazy=1


从这个的表现手法,我们可以看出,list也是从0开始的,那这个下标3应该是不存在的,如果在Java中会报数组越界,那python尼?我们来看下

0?wx_fmt=png


从输出的结果可以看出,他报了一个IndexError的错误,类似于数组越界


在python中,如果你想获取最后一个元素,你有两种办法,我们来看下

0?wx_fmt=png


我们可以长度-1,或者直接-1都是可以的,而且我们上面说过,list是可以增加,删除的,那我们来看下

0?wx_fmt=png


这就是增加的操作,我们输出

0?wx_fmt=png


可以看出,我们每一次增加默认都会在末尾,当然,他是一个灵活的容器,我们完全可以利用索引来插入

0?wx_fmt=png


这句话的意思是我将这个元素插入在1的位置,索引输出的内容

0?wx_fmt=png

既然如此,那我们还有删除,删除我们还是直接来看一段代码

0?wx_fmt=png

从这段代码我们可以看出,删除最后一个可以直接调用函数pop,如果需要指定删除就添加索引就好了,这个还是比较好理解的


如果你想替换某一个元素,那就直接赋值就好了

0?wx_fmt=png

这样第一个元素就替换了


这些和Java好像没什么不同。我们来看下不同,在python中,list可以可以放不同的数据类型哦,比如:

0?wx_fmt=png


可以发现,很神奇,因为里面可以包含很多的元素,连list都可以包含,如果你想去取list里面的list,我们可以这样那

0?wx_fmt=png

这样就能拿到李四了


0?wx_fmt=png

二.tuple

tuple和list很相似,但是他一旦确定了元素之后就不能变化了。所有这个才跟Java的数组很像才对。他也没有什么增加,删除的函数,因为他不变,所以安全性高


tuple的陷阱:当你定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,比如:

0?wx_fmt=png


如果你想定义一个空的tuple,那么只要这样

0?wx_fmt=png


而且我们可以定义tuple的元素

0?wx_fmt=png

这里加个逗号是为了区分元素和长度,如果去掉这个逗号,我们会表示这是一个元素,这个元素是5


如果想让他可变的话,只要他的元素是list就好了

0?wx_fmt=png

其实他还是不变的,只是list变了而已


0?wx_fmt=png

三.条件判断

条件判断,我们先来看下if语句

0?wx_fmt=png


好的,这段代码很简单,输出未成年人,但是如果现在有多个判断条件尼?

0?wx_fmt=png


我们也是可以的,他的原则是

0?wx_fmt=png


0?wx_fmt=png

四.循环

Python的循环有两种,一种是for…in循环,依次把list或tuple中的每个元素迭代出来,看例子:

0?wx_fmt=png

这样就可以全部遍历出来了


所以for x in …循环就是把每个元素代入变量x,然后执行缩进块的语句。


再比如我们想计算1-10的整数之和,可以用一个sum变量做累加:

0?wx_fmt=png

这样我们就可以输出总和55了


如果要计算1-100的整数之和,从1写到100有点困难,幸好Python提供一个range()函数,可以生成一个整数序列,比如range(5)生成的序列是从0开始小于5的整数,也就是0-4,那我们现在算100的话,应该是range(101)

0?wx_fmt=png

这样我们就可以输出总和为5050


第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

0?wx_fmt=png

这样就可以算出为2500


而一般的计算题都会结合输入来做一些处理的,比如

0?wx_fmt=png


你们猜猜我输入1995会输出什么 

0?wx_fmt=png

是不是很奇怪,为什么会是输出00后,1995小于2000应该是输出你不是老司机呀


我们先来查下原因,我们加个打印

0?wx_fmt=png


再来看下输出

0?wx_fmt=png

你会发现他返回True,这是为什么尼?其实仔细想想,这个1995他其实是个字符串,因为我们raw_inpt输入的都是字符串,如果想整数计算,我们需要强转一下,比如这样

0?wx_fmt=png

这样就搞定了


0?wx_fmt=png

五.dict

dict是词典的意思,但是在其他语言中,一般是map,因为是以键值对的形式成立的,我们来看下他的写法,用学生和分数来做:

0?wx_fmt=png

键值对是以大括号的形式,如果想索引,就需要用他的key


当然,dict也是可以更改的,比如

0?wx_fmt=png

这样,我们看输出

0?wx_fmt=png

你没有看错,李四的分数改了,如果不存在key ,那么会报错的KeyError,为了避免,我们可以用in去判断是否存在这个key

0?wx_fmt=png

他返回的就是一个布尔值


dict还提供了get方法供我们查询

0?wx_fmt=png

要删除一个key,只需要调用pop(key)就好了


和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而增加;

  • 需要占用大量的内存,内存浪费多。


而list相反:

  • 查找和插入的时间随着元素的增加而增加;

  • 占用空间小,浪费内存很少。

所以,dict是用空间来换取时间的一种方法。


0?wx_fmt=png

六.set

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


要创建一个set,需要提供一个list作为输入集合:

0?wx_fmt=png

这里要注意一下,我们传入的是一个list,但是输出的,就不是一个list了,而是有1,2,3这三个元素


而且set有自动过滤的功能,我们来看下

0?wx_fmt=png


这里的输出很有意思

0?wx_fmt=png

可以看到,重复的元素都过滤掉了,也就是说set不允许有重复的key,set是支持增加和删除的

  • add(key)

  • remove(key)


set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作,这也就是他所做的事情

0?wx_fmt=png


set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。试试把list放入set,看看是否会报错。


最后来说一下一些小知识,比如list的排序

0?wx_fmt=png


来看下他们的输出就好了

0?wx_fmt=png

好了,python今天的基础就到这里了,可以发现我们把最基础的都差不多学会了,我们下一篇就开始了解函数了


0?wx_fmt=jpeg

一命二运三风水,四修阴德五读书!

0?wx_fmt=jpeg

刘桂林

微信号 : 钱柜娱乐开户_LiuGuiLin

新浪微博:@刘某人程序员



版权声明:本文为博主原创文章,未经博主允许不得转载。

Python入门(三)——list和tuple,条件判断和循环,dict和set

Python入门(三)——list和tuple,条件判断和循环,dict和set好的,我们继续来学习python,这次我们讲容器,也就是list,我们可以这样表示一.liststudent = ["z...
  • qq_26787115
  • qq_26787115
  • 2017年04月29日 15:22
  • 1298

列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 的基本方法

python 是个很方便的数据处理工具,搞搜索的很多都用此语言。优点是简单易用,功能强大。一个复杂的功能就只需要几行代码搞定。 快速开发,对性能稳定性要求不高,用它再合适不过了。 ...
  • new_abc
  • new_abc
  • 2015年08月29日 17:51
  • 1661

王亟亟的Python学习之路(四)-循环,条件,Range,list和tuple

转载请注明出处:王亟亟的大牛之路这是本次Python学习历程的第4篇,之前的文章:传送门这篇主要讲以下几个知识点 - 循环 - 条件语句 - range函数 - list - tuple循环...
  • ddwhan0123
  • ddwhan0123
  • 2015年11月02日 16:50
  • 2430

python中list,tuple,dict,set的区别及联系

我在python学习中遇到的一个与其他语言不太相同的一点就是list.tuple.dict.set这几个数据类型的区别及联系。昨天学了,为防忘记,今天就来现学现卖。 一、list         ...
  • wangty000
  • wangty000
  • 2017年03月09日 20:51
  • 249

自学python(03)list和tuple,条件判断和循环,dict和set

一.list student = ["zhangsan", "lisi", "wangwu"] print student print "长度为:",len(student) 123456 这样...
  • Christine_01
  • Christine_01
  • 2017年12月17日 21:12
  • 38

Python中内置数据类型list,tuple,dict,set的区别和用法

Python语言简洁明了,可以用较少的代码实现同样的功能。这其中Python的四个内置数据类型功不可没,他们即是list, tuple, dict, set。这里对他们进行一个简明的总结。 List...
  • Sparkle_007
  • Sparkle_007
  • 2017年02月05日 22:52
  • 225

python2.7学习笔记(4) ——条件判断、循环、dict、set

ifif : 语句 ------------- if : 语句 else: 语句 ------------- if : 语句 elif : 语句 elif : ...
  • bright42
  • bright42
  • 2015年08月15日 14:28
  • 549

python函数传递list,tuple和dict时的复制关系

一直对python函数中的参数关系
  • libaishen1991
  • libaishen1991
  • 2014年11月03日 20:11
  • 2124

python基础(输入—字符串—list—tuple—循环)

1、输入 >>> name = input() Michael>>> name 'Michael'name = input() print('hello,', name)name = input('p...
  • yeyang123
  • yeyang123
  • 2015年09月29日 13:29
  • 1543

Python 中list ,set,dict的大规模查找效率

很多时候我们可能要频繁的进行元素的find 或in操作,本人一直天真的以为python的list做了hash,通过红黑树来高效查找···直到今天我真正来测试它和set,dict的查找效率时,才发现自已...
  • jmh1996
  • jmh1996
  • 2017年11月08日 17:43
  • 286
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python入门(三)——list和tuple,条件判断和循环,dict和set
举报原因:
原因补充:

(最多只允许输入30个字)