6、for循环补充、可变类型与不可变类型、基本操作

一、for循环的补充

  for+range

  for i in range(10,3,-1)(从第十位倒取到第四位)

  print(i)

  for+enumerate

  

for i,name in enumerate(["egon","tom","jack"]):  

# [(0,"egon"),(1,"tom"),(2,"jack")] print(i,name)

  对于列表可取值为(索引  值)也可以用与字典,取值为(索引,key)

二、不可变类型与可变类型

  不可变类型:值改变,id也改变,证明是产生了新值,原值是不可变类型

  可变类型:值发生改变,但是id不变,证明就是在改变原值,原始是可变类型

  

l = [111,222,333]
print(id(l))
l[0] = 6666666   #将111改为6666666
print(id(l))

 

  

三、数字类型int与float

  1、定义:

  整型int的定义:

  age=10(本质age=int(10))

  浮点型float的定义:

  salary=3000.3(本质salary=float(3000.3))

  注意:名字+括号的意思是调用某个功能,比如

  print(...)调用的是打印功能

  int(...)调用的是创建整型数据的功能

  float(...)调用的是创建浮点型数据的功能

  2、类型转换

  1、数据类型的转换

  1.1  int可以将由纯整数构成的字符串直接转换成整型,若包换其他任意非整数符号,则会报错

  s=‘123’

  res=int(s)

  print(type(res))

  1.2进制转换

  十进制转换成其他进制

  bin(3)转换为二进制

  oct(9)转换为八进制

  hex(17)转换为十六进制

  其他进制转换成十进制

  例:int(‘0b11’,2)二进制转十进制3

  1.3float同样可以用来做数据类型的转换

  同int,例:s=‘12.3’

       res=float(s)

       print(type(res))

  int与float类型常用操作+内置的方法都为数学运算+比较运算

  两者都表示存一个值,是不可变的

四、字符串

  1、定义:在单引号,双引号,三引号内包含一串字符

  name1 = ‘jason’  本质:name=str('任意形式内容')

  name2= “lili”  本质:name=str(“任意形式内容”)

  name3= """ricky"""  本质:name=str("""任意形式内容""")

  2、类型转换

  数据类型转换:str()可以将任意数据类型转换成字符串类型,例如

  

 type(str([1,2,3])) # list->str
<class 'str'>
 type(str({"name":"jason","age":18})) # dict->str
<class 'str'>
 type(str((1,2,3)))  # tuple->str
<class 'str'>
 type(str({1,2,3,4})) # set->str
<class 'str'>

  补充内容:

  print(“abc\nddd”)表示换行打印

  print(r“abc\nddd”)值前面加r类似于EXCEL中将后面的单元格设置为文本格式,打印不换行

  print (“abc\\nddd”)

  3、使用

  1、按照索引取值(正向取与反向取)

  str1 = ’hello python‘

  1.1正向取值(从左往右)

    str1[6]

    p

  1.2反向取(负号表示从右往左)

    str1[-4]

    h

  1.3对于str来说,只能按照索引取值,不能更改

  str1[0]=’H‘报错typeerror

  2、切片(顾头不顾尾,步长)

  2.1顾头不顾尾:取出索引为0到8的所有字符

  str1[0:9]

  hello pyt

  2.2步长:0:9:2,第三个参数2代表步长,会从0开始,每次累加一个2即可,所以会取出索引为0、2、4、6、8

  str1[0:9:2]

  hlopt

  2.3反向切片

  str[::-1]

  3、长度len

  msg = ‘’hello world‘’

  print(len(msg))

  4、成员运算in和not in

  msg = ‘’hello world‘’

  print(“he”in msg)判断  he  是不是在hello world中

  print(‘’he‘’ not in msg)  推荐!

  print(not ‘’he‘’ in msg)一样的结果,不简洁明了

  5、移除空白strip

  msg = ‘’     hello     ‘’

  res = msg.strip() 

  拓展:

  msg = “”******hello****“

  print(msg.strip(‘*’))移除的可以为多种符号,只要在引号里面标记

  更加复杂的:

  msg = ”+-*/hello world+-*/“

  print(msg.strip("+-*/"))

  6、切分split

  msg = ‘’egon:123:3000‘’按照有规律的字符串,取出egon的方式

  方式一:print(msg[0:4]

  方式二:res= msg.split(":",1)按照引号切切1次

  7、循环

  for x in msg :

  print(x)

五、重要的操作(*****)

  1、strip,lstrip,rstrip(用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列)

   例:msg = ‘’****hello*****‘’

    print(msg.strip(''*''))  去除*

    print(msg.lstrip((''*'')))  去除左边的*

    print(msg.rstrip(''*''))  去除右边的*

  2、lower,upper(更改大小写)

  msg = print(msg.lower())全部改为小写

  msg = print(msg.upper)全部改写为大写

  3、startswith,endswith(检查字符串是否是以指定子字符串开头/结尾,如果是则返回 True,否则返回 False)

  msg = ''egon is ok''

  print(msg.startswith(''egon''))  True

  print(msg.endswith('''ok''))  True

  4、format的三种玩法

  1)msg = 'my name is %s my age is %s'%(''egon'',18)这种方式是以%s的方式将括号例的值赋值进去

    msg = my name is {name} my age is {age}.format(name="egon",age=18) 这种方式是将变量名放到花括号中,通过.format给变量名赋值

  2)msg = "my name is {1} my age is {0}".format(18,"egon") 这是花括号通过索引来赋值

  补充:

    msg = "my name is {name} my age is {age}".format(**{"age":18,"name":"egon"})
    msg = "my name is %(name)s my age is %(age)s" % {"age":18,"name":"egon"}

    这两种方法输出结果等同,当后面为列表时,想要通过Key赋值的话,需要在列表前加**,第二种是通过%()s的方式进行传值

  3)name = ''egon''

    age = 18

    print(f''my name is {name} my age is {age}'')  这种方法通过f,然后将前两个变量值赋值给花括号的变量名中

  5、split,rsplit(通过指定分隔符对字符串进行切片)  

  msg = "egon:18:3000"
  print(msg.split(":",1))  这种切的方式为,从左往右以:为切点,切1次
  print(msg.rsplit(":",1))  这种切的方式为,从右往左以:为切点,切1次

  6、join(将序列中的元素以指定的字符连接生成一个新的字符串)

  l=["egon","18","3000"]

  print(":".join(l))

  输出结果为:egon:18:3000

  7、replace(把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次) 

  msg = 'egon xxxx egon yyy egon'
  print(msg.replace('egon',"EGON",2))最后一个2是替换次数
  print(msg.replace('egon',"EGON"))

  拓展: msg = "**_+_***he llo***+-**"
      print(msg.strip("*_+-").replace(" ",''))
      先用strip将左右的多余符号去掉,再用replace将空格去掉

  8、isdigit(判断字符串是否为数字组成)

  案例:

 num = input(">>>: ")  # num = "asfasdf"
 if num.isdigit():
     num = int(num)
     print(num > 10)
 else:
     print("必须输入数字,小垃圾")

六、列表的基本使用

  1、用途:按照位置存放多个任意类型的值

  2、定义方式:在[]内用逗号分隔开多个任意类型的值

  list数据类型转换:把可迭代的类型转换成列表,可以被for循环遍历的类型都是可迭代的

  3、常用操作+内置方法

  1)按照索引存取值(正向存取+反向存取):即可存也可取

  

l=[111,222,333]
print(id(l))
l[0]=666
print(l)
print(id(l))

l=[111,222,333]
l[0]=666
l[3]=777  # 列表索引不能超出范围
l[3]  # 列表索引不能超出范围

  2)切片(顾头不顾尾,步长)

   

l=[11,22,33,44,55,66,77,88,99]
res=l[1:7:2]
res=l[:]
res=l[::-1]
print(res)

  3)长度

  print(len([''aaa'',11,2222]))    这个列表长度为3

  4)成员运算in和not  in

  print(111 in [’‘aaa’‘,111,222]))    判断111是否在这个列表中

  5)追加与插入

  在列表的尾部追加

l=[111,222,333,]
l.append(444)
l.append(555)
print(l)

  在列表的任意一个地方插入

    

l=[111,222,333]
l.insert(1,6666)
print(l)

l=[111,222,333]
res = l.append(444)
res = l.insert(1,444)
print(res)#==》输出结果为none,没有反馈

  6)删除

    l=[111,222,333]

    a、万能删除del

    del   l[0]
    print(l)None

 

 

    b、l.remove(指定元素)

     

 res=l.remove(222)
 print(l)
 print(res)  #None

    

    c、l.pop(指定索引)

 res=l.pop(1)
 print(l)
 print(res)#有反馈

  7)循环

   

l=[111,222,333]
for x in l:
    print(x)

 

  

posted @ 2020-12-22 20:09  BaiM0  阅读(310)  评论(0编辑  收藏  举报