zoukankan      html  css  js  c++  java
  • Python笔记220151023

    一、循环

    Python的循环有两种,一种是for...in循环,依次吧list或tuple中的每个元素迭代出来

    >>>names = ['Michael','Bob','Tracy']

    >>> for name in names:

        print(name)

    执行这段代码后,输出结果为:

    Michael

    Bob

    Tracy

    Python提供一个range()函数,可以生成一个整数序列,在通过list()函数可以转换为list:

    >>>list(range(5))

    [0,1,2,3,4]

    range(101)可以生成0-100的整数序列。

    第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环

    >>>sum = 0

    >>>n = 99

    >>>while n > 0:

        sum = sum + n

        n = n - 2

      print(sum)

    二、dict

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储。

    用Python写一个dict如下:

    >>>d = {'Michael':95,'Bob':75,'Tracy':85}

    >>>d['Michael']

    95

    把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

    >>>d['Adam'] = 67

    >>>d['Adam']

    67

    由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

    >>>d['Jack'] = 90

    >>>d['Jack']

    90

    >>>d['Jack'] = 88

    >>>d['Jack']

    88

    若key不存在,dict就会报错:

    要避免key不存在的错误,有两种办法,一种通过in判断key是否存在:

    >>>'Thomas' in d

    False

    二是通过dict提供的get方法,如果key不存在,可以返回None,或者自己指定的value:

    >>>d.get('Thomas')

    >>>d.get('Thomas',-1)

    -1

    注意:返回None的时候Python的交互式命令行不显示结果。

    要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

    >>>d.pop('Bob')

    75

    >>>d

    {'Michael':95,'Tracy':85}

    请务必注意:dict内部存放的顺序和key放入的顺序是没有关系的。

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

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

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

    而list相反:

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

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

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

    正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象。

    在Python中,字符串、整数等都是不可变的。

    >>> key = [1, 2, 3]
    >>> d[key] = 'a list'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list
    三、set
    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。
    要创建一个set,需要提供一个list作为输入集合:
    >>>s = set([1,2,3])
    >>>s
    {1,2,3}
    注意,传入的参数[1,2,3]是一个list,而显示的{1,2,3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。
    重复元素在set中自动被过滤:
    >>>s = set{[1,1,2,2,3,3]}
    >>>s
    {1,2,3}
    通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果:
    >>>s.add(4)
    >>>s
    {1,2,3,4}
    通过remove(key)方法可以删除元素:
    >>>s.remove(4)
    >>>s
    {1,2,3}
    set可以看出数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:
    >>>s1 = set([1,2,3])
    >>>s2 = set([2,3,4])
    >>>s1 & s2
    {2,3}
    >>>s1 | s2
    {1,2,3,4}
    set和dict的唯一区别仅在于没有存储对应的value,但是,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
    再议不可变对象
    对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,比如:
    >>> a = ['a','b','c']
    >>>a.sort()
    >>>a
    ['a','b','c']
    而对于不可变对象,比如str,对str进行操作:
    >>>a = 'abc'
    >>>a.replace('a','A')
    'Abc'
    >>>a
    'abc'
  • 相关阅读:
    nginx 服务器重启命令,关闭
    eclipse实现热部署和热启动
    Intellij IDEA 文件修改提示星号
    IntelliJ IDEA 自动编译功能无法使用,On 'update' action:选项里面没有update classes and resources这项
    idea最常使用的快捷键
    centos 切换用户显示bash-4.2$,不显示用户名路径的问题
    汉诺塔
    C语言笔记
    @org.springframework.beans.factory.annotation.Autowired(required=true)
    Error creating bean with name 'xxxx' defined in URL
  • 原文地址:https://www.cnblogs.com/diaosicai/p/4904360.html
Copyright © 2011-2022 走看看