zoukankan      html  css  js  c++  java
  • Python基础--使用list和tuple+条件判断+使用dict和set

    list

    list是一种有序的集合,可以随时添加和删除其中的元素。跟java不一样的是 可以使用arr[-1] 0>-x >=- len(arr) 索引的数字为 0~ len(arr)-1 -len(arr)~ -1 超过会报错

    classmates= ['A','B','C','D','E']
    print(classmates)
    print(len(classmates))
    for i in classmates:
        print(i)
    
    '''
    ['A', 'B', 'C', 'D', 'E']
    5
    A
    B
    C
    D
    E
    '''
    for i in range(0,len(classmates)):
        print(classmates[i])
    '''
    A
    B
    C
    D
    E
    '''
    classmates= ['A','B','C','D','E']
    print(classmates[-1])
    print(classmates[-2])
    print(classmates[-3])
    print(classmates[-4])
    print(classmates[-5])
    '''
    print(classmates[-6])
    IndexError: list index out of range
    '''
    '''
    E
    D
    C
    B
    A
    '''
    
    • list是一个可变的有序表,所以,可以往list中追加元素到末尾:
      append()方法
    • 在某个位置上插入
      insert(x,'???')
    • 要删除list末尾的元素
      pop(i) 没有参数默认为最后一个
    classmates= ['A','B','C','D','E']
    classmates.append('F')
    classmates.insert(1,'G')
    classmates.insert(-1,'H')
    classmates.insert(1,'I')
    print(classmates)
    for i in range(0,len(classmates)):
        classmates.pop(0)
        print(classmates)
    '''
    ['A', 'I', 'G', 'B', 'C', 'D', 'E', 'H', 'F']
    ['I', 'G', 'B', 'C', 'D', 'E', 'H', 'F']
    ['G', 'B', 'C', 'D', 'E', 'H', 'F']
    ['B', 'C', 'D', 'E', 'H', 'F']
    ['C', 'D', 'E', 'H', 'F']
    ['D', 'E', 'H', 'F']
    ['E', 'H', 'F']
    ['H', 'F']
    ['F']
    []
    '''
    
    • 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:更改值任意属性
    classmates= ['A','B','C','D','E']
    classmates[0] ='F'
    print(classmates)
    '''
    ['F', 'B', 'C', 'D', 'E']
    '''
    
    • list元素也可以是另一个list,list里面的元素的数据类型也可以不同
    p = [1,2,3]
    classmates= ['A',p,True ]
    print(classmates)
    

    tuple

    tuple和list非常类似,但是tuple一旦初始化就不能修改,更具有安全性 相比list 没有append() pop() insert()等方法
    classmates = ('Michael', 'Bob', 'Tracy') 跟list 区别是括号 [] / ()
    注意:因为定义tuple 类型跟 四则运算的() 相互混了

    false_t = (1)           # 定义的不是tuple,是1这个数!
    print(false_t)        
    true_t = (1,)            # 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:
    print(true_t)
    true_t1 = ()
    print(true_t1)
    '''
    1
    (1,)
    ()
    
    '''
    

    虽然说tuple不可变 如下

    p = ['男',20]
    change_t = (1,'czncai',p)
    print(change_t)
    p[0] = '猛男'
    p[1] = 21
    print(change_t)
    '''
    (1, 'czncai', ['男', 20])
    (1, 'czncai', ['猛男', 21])
    '''
    

    条件判断 + input()

    input('请输入一个数字')
    if boolean表达式 :
    elif :
    else :

    循环

    • for x in list :
      是把list每个元素代入变量x,然后执行缩进块的语句
    • for x in range() range()函数,可以生成一个整数序列
      list(range(5))
      [0, 1, 2, 3, 4]
    • while boolean表达式 :
      n = n+1
      b = true

    break continue

    • break 可以提前退出循环
    • continue 跳过当前的这次循环,直接开始下一次循环。

    使用dict和set

    • dict 字典 查找速度大于list
      先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。无论找哪个字,这种查找速度都非常快,不会随着字典大小的增加而变慢。
      dict:给定一个名字,比如'Michael',dict在内部就可以直接计算出Michael对应的存放成绩的“页码”,也就是95这个数字存放的内存地址,直接取出来,所以速度非常快。
    mathsorce = {'A': 85, 'V': 70 ,'S': 100}
    print(mathsorce['A'])
    # 要先定义初始化 不能直接 d['cznczai'] = ?
    d ={}
    d['cznczai'] = 83
    d['cgc'] = 90
    print(d)
    {'cznczai': 83, 'cgc': 90}
    # 通过in判断key是否存在:
    print('cznczai' in d)
    print('codeccc' in d)
    True 
    False
    #或者
    d.get('cznczai' , -1)      #如果不存在返回-1  默认为None
    #通过pop(key)删除对应的值
    d.pop('cznczai') 
    

    set

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

    #输出显示的顺序也不表示set是有序的。
    d = set([1,2,3])
    print(d)
    #{1 ,2 ,3}
    #重复元素在set中自动被过滤:
    d = set([1,2,2,3,4,4,5,5])
    print(d)
    #{1, 2, 3, 4, 5}
    #通过add(key)方法可以添加元素到set中
    d.add(6)
    print(d)
    #{1, 2, 3, 4, 5, 6}
    #通过remove(key)方法可以删除元素:
    d.remove(1)
    print(d)
    #{2, 3, 4, 5, 6}
    #set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:& |
    

    再议不可变对象

    对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,

    ls = [4 ,5,6,1,2,7,3]
    ls.sort()
    print(ls)
    # [1, 2, 3, 4, 5, 6, 7]
    

    对于不可变对象,比如str,

    a = 'abc'
    a.replace('a','A')
    print(a)
    # abc
    

    小结

    使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。
    tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。

  • 相关阅读:
    PHP中使用cURL实现Get和Post请求的方法
    详解回调函数——以JS为例解读异步、回调和EventLoop
    JavaScript中变量提升------Hoisting
    js 变量提升(JavaScript Scoping and Hoisting)
    js 如何判断数据是数据还是对象
    Bootstrap Modal 垂直方向加滚动条
    Bootstrap Affix(附加导航(Affix)插件的用法)
    Vue 源码解析:深入响应式原理(上)
    ceph API之PHP的S3-SDK包的泛域名解析问题
    ceph API之PHP的客户端连接
  • 原文地址:https://www.cnblogs.com/cznczai/p/11268013.html
Copyright © 2011-2022 走看看