zoukankan      html  css  js  c++  java
  • python学习笔记(二)

    一、python的数据类型:

      int整型

      float 小数类型

      string 字符串类型 

      布尔类型:True、False

    可变变量:里面的元素可以随便修改

       比如:list

    不可变变量:里面的元素不能修改

      比如:string、tuple

    s = 'haso'
    s[2]='小黑'  #报错,字符串不能通过下标修改值
    s = '小黑'  #重新赋值

    比较运算符:

      <  >  ==   <=    >=   !=     #返回True / False

     

    二、列表(也叫:list、数组、array):

      通过索引(下标、角标、编号)来取值,比string方便

           newlist = [1,2,3,4]   #最前面一个元素下标是0,最后一个元素下标是-1

    列表根据列表中元素的编号来取元素:

    print(newstus[1])   #取第2个元素
    print(newstus[-1])  #取最后一个元素

     

    三、list小练习

    # 校验用户名是否合法:
        # 输入账号       #input
        # 如果账号存在的,提示已经被注册,如果不存在的,就让他注册 all_users[]
        #不能为空          #strip()
        #用户名长度长度6-12之间 len()
        #最多输入3次     #循环
    
    all_users =  ['zhangsan','wangwu','zhangwifi']
    for i in range(3):
        username = input('请输入账号:').strip()
        if len(username)>5 and len(username)<13:
            if all_users.count(username)>0:
                print('这个名字太好啦,已经被注册啦!')
            else:
                print('名字不错,赶紧注册吧!')
                break
        else:
            print('用户名长度不合法!长度6-12之间!')
    else:
        print('失败次数过多')

    四、列表的方法:

      1)增:

      cities = []     #定义一个空列表

      ①在列表末尾添加一个元素,一次只能添加一个元素  

    cities.append('北京') 

      ②在指定位置,接受两个参数(索引号、新元素的值),增加元素

    cities.insert(0, '上海')  #在第一个位置增加元素 

      ③extend()方法:接收一个参数如果参数是列表或字符串,就将该参数中的每个元素分别添加到原有的列表中

    cities = ['北京','上海']
    cities.extend(['成都','深圳'])
    cities.extend('abc')
    print(cities)

      >>> ['北京', '上海', '成都', '深圳', 'a', 'b', 'c']

     

      2)删:

      ①删除指定位置的元素(不指定位置,默认删最后一个)

    cities.pop(-1)

      ②指定元素的名字来删除

    cities.remove('北京')

      ③清空list

    cities.clear()

      ④删除指定位置的元素

    del cities[-1]

      

      3)修改:通过下标修改元素的值

     cities[1] = '南京'    ##修改的时候如果指定的下标不存在,会报错

      4) 查:通过下标取值

    print(cities[0])             #获取指定位置的值
    print(cities.index('广州'))   #获取某个元素的下标
    print(cities.count('广州'))   #查看/统计元素在list里面出现了多少次

      5)翻转list

    my_list = ['python','jmeter','charles','postman']
    print(my_list.reverse())  #就是把这个list反转一下,返回None
    print(my_list)    #打印翻转后的list

      6)list排序

    nums = [111, 33, 5, 8, 99]  #或者num=['b','v','f']
    
    nums.sort()   #默认升序,返回None  #>>> [5, 8, 33, 99, 111]nums.sort(reverse=True)  #降序,返回None
    print(nums)    #打印排序后list

       7)合并list

    print(list1+list2)   #合并list
    
    print(list1 * 2)   #复制几遍list

       8)计算字符串或list长度

    words = '广州'
    print(len(words))

      >>> 2

    五、多维数组:

    list1 = [1,2,3,4] #一个普通的数组
    list2 = ['marry','lily',[50,'monkey']] #二维数组
    list3 = ['name','sex',['lily',124,['aaaa','bbb']]] #三维数组

      【例】 :多维数组的取值

    names=[  ['小黑',['小绿',138]],'小红',['小紫',['小白']]]
    print(names[-1][-1])   #['小白']
    print(names[0][-1][-1])   

    六、list的切片:切片是list取值的一种方式

    num = ['aaa','bbb','ccc','ddd']
    #下标:   0     1    2     3
    print(num[:])   #取所有的元素
    
    print(num[1:3])  #顾头不顾尾,不包含右边下标的元素 #>>> [‘bbb’,’ccc’]
    print(num[1:])   #从头开始到某个下标结束,开头的下标可以不写
    print(num[:2])   #从开头开始取,取到某个下标结束,开头的下标可不写

        list以步长方式切片:   

     #如果步长是正数,从左往右开始取
     #如果步长是负数,从右边开始取值
    num = list(range(1,21))
    print(num)   #>>>[1,2,3....20]
    print(num[::2]) #步长,隔几个取一次 >>>[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    print(num[::-2]) #步长,隔几个取一次  >>>[20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
    print(num[0:10:2])  #步长(默认是1) >>>[1, 3, 5, 7, 9]
    print(num[::-1])   #反转list  >>>[20, 19, ... 2, 1]

    七、切片方式反转与rever反转的区别:

      #list1.reverse()  # reverse反转,改变了原来list的值

      #list1[::-1]          #切片方式反转,不会改变原来list的值

    切片操作同样适合字符串(字符串不能通过下标修改值)

    s = 'haso'
    print(s[0])
    print(s[:3])

    八、list循环:

    lists = ['aaa','xiaoming',[1,2,3,4],'小黑']
    
    for i in lists:
        print(i)

      >>> aaa

        xiaoming
        [1, 2, 3, 4]
        小黑

    for i in range(4):  #其它语言的遍历循环

      print(lists[i])

         

    九、string的循环:

    str = 'a,xiaoming'
    for i in str:
        print(i)    

    #for循环在循环可迭代对象时,每次循环的是里面的每一个元素

     

    十、判断一个变量的数据类型:type()

    lists = ['a','xiaoming',[1,2,3,4]]
    for x in lists:
        if type(x)==list:  #type()==str,int,float,list
            for i in x:
                print(i)
        print(x)

    十一、list小练习

    stus=[                              
          ['小明','未交'],
          ['小白','已交'],
          ['小紫','已交'],
          ['小红','未交'],
          ['小绿','未交'],
          ['小黄','未交'],
          ['小黑','已交']
        ]     #二维数组
    pass_list = [ ] #所有已经交作业的同学
    fail_list = [ ] #没有交作业同学的名字
    for stu in stus:
        status = stu[1] #状态
        name = stu[0] #名字
        if status == '未交':
            fail_list.append(name)
        else:
            pass_list.append(name)
    print('未交作业的所有同学是 %s ,总共有 %s 个人'%(fail_list,len(fail_list)))
    print('已交作业的所有同学是 %s ,总共有 %s 个人'%(pass_list,len(pass_list)))

    输出:

    未交作业的所有同学是 ['小明', '小红', '小绿', '小黄'] ,总共有 4 个人
    已交作业的所有同学是 ['小白', '小紫', '小黑'] ,总共有 3 个人

    十二、元组tuple:元组也是一个list,它和list的区别是元组里面的元素无法修改

        t = (1,2,3,4,5)

     #如果元组里面只有一个元素,必须在最后加一个逗号,

    word = (1)  #int类型
    w = ('abc') #str类型
    
    word = (1,)  #元组
    w = ('abc',)  #元组

      1)元组的方法:

    t.index('abc')  #找到元组中元素’abc’的下标
    
    t.count('abc')  #找到元组中’abc’的个数

    十三、循环删list需要注意的一个问题:

    #循环删list里面的数据的时候,结果会不正确

    lista = [1,1,2,3,4,5,6,8]
    for i in lista:
        if i%2 != 0:
            lista.remove(i)   #期望删除奇数,保留偶数
    print(lista)

    >>> [1, 2, 4, 6, 8]  #但实际上第二个1也是奇数,但没有被删除

    解释:

    lista = [1, 1, 3, 4, 6, 8]
    #       0  1   2  3  4  5  #第一次循环,删下标为0的,lista[0]=1
    lista = [1, 3, 4, 6, 8]
    #       0  1   2  3  4  #第二次循环,删下标为1的,lista[1]=3,所以跨过了lista[0]=1,所有这个重复的1被保留了

    解决:

    lista = [1, 1, 3, 4, 6, 8]
    copy_list = [1, 1, 3, 4, 6, 8] #定义两个list(内存地址不一样) 
    for i in copy_list:   #循环的是copy_list,它里面的元素一直没变
        if i%2 != 0:
            lista.remove(i)  #然后删除的是原list中的元素
    print(lista)

    十四、深拷贝和浅拷贝:

    #深拷贝内存地址不一样,浅拷贝指向同一块内存地址 

    import copy   #copy模块
    
    l = [1, 1, 3, 4, 6, 8]
    l2 = copy.deepcopy(l)   #深拷贝,内存地址不一样
    l3 = l   #浅拷贝,指向同一块内存地址
    l4 = [1, 1, 3, 4, 6, 8]
    print('l :%d
    l2:%d
    l3:%d
    l4:%d' % (id(l),id(l2),id(l3),id(l4)))

    l :23849520  #内存地址一样 

    l2:24511472 

    l3:23849520  #浅拷贝,一样

    l4:24511712

    十五、判断的方法:非空即真,非0即真 #不为空true,空false ;非0true,0false

    a = []  #空列表,false
    
    b = {}  #空字典,false
    
    c = 0   #false
    
    d = tuple()   #空元组,false
    
    e = ''   # 空字符串,false
    
    print(bool(a))  #省去了判断这步
    name = input("输入你的姓名:").strip()
    if name:    #节省代码,以前是这样判段的是否为空name==''或者len(name)>0
        print("输入正确")
    else:
        print("输入不能为空")
    a = 'qqq'
    b = 'ggg'
    c = 'xxx'
    d = 'sss'
    l = [a,b,c,d]
     
  • 相关阅读:
    Linux如何同步时间/更新时间
    Linux关机/重启/及注销命令
    Linux如何查看别名和取消别名
    Linux查看历史记录
    Linux命令行快捷键有哪些
    win10产品密钥 win10永久激活密钥(可激活win10所有版本 )
    Xshell如何连接
    Xshell6 优化
    逻辑运算符
    可变类型与不可变类型
  • 原文地址:https://www.cnblogs.com/chenhongl/p/8735609.html
Copyright © 2011-2022 走看看