美文网首页
2019-01-17今日份的Python基础学习

2019-01-17今日份的Python基础学习

作者: bf3780a4db09 | 来源:发表于2019-01-17 19:38 被阅读4次

    这周开始学习Python了,之前多多少少也接触过一些,但是一些基础的东西没有详细了解过,这次可以好好打一下基础,主要就是数据结构方面。
    数据结构【列表、字典、元组、集合】
    1) 列表(用方括号括起来)
    num = [1,2,3] # 索引0,1,2,3
    sum(num) # 求和返回6
    len(num) # 列表元素个数返回3
    列表的增删改查
    查:
    num[0]
    返回第一个元素1
    num[-1]
    返回最后一个元素3
    num[0:2] # 左闭右开,即查找第0个和第1个元素
    返回第一个和第二个元素[1,2]
    num[1:] # 查找第一个到最后一个元素
    返回[2,3]
    num[:3] # 查找第0个到第2个元素
    返回[1,2,3]
    num[-2:]
    返回[2,3]
    num[:1]
    返回[1]
    增:【insert、append、拼接】
    num.insert(1,4) # 在索引1的前面位置插入4
    返回[1,4,2,3]
    num.insert(3,5) # 在索引3的前面位置插入5
    返回[1,4,2,5,3]
    num.append(6) # 在num最后插入6
    返回[1,4,2,5,3,6]
    num.insert(6,8) # 在num最后插入8
    返回[1,4,2,5,3,6,8]
    num.append([1,2]) # 在num最后插入一个列表
    返回[1,4,2,5,3,6,8,[1,2]]
    append一次只能插入一个数,插入多个数的方法
    num + [8,9]
    返回[1,4,2,5,3,6,8,8,9],但是这种方法并没有改变num对象,如果需要改变num对象,需要对num进行赋值,即
    num = num + [8,9],此时的num变成[1,4,2,5,3,6,8,8,9]。
    删:【del(按索引)、pop(按索引)、remove(按元素)】
    del num[索引] # 删除该索引位置的值
    num.pop() # 默认删除列表末尾元素
    num.pop(1) # 删除索引是1的值, #一次只能删一个
    返回[1,2,5,3,6,8,8,9]
    num.remove(2) # 删除元素2
    注:
    num.remove()只删除第一个指定的值,如果要删除的值在列表中出现多次,就需要用循环来判断是否删除了这样的值
    改:【直接修改索引位置的值】
    num[5] = 4#把索引为5的值改为4
    返回[1,2,5,3,6,4,8,9]
    多维列表
    info = [[‘nn’,’kk’,’ll’],[12,23,34]]
    info[0][1]
    返回’kk’
    row = [0]3
    返回[0,0,0]
    [row]
    4
    返回[[0,0,0],[0,0,0],[0,0,0],[0,0,0]]
    排序:【sort(永久性)、sorted(临时性)】
    guest = ['ch', 'ah', 'ff', 'bf', 'qm', 'mm']
    print(sorted(guest))
    返回['ah', 'bf', 'ch', 'ff', 'mm', 'qm']
    此时,原guest不变
    guest.sort()
    print(guest)
    返回['ah', 'bf', 'ch', 'ff', 'mm', 'qm']
    guest.reverse()
    print(guest)
    返回['qm', 'mm', 'ff', 'ch', 'bf', 'ah'](按列表元素顺序从末尾反推到前面)
    2) 元组【注:元组元素无法修改
    用小括号括起来()
    a = (1, 2)
    a[0] = 3
    返回错误‘tuple' object does not support item assignment
    3) 字典,用中括号,键值对形式(注意get和setdefault函数
    a = {'name':‘nn','age':23 }
    a[‘name’]
    返回’nn’
    a.pop(‘name’)
    a[‘name’]= 'nn'
    a.get(‘name’,’kk’)
    返回’nn’
    a.get(‘nam’,1) #查找nam,如果存在返回相应值,不存在返回第二个参数值
    返回1
    a.setdefault(‘sex’,’male’) #查找第一个参数,找得到就返回相应值,找不到就添加新值
    返回male
    set(a)
    返回{‘name’,’age’,’sex’}
    4) 集合,可以用大括号或者set函数构建,不重复元素
    注:集合不支持索引,查询集合数据,可以先list(集合)再用索引查询
    a = [1,2,3,3,4]
    b = [2,3,4]
    set(a)
    返回{1,2,3,4} #去重
    set(a) & set(b) #交集
    返回{2,3,4}
    set(a) | set(b) #并集
    返回{1,2,3,4}
    set(a) - set(b) #a有b没有
    返回{1}
    {1,2} < a #{1,2} # 是不是a的子集
    返回True
    a ^ b #不同时包含于a和b的值
    返回{1,4}
    增:【add和update函数】
    set(a).add(‘jj’)
    返回{1,2,3,4,’jj’}
    set(a).update({5,6},[7,8],(9,10)) #参数可以多个,比如 集合 列表 元组都可以
    返回{1,2,3,4,’jj’,5,6,7,8,9,10}
    删:【remove、discard、pop
    a.remove(‘jj’)
    返回{1,2,3,4,5,6,7,8,9,10}
    a.remove(‘pp’) #不存在会报错
    返回报错keyerror
    a.discard(99) #返回None,不会报错
    a.pop() #不填参数值,随机删除元素
    返回3,即删除3
    此时的a为{1,2,4,5,6,7,8,9,10}
    len(a)
    返回9
    8 in a
    返回True
    最后是关于Python中的一些个人容易忽视的地方:
    1)引号【单引号、双引号、三引号】的用法
    单引号和双引号区别不大,当字符串里面有单引号时,外面用双引号,不然系统会按单引号顺序识别字符串,会报错。
    'hello 'nan',hello 'uu''#系统识别为'hello ' nan ',hello ' uu ' ',识别不出nan和uu 报错。

    image.png
    print(“hello 'nan',hello 'uu'”)
    返回hello 'nan',hello 'uu'
    print('''hello “nan”,hello 'uu'''')#当字符串中同时包含单双引号时,三引号可以作为字符串的边界
    返回hello “nan”,hello 'uu'
    print('''hello “nan”,
    hello 'uu'''')#三引号还可以处理换行数据
    返回
    hello “nan”,
    hello 'uu'
    print(""'b")#转义字符,表示单双引号不是字符串的边界,只是单纯的引号
    返回"'b
    2)运算符优先级
    (1 < 2) + 1
    返回2,(1 < 2)返回True,True在进行数值计算时表示1,False表示0。
    1 < 2 + 1
    返回True,去掉括号之后的结果,原因在于+的计算优先于<,先计算2+1为3,再进行1<3, 返回True
    3)列表的复制与赋值
    列表的复制list[:],复制之后和原列表是两个对象,指向的是两个list
    list2 = list1,将list1赋值给list2,实际上两个变量指向的是同一个表,修改其中一个列表,两个变量都会改变。
    1.JPG
    2.JPG
    3.JPG
    4)字符串和元组不可变。
    11.png
    22.png
    Q:为什么同样是变量.方法的形式,上面那个删除空白不是永久性的,还要重新赋值原变量内容才会改变,而下面那个的修改是永久性的
    因为字符串是不可变对象,列表是可变对象。
    5)在进行for循环前,需要确定列表是否为空,空列表不遍历。
    33.png
    44.png
    Q:为什么第一个当user为空列表时,返回的是None,不是we need to find some users,第二个空字符串却可以
    因为不遍历空列表,确实item还是之前循环的最后一个值,说明这次for循环根本没有执行。
    6)一些小细节
    --Python中的None表示缺失,但不等于0,type(None)返回NoneType;
    ''表示值为空,type('')返回str,表示''在Python中的数据类型是字符串。
    --检查字符串是否相等,考虑大小写。
    --Python中将{}构建的对象,默认为字典,不是集合。
    --Python不关心键值对的存储顺序,只跟踪键和值之间的关联关系。
    --遍历字典,默认遍历的是字典的键。

    相关文章

      网友评论

          本文标题:2019-01-17今日份的Python基础学习

          本文链接:https://www.haomeiwen.com/subject/oycwdqtx.html