zoukankan      html  css  js  c++  java
  • python基础

    List

    1.创建

    L = [1,True,'ad',''] //相当于数组,可以存储不同类型的元素

    2.访问(可以倒序访问,倒数第一为L[-1],以此类推)

    L[1] //1
    L[-1]	//''

    3.修改

    (1)增

    L.append('Yue')	//[1,True,'ad','','Yue'],将元素'Yue'添加到最后
    L.insert(0,3)	//[3,1,True,'ad',''],将元素3查到下标0之前

    (2)删

    L.pop()	//返回'',删除并返回最后一个元素
    L.pop(index)	//删除下标为index的元素并返回

    (3)改

    L[1] = 666	//[1,666,'ad',''],直接覆盖对应下标的值 

    4.特点
    (1)占用内存小,但是查找速度慢
    (2)查找速度随着元素增加而逐渐下降

    tuple

    1.创建

    t = ('Adam', 'Lisa', 'Bart')

    tips:
    当tuple内只有1个元素如t = (1)时会被python解释器当成括号1而计算结果为1,为了避免这种歧义只有一个元素时写成t = (1,)

    2.访问

    t[0]	//返回'Adam' 

    3.修改

    t[0] = 'Paul'	//tuple一旦创建就不能改变,赋值为别的元素会报错TypeError: 'tuple' object does not support item assignment

    4."可变"的tuple

    尽管tuple自身不能改变但我们可以在tuple里嵌List来变成"可变"的tuple
    如:

    t = ('a','b',['A','B']),
    L = t[2]
    L[0] = 'X'
    L[1] = 'Y'
    

     >>>tuple变为('a','b',['X','Y'])

    tuple所谓"不变"是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

    dict(key => value,存储的数据没有顺序)

    1.创建

    d = {
    'Adam': 95,
    'Lisa': 85,
    'Bart': 59
    }

    tips: len()可以计算dict,List,tuple的大小

    2.访问

    d['Adam']	//返回95 

    tips:访问的key可能不存在会报错KeyError,因此可以通过2中方法解决
    (1)if-in判断

    if 'Paul' in d:
      print d['Paul']

    (2)get方法

    d.get('Bart')	//59
    d.get('Paul')	//None

    3.更新

    d['Adam'] = 70 

    4.遍历

    for key in d:
        print key ,': ',d[key]

    4.特点
    (1)查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样
    (2)占用内存大,还会浪费很多内容
    (3)作为 key 的元素必须不可变

    set(元素没有重复,而且是无序的,且只存储key不存储value)

    1.创建:调用 set() 并传入一个 list

    s = set(['A', 'B', 'C', 'C'])	//输出['A', 'B', 'C'],因为set会自动去掉重复的元素 

    2.访问

    set存储的是无序集合,所以我们没法通过索引来访问,所以使用in操作符判断元素是否在set中

    'Bart' in s

    3.遍历

    for name in s:
        print name  

    4.更新

    (1)添加

    s = set([1, 2, 3])
    s.add(4) 

    tips:加入重复的元素不会报错但也不会加进去,如s.add(3)的话s不变;

    (2)删除

    s.remove(4)

    tips:删除不存在的元素会报错

    条件语句:

    1.if语句

    age = 30
    if age >= 20:
        print 1
        print 2

    tips:if语句中缩进相同的语句才在同一个代码块中,因此上述例子print 1和print 2都只在age >= 20时才输出

    2.if-else语句

    if score >= 60:
        print 'passed'
    else:
        print 'failed'

    3.if-elif-else语句

    if score >= 90:
        print 'excellent'
    elif score >= 80:
        print 'good'
    elif score >= 60:
        print 'passed'
    else:
        print 'failed'


    循环语句

    1.for循环

    L = [75, 92, 59, 68]
    for key in L:
        print key 

    2.while循环

    x = 1
    while x < 100:
        x = x + 1

    切片(slice)

    L = ['Adam', 'Lisa', 'Bart', 'Paul']

    (1)用法

    L[index:num]	//表示从下标index开始取num个元素,index为0时可简写为L[:num]

    例如前三个: L[0:3]或L[:3]
    而L[:]则表示从头取到尾,实际上复制了一份List

    (2)指定第三个参数
    L[::2]表示每2个元素取一个数即隔一个取一个,得到['Adam','Bart']

    (3)也可对tuple切片,只是切片结果为tuple

    (4)倒序切片

    L[-2:]	//['Bart','Paul']
    

      

    迭代
    task:
    打印
    0 - Adam
    1 - Lisa
    2 - Bart
    3 - Paul

    L = ['Adam', 'Lisa', 'Bart', 'Paul']
    
    for index,name in enumerate(L):
        print index, ' - ',name 

    enumerate函数的作用:把['Adam', 'Lisa', 'Bart', 'Paul']变成了类似[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]的tuple

    zip()可以把2个list变成一个list

    zip([10, 20, 30], ['A', 'B', 'C'])	//[(10, 'A'), (20, 'B'), (30, 'C')]

    用for-in循环只能取出dict的key值,要使用values()或itervalues()方法才能取到value值。两者的区别是values()方法实际上将dict转换为了包含value的list而itervalues()不会,它从迭代过程中依次取出value,因此比values()方法节省内存

    items(): 将dict对象转换为包含tuple的list
    如: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }
    则 d.items()返回[('Lisa', 85), ('Adam', 95), ('Bart', 59)]

    iteritems(): 与values()和itervalues()类似,它也是不把dict转换成list,而是在迭代过程中不断给出tuple

  • 相关阅读:
    中间代码生成器-5-编译原理
    un-动物:老鼠
    un-动物:狗
    un-动物:猫
    un-动物:鹅
    un-动物:鸭子
    un-动物:鸡
    un-常见动物-动物:马
    un-常见动物-动物:骡
    un-常见动物-动物:牛
  • 原文地址:https://www.cnblogs.com/yuehenying/p/7976944.html
Copyright © 2011-2022 走看看