zoukankan      html  css  js  c++  java
  • Python学习(一)

    一、列表

      列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters 、digits 或names )是个不错的主意。
      在Python中,用方括号([])来表示列表,并用逗号来分隔其中的元素。下面是一个简单的列表示例,这个列表包含几个人名:  

    stus = [ "小白","小黑","小明"] #list 列表 数组
    print(stus)
    >>['小白', '小黑', '小明']

       在Python中,第一个列表元素的索引为0,而不是1。索引有可叫下标、角标。

    stus = [ "小白","小黑","小明"] 
    print('取第一个值:',stus[0])
    >>取第一个值: 小白

    创建一个空列表有以下两种方法:

    stus2 = [] #空的列表
    stus3 = list()#空的列表
    print('这是一个空列表:',stus2)
    print('这也是一个空列表:',stus3)
    >>这是一个空列表: []
    >>这也是一个空列表: []

    往列表中添加元素:

    stus.append('小红') #在list的末尾增加一个元素
    stus.insert(9,'小紫')#在指定的位置插入元素
    print(stus)# 如果指定的下标不存在,那么会把元素插入到最后
    >>['小白', '小黑', '小明', '小红', '小紫']

    获取列表中取元素:

    print('第一个元素:',stus[0])
    print('最后一个元素:',stus[-1])>>第一个元素: 小白
    >>最后一个元素: 小紫

    更改列表中的元素:

    print('更改之前的数据:',stus)
    stus[4] = '小黄'
    print('更改之后的数据:',stus)
    >>更改之前的数据: ['小白', '小黑', '小明', '小红', '小紫']
    >>更改之后的数据: ['小白', '小黑', '小明', '小红', '小黄']

     删除列表中的元素:

    print('删完之前的数据:',stus)
    stus.pop() #默认删除list里面最后一个元素
    print('删完之后的数据:',stus)
    >>删完之前的数据: ['小白', '小黑', '小明', '小红', '小黄']
    >>删完之后的数据: ['小白', '小黑', '小明', '小红']
    stus.pop(0) #删除指定位置的元素
    print('删完指定下标之后的数据:',stus)
    >>删完指定下标之后的数据: ['小黑', '小明', '小红']
    print('删完之前的数据:',stus)
    del stus[0] #删除指定位置的元素
    print('删完之后的数据:',stus)
    >>删完之前的数据: ['小白', '小黑', '小明', '小红', '小黄']
    >>删完之后的数据: ['小黑', '小明', '小红', '小黄']
    print('删完之前的数据:',stus)
    stus.remove("小明")#删除指定的元素,如果list里面有多个一样的元素,那么就只会删掉一个。如果该元素不存在则会报:ValueError: list.remove(x): x not in list
    print('删完之后的数据:',stus)
    >>删完之前的数据: ['小白', '小黑', '小明', '小红', '小黄']
    >>删完之后的数据: ['小白', '小黑', '小红', '小黄']

    多维数组:

    nums1 = [1,2,3,4,['a','b','c','d']]#2维数组
    nums2 = [1,2,3,4,['a','b','c','d',['test','dev','pre']]]#3维数组
    print(nums2[4][4][0])#多维数组取值
    >>test

    其它常用方法:

    count()可用来计算某个元素在list中的数量

    clear()可清空整个list

    copy()可复制一个list

    reverse()可反转当前list顺序

    stus = [ "小白","小黑","小明","小黑","小黑","小黑"]
    count = stus.count('小黑')#某个元素在list里面的数量
    print(count)
    >>4
    stus = [ "小白","小黑","小明","小黑","小黑","小黑"]
    stus.clear() #清空list
    print(stus)
    >>[]
    stus = [ "小白","小黑","小明","小黑","小黑","小黑"]
    new_stus = stus.copy()#复制一个
    print(new_stus)
    >>['小白', '小黑', '小明', '小黑', '小黑', '小黑']
    stus = [ "小白","小黑","小明","小黑","小黑","小黑"]
    stus.reverse()#反转
    print(stus)
    >>['小黑', '小黑', '小黑', '小明', '小黑', '小白']
    nums = [9,23,12,234,23,5235,235,235,23523,523]
    nums.sort()#列表正序排列
    print(nums)
    >>[9, 12, 23, 23, 234, 235, 235, 523, 5235, 23523]
    nums = [9,23,12,234,23,5235,235,235,23523,523]
    nums.sort(reverse=True) #列表倒序排列
    print(nums)
    >>[23523, 5235, 523, 235, 235, 234, 23, 23, 12, 9]
    stus = [ "小白","小黑","小明","小黑","小黑","小黑"]
    nums = [9,23,12,234,23,5235,235,235,23523,523]
    print('加入前:',stus)
    stus.extend(nums) #把一个list的元素,加入到另外一个list里面;不传参,则不返回数据
    print('加入后:',stus)
    >>加入前: ['小白', '小黑', '小明', '小黑', '小黑', '小黑']
    >>加入后: ['小白', '小黑', '小明', '小黑', '小黑', '小黑', 9, 23, 12, 234, 23, 5235, 235, 235, 23523, 523]
    result = stus.index('小明')#找某个元素的下标;元素不存在则不返回数据;有多个重复元素时,返回第一个元素的下标
    print('小明的下标:',result)
    >>小明的下标: 2

     二、字典

    在Python中,字典 是一系列键—值对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
    在Python中,字典用放在花括号{} 中的一系列键—值对表示,如下面的示例所示:

    stu_info = {
        'username':'小白',
        'phone':'18888238281',
        'money':20,
        'addr':'北京'
    }
    print(stu_info)
    >>{'username': '小白', 'phone': '18888238281', 'money': 20, 'addr': '北京'}

     创建一个空字典有以下两种方法:

    d1 = {}#创建一个空字典
    d2 = dict()#创建一个空字典
    print(d1)
    print(d2)
    >>{}
    >>{}

     往字典中添加元素:

    d1['name'] = '小黑'
    d1['age'] = 18
    d1.setdefault('class','画江湖')#前面写key,后面是value
    print('之前的',d1)
    d1.setdefault('age',38)#key已存在时,使用setdefault,不会修改原来的key值
    print('之后的',d1)
    >>之前的 {'name': '小黑', 'age': 18, 'class': '画江湖'}
    >>之后的 {'name': '小黑', 'age': 18, 'class': '画江湖'}

     修改字典中的元素:

    print('修改之前的:',d1)
    d1['name'] = '小黑2'#key已存在时,会修改原来的key值
    print('修改之后的:',d1)
    >>修改之前的: {'name': '小黑', 'age': 18, 'class': '画江湖'}
    >>修改之后的: {'name': '小黑2', 'age': 18, 'class': '画江湖'}

     获取字典中的元素:

    print(d1['name'])
    print(d1.get('name'))
    #使用上述两种方法,取一个不存在的key
    #print(d1['name2'])#会报错KeyError: 'name2'
    #print(d1.get('name2'))#返回None
    print(d1.get('name2'),'没有这个值')#如果该key不存在,可以指定返回结果
    print(d1.keys())#获取字典里面所有的key
    print(d1.values())#获取字典里面所有的value
    
    >>小黑2
    >>小黑2
    >>None 没有这个值
    >>dict_keys(['name', 'age', 'class'])
    >>dict_values(['小黑2', 18, '画江湖'])

     删除字典中的元素:

      使用pop()指定要删除的key

    print('删除之前:',d1)
    d1.pop('name')
    print('删除之后:',d1)
    >>删除之前: {'name': '小黑2', 'age': 18, 'class': '画江湖'}
    >>删除之后: {'age': 18, 'class': '画江湖'}

      使用del指定要删除的key

    print('删除之前:',d1)
    del d1['age']
    print('删除之后:',d1)
    >>删除之前: {'name': '小黑2', 'age': 18, 'class': '画江湖'}
    >>删除之后: {'name': '小黑2', 'class': '画江湖'}

      使用popitem()随机删除一个key

    print('删除之前:',d1)
    d1.popitem()#随机删除一个key
    print('删除之后:',d1)
    >>删除之前: {'name': '小黑2', 'age': 18, 'class': '画江湖'}
    >>删除之后: {'name': '小黑2', 'age': 18}

      使用clear()清空字典中所有的元素

    print('清空之前:',d1)
    d1.clear()#清空
    print('清空之后:',d1)
    >>清空之前: {'name': '小黑2', 'age': 18, 'class': '画江湖'}
    >>清空之后: {}

     使用update把一个字典添加到另一个字典中去

    d2 = {'abc':'1234'}
    print('添加之前:',d1)
    d1.update(d2)#把d2的字典加到d1的字典中去
    print('添加之后:',d1)
    >>添加之前: {'name': '小黑2', 'age': 18, 'class': '画江湖'}
    >>添加之后: {'name': '小黑2', 'age': 18, 'class': '画江湖', 'abc': '1234'}

    字典的循环:

    users = {
        "xiaobai":'123456sdf',
        "xiaobai2":'123456sd',
        "xiaobai3":'123456sdf',
        "xiaobai4":'1234sdf56',
        "xiaobai5":'12345gsdfs6',
        "xiaobai6":'1234324g56',
    }
    
    #、把字典里面每个用户的密码,前面都加上 username_ +
    
    #1、循环这个字典
    #2、把value修改成value = key_+value
    # for k in users:#直接循环一个字典的话,循环的是key
    #     value = users[k] #通过key取到value
    #     users[k] = '%s_%s'%(k,value)
    # print(users)
    
    for k,v in users.items():
        print('%s===>%s'%(k,v))
        users[k] = '%s_%s' % (k, v)
    
    >>xiaobai===>123456sdf
    >>xiaobai2===>123456sd
    >>xiaobai3===>123456sdf
    >>xiaobai4===>1234sdf56
    >>xiaobai5===>12345gsdfs6
    >>xiaobai6===>1234324g56

     三、字符串常用方法

    字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:

    "This is a string."
    'This is also a string.'

    这种灵活性让你能够在字符串中包含引号和撇号:

    'I told my friend, "Python is my favorite language!"'
    "The language 'Python' is named after Monty Python, not the snake."
    "One of Python's strengths is its diverse and supportive community."

      在程序中,额外的空白可能令人迷惑。对程序员来说,'python' 和'python ' 看起来几乎没什么两样,但对程序来说,它们却是两个不同的字符串。Python能够发现'python ' 中额外的空白,并认为它是有意义的——除非你告诉它不是这样的。

      空白很重要,因为你经常需要比较两个字符串是否相同。例如,一个重要的示例是,在用户登录网站时检查其用户名。但在一些简单得多的情形下,额外的空格也可能令人迷惑。所幸在Python中,删除用户输入的数据中的多余的空白易如反掌。 

      Python能够找出字符串开头和末尾多余的空白。要确保字符串末尾没有空白,可使用方法strip()方法去掉字符串两边的空格,rstrip() 可以去字符串右边的空格lstrip()可以去除字符串左边的空格。

    s = " a b c "
    result = s.strip()#默认去掉字符串两边的空格
    >>a b c

    strip()也可以去除指定的字符串(字符串是不能被修改的,只能返回最新的值)。

    s = "a b c"
    result = s.strip('c')#可以去除指定的字符串
    print(result)
    print(s)#字符串是不能被修改的,只能返回最新的值
    >>a b 
    >>a b c
    s = "  ab c   cc  c  d "
    print(s.count('c'))#统计字符串c的数量
    print(s.index('d'))#查询字符串d的下标,如该字符串不存在则报错:ValueError: substring not found
    print(s.find('d'))#查询字符串d的下标,如该字符串不存在则返回-1
    >>4
    >>16
    >>16
    s = "  ab c   cc  c  d "
    print(s.capitalize())#首字母大写
    print(s.upper()) #全部变成大写
    print(s.lower())#全部变成小写
    print(s.replace("c","C")) #替换
    print(s.replace(" ","",1))#1表示替换1次,不写的话全部替换
    
    >>  ab c   cc  c  d 
    >>  AB C   CC  C  D 
    >>  ab c   cc  c  d 
    >>  ab C   CC  C  d 
    >> ab c   cc  c  d 
    print('abc.jpg'.endswith('.jpg')) #判断是否以xx结尾,是返回True,否返回False
    print('abc'.startswith('c')) ##判断是否以xx开头,是返回True,否返回False
    >>True
    >>False

    center()

    print("欢迎登陆".center(100,'-'))
    >>------------------------------------------------欢迎登陆------------------------------------------------

    zfill()

    print('1'.zfill(5))#字符串长度不够的话在,自动补0
    >>00001

    format()

    import datetime
    username = '小白'
    today =datetime.datetime.today()
    s2 = "欢迎{}登录,今天的日期是{}"
    print(s2.format(username,today))
    >>欢迎小白登录,今天的日期是2010-03-03 14:39:22.415112

    format()和format_map()区别:

    s3 = "insert into user value ({username},{password},{phone})"
    new_s3 = s3.format(password = '123',username = '你瞅啥',phone='18888547569')
    print(new_s3)
    >>insert into user value (你瞅啥,123,18888547569)
    s3 = "insert into user value ({username},{password},{phone})"
    new_s3 = s3.format_map({"password":123,
                            "username": '你瞅啥',
                            'phone':18888547569
                        })
    print(new_s3)
    >>insert into user value (你瞅啥,123,18888547569)
    print('123abc'.isalnum())#没有%%##@特殊字符串就返回true
    print('abc'.isalpha())#不是数字、不是特殊符号就返回true
    print('12.34'.isdigit()) #判断是否为整数
    print(' '.isspace()) #判断是否为空格
    print('AbcD'.islower())#判断是否全部为小写
    print('ABCD'.isupper())#判断是否全部为大写
    
    >>True
    >>True
    >>False
    >>True
    >>False
    >>True


      split()方法可以按照某个字符串分割,把分割后的元素放到一个list里面。如果指定的分隔符不存在,那么就把整个字符串放到list中;如果不指定分隔符,则按空格进行分割。

    users ='abc,xiaozi,xiaobai,xiaohei,xiaoming,xiaolan'
    result = users.split(',')
    print(result)
    >>['abc', 'xiaozi', 'xiaobai', 'xiaohei', 'xiaoming', 'xiaolan']

      join()方法可以把list变成字符串,join用指定的字符串把list里的每个元素连接起来

    names = ['abc','xiaozi','xiaobai','xiaohei','xiaoming','xiaolan']
    file = '
    '.join(names)
    print(file)
    >>abc
    >>xiaozi
    >>xiaobai
    >>xiaohei
    >>xiaoming
    >>xiaolan

    读写文件可以使用read()和write()方法。

      write()方法只能写字符串,如果该文件不存在,则会创建一个。

    f = open('test.txt','w',encoding='utf-8')
    f.write('你瞅啥')#只能写字符串,打开test.txt文件后即可看到写入的字符串,如果再写入新的字符串则会覆盖上一条数据,这里我们可以使用追加写,即把‘w’替换为'a'
    f.close()

      使用read()方法读取文件时,该文件必须存在。

    f = open('test.txt','r',encoding='utf-8')
    res = f.read()
    print('从文件里面读出来的数据',res)
    f.close()
    >>从文件里面读出来的数据 你瞅啥

    四、random和string

    使用string可以打印出所有的字母

    import string
    print(string.ascii_letters)#打印全部大、小写字母
    print(string.ascii_lowercase)#只打印小写字符
    print(string.ascii_uppercase)#只打印大写字符

    使用random可以随机生成一批数据

    import random
    import string
    
    num = [1,2,3,4,5,6,7,8,9,0]
    result1 = random.sample(num,4)
    result2 = random.sample(string.ascii_letters,4)
    print(result1)
    print(result2)
    
    >>[8, 2, 3, 6]
    >>['O', 'g', 'x', 'J']
  • 相关阅读:
    安卓的sqlite增删改
    C#访问MySQL数据库(winform+EF)
    Sqlite在.NET下的使用和Sqlite数据库清理
    WPF小笔记-Popup拖动
    WPF自定义窗口最大化显示任务栏
    什么是Hash?什么是Hash算法或哈希函数?什么是map?什么是HashMap?HashMap的实现原理或者工作原理?HashMap是线程安全的吗?为什么?如何解决?
    字符串转换整数
    系统顺序图与顺序图区别,以及根据顺序图写代码
    设计领域模型有哪些难点?有哪些指导原则?
    斐波那契数列java实现
  • 原文地址:https://www.cnblogs.com/huohuli/p/10672230.html
Copyright © 2011-2022 走看看