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中,并解释结果。

  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/cznczai/p/11268013.html
Copyright © 2011-2022 走看看