• python学习 day2


    1、str常用操作

    1)字符串的索引与切片

     1 str1 = "python"
     2 >>> str1[0]   #截取第一个字符
     3 'p'
     4 >>> str1[0:2] #截取0-1两个字符
     5 'py'
     6 >>> str1[0:4:2]  #截取0-4之间的字符,且步长为2
     7 'pt'
     8 >>> str1[-1:]  #截取最后一个字符
     9 'n'
    10 >>> str1[::-1]  #倒着截取字符串
    11 'nohtyp'

    2)capitalize、swapcase、title

    1 name = "hello World"
    2 print(name.capitalize())    #首字母大写
    3 print(name.swapcase())   #大小写反转
    4 print(name.upper())   #将所有字符都换成大写
    5 print(name.lower())   #将所有字符都换成小写
    6 print(name.title())           #每个单词首字母大写

    3)center

    1 name = "hello world"
    2 print(name.center(20,"+"))  #内容居中,指定左右间隔字符,同时可以指定以什么字符进行填充
    3 
    4 
    5 输出:
    6 ++++hello world+++++

    4)count

    1 name = "hello world"
    2 print(name.count("l"))   #统计指定字符出现的次数
    3 
    4 
    5 输出:
    6 3

    5)startswith、endswith

    1 name = "hello world"
    2 print(name.startswith("h"))  #是否以某个字符开头
    3 print(name.endswith("d"))   #是否以某个字符结尾
    4 
    5 
    6 输出:
    7 True
    8 True

    6)find、index

    1 name = "hello world"
    2 print(name.find("h"))   #返回找到的元素索引,不存在返回-1
    3 print(name.index("d")) #返回找到的元素索引,不存在会报错
    4 
    5 输出:
    6 0
    7 -1
    8 10
    9 ValueError: substring not found

    7)split

    1 name = "hello world"
    2 print(name.split())   #指定分隔符,将分割的字符串制成列表,默认是以空格分割
    3 print(name.split("o"))
    4 
    5 输出:
    6 ['hello', 'world']
    7 ['hell', ' w', 'rld']

    8)format

     1 #format的三种玩法 格式化输出
     2 res1='{} {} {}'.format('egon',18,'male')
     3 res2='{1} {0} {1}'.format('egon',18,'male')
     4 res3='{name} {age} {sex}'.format(sex='male',name='egon',age=18)
     5 print(res1)
     6 print(res2)
     7 print(res3)
     8 
     9 
    10 输出:
    11 
    12 egon 18 male
    13 18 egon 18
    14 egon 18 male

    9)strip

     1 name = "***hello world**"
     2 print(name.strip("*"))  #去除字符串左右的指定字符,默认是去除空格,经常是结合input使用
     3 print(name.lstrip("*"))  #去除字符串左边的指定字符
     4 print(name.rstrip("*"))  #去除字符串右边的指定字符
     5 
     6 
     7 输出:
     8 hello world
     9 hello world**
    10 ***hello world

    10)replace

    1 name = "hello world"
    2 print(name.replace("hello","你好"))  #替换字符串
    3 
    4 输出:
    5 你好 world

    11)is系列

     1 name1 = "hello1"
     2 name2 = "hello"
     3 name3 = "123"
     4 print(name1.isalnum())  #字符由字母或数字组成
     5 print(name2.isalpha())  #字符串由字母组成
     6 print(name3.isdigit())  #字符只由数字组成
     7 
     8 输出:
     9 True
    10 True
    11 True

     2、list

     1 #切片
     2 list1 = [1,2,"hello",3]
     3 print (list1[1])  #2
     4 print (list1[-1])  #3
     5 print (list1[:2])  #[1,2]
     6 print (list1[:3:2])  #[1, 'hello']
     7 
     8 #增
     9 #append 在最后追加
    10 list1.append('葫芦')
    11 list1.append([1,2,3])
    12 #insert插入
    13 list1.insert(1,"world")
    14 #迭代添加
    15 list1.extend('Tom')
    16 list1.extend('[111,222,333]')
    17 
    18 #删
    19 #pop 有返回值  按照索引删除
    20 print (list1.pop(0))
    21 #remove  按照指定字符删除
    22 print (list1.remove('hello'))
    23 #clear 清空列表
    24 print (list1.clear())
    25 #del 内存级别删除列表
    26 del list1
    27 del list1[1]  #索引删除
    28 del list1[:3]  #切片删除
    29 
    30 #改
    31 #按照索引修改
    32 list1[2] = code
    33 print (lit1)
    34 #按照切片去修改
    35 list1[:2] = 'aaa'
    36 print (list1)
    37 
    38 #查
    39 #按照索引去查询,按照切片去查询
    40 for i in list1:
    41     print(i)
    42 #通过元素找索引
    43 print (list1.index(2))
    44 #sort 排序
    45 list1.sort()   从小到大排序
    46 list1.sort(reverse=True)  从大到小排序
    47 #reverse  列表从右往左排序
    48 list1.reverse()
    49 
    50 #列表嵌套
    51 list2 = [1,2,'abc',['name','age',123],'qq']
    52 #将abc全部变成大写,放回原处
    53 list2[2] = 'ABC'
    54 print (list[2].upper())
    55 list2[2]  = list[2].upper()
    56 #给['name','age',123]追加一个元素‘baidu’
    57 list2[-2].append('baidu')
    58 #将age首字母大写
    59 list2[-2][1] = list2[-2][1].capitalize()
    60 #将123通过数字相加,或者字符串相加变成150
    61 list2[-2][-1] = str(list2[-2][-1] + 27)

     3、dict

     1     字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
     2 
     3     字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
     4 3.6版本之前,字典是无序的,3.6之后字典是有序的。
     5 dic = {"name":"Tom","age":18}
     6 
     7 字典的增:
     8 dic['li'] = ["a","b","c"]   有则覆盖,无则添加
     9 print(dic)
    10 # setdefault 在字典中添加键值对,如果只有键那对应的值是none,但是如果原字典中存在设置的键值对,则他不会更改或者覆盖。
    11 dic.setdefault('k','v')
    12 print(dic)  # dic = {"name":"Tom","age":18,"k":"v"}
    13 dic.setdefault('k','v1')  # {'age': 18, 'name': 'jin', 'sex': 'male', 'k': 'v'}
    14 print(dic)
    15 
    16 字典的删:
    17 print (dic.pop('name'))  #返回删除key对应的value值
    18 print (dic.pop('name1','没有此key'))
    19 print(dic)
    20 dic.clear()  #清空
    21 print (dic)
    22 print(dic.popitem())  #随机删除,返回值删除的key,测试3.x版本是从后往前进行删除的,并不是随机删除
    23 
    24 字典的改:
    25 dic['name'] = 'boy'
    26 print (dic)
    27 dic = {"name":"Tom","age":18}
    28 dic2 = {"name":boy","job":"IT"}
    29 dic2.update(dic)   #将dic的键值对覆盖添加到dic2中,dic不变
    30 
    31 字典的查:
    32 print (dic['name2'])  #查找不存在的key会直接报错
    33 print (dic.get('name2','此key不存在'))  #可以自定义返回值
    34 
    35 
    36 字典内置方法
    37 #keys() values() items()
    38 dic = {'name': 'jin', 'age': 18, 'sex': 'male'}
    39 list(dic.keys())  #将key生成到一个列表中
    40 for i in dic.keys():  #以列表返回一个字典所有的键
    41     print (i)
    42 for i in dic.values():  #以列表返回字典中的所有值
    43     print (i)
    44 for k,v in dic.items():   #以列表返回可遍历的(键, 值) 元组数组
    45     print (k,v)
    46 
    47 分别赋值
    48 a,b = 1,2
    49 如何快速将两个变量值互换
    50 a =1
    51 b = 5
    52 a,b = b,a
    53 
    54 fromkeys()  #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    55 dic1 = dict.fromkeys('abc',[])
    56 dic1['a'].append('Tom')
    57 print ('dic1')

     4、小数据池,深浅copy

     1 #小数据池
     2 a = "Tom"
     3 b = "Tom"
     4 print (a == b)  #数值
     5 print (a is b)   #判断是否为同一个内存地址
     6 #python中是有小数据池的概念
     7 #int -5~256的相同的数全都指向一个内存地址,节省空间
     8 #str  s = 'a' * 20以内都是同一个内存地址
     9 
    10 #深浅copy
    11 a = [1,2,3]
    12 b = a   #b和a是共用一个内存地址,改变其中一个值,另外一个也会改变
    13 a.append(666)
    14 print (a,b)  #[1, 2, 3, 666] [1, 2, 3, 666]
    15 
    16 
    17 #浅copy
    18 l1 = [1,2,3]
    19 l2 = l1.copy()
    20 l1.append(666)
    21 print (l1,l2)    #[1, 2, 3, 666] [1, 2, 3]
    22 print (id(l1),id(l2))  #89582728 89581208  
    23 
    24 l1 = [1,2,3,[22,33]]
    25 l2 = l1.copy()
    26 l1[-1].append(666)
    27 print(l1,l2)  #[1, 2, 3, [22, 33, 666]] [1, 2, 3, [22, 33, 666]]
    28 print(id(l1[-1]),id(l2[-1]))  #89583208 89583208
    29 对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
    30 
    31 #深copy   对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变
    32 import copy
    33 l1 = [1,2,3,[22,33]]
    34 l2 = copy.deepcopy(l1)
    35 l1[-1].append(666)
    36 print(l1,l2)
    37 print(id(l1[-1]),id(l2[-1]))

    5、数据类型补充

    注意:

    1、在循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),删除一个数据时,再次循环时数据索引会改变

    2、dict 再循环字典时,不要改变字典的大小,删除数据会报错

    3、如果元组里面只有一个元素并且没有逗号隔开,那么他的数据类型与该元素一致

    1 >>> tu1 = (1)
    2 >>> type(tu1)
    3 <class 'int'>
    4 >>> tu2 = (1,)
    5 >>> type(tu2)
    6 <class 'tuple'>
    运算符 表达式 说明
    and a and b 逻辑与,当a为True时才计算b
    or a or b 逻辑或,当a为False时才计算b
    not not a 逻辑非

    非零为true,无论正负

    1、 and    与     a  and  b       a为true则计算b,否则返回false

    2、 or       或     a  or  b         a为false则计算b,否则返回true

    3、 not     非                          加not取反

  • 相关阅读:
    socket详解(二)----实例和多线程,线程池使用
    OpenJDK和JDK区别
    单词(11)
    程序员到项目经理:从内而外的提升(比较全面的介绍)
    如何成为一名自然语言处理工程师
    权限设计文章汇总
    ECharts+百度地图,默认选中 卫星地图
    Echarts3.0 引入百度地图(转载)
    echarts地图 鼠标滚动控制缩放大小比例(转载)
    echarts散点图 不显示问题 或宽度为0问题
  • 原文地址:https://www.cnblogs.com/watchslowly/p/8934236.html
Copyright © 2020-2023  润新知