python基础二 ---类型转换 ,字符串,列表,元祖,for,range,enumerate

一 数据类型一览

   int : 数字 1,2,3 等 ,用于计算

  bool : True,False. 用于判断

  string : 存储少量数据,用于操作

  list : 存储大量数据,任何数据都可存储

     [ 1,2,"sdffds",[1,2,3],'dfdfdf']

  元祖:存储大量数据,任何数据都可存储,但是只读。

  dict(字典): 存储大量关系型数据,查询速度很快。

    第一种:{‘name’ : 'john' , 'age' : '22' , 'height' : '180'}

    第二种 : { 'john' : [22,180,....... ] , 'oliver' : [.........] }

        集合 : 与list类似,主要用于 求交集 和 求并集 。

二 基础数据类型及类型转换

1 int

    bit_length() 当十进制用二进制表示时,最少使用的位数

'''
                  bit_length
1     0000 0001       1
2     0000 0010       2
3     0000 0011       2
'''

2 bool 

  只有true 和 false 代表真假。

  真 = 数字 = true、假 = 0 = false

3 类型转换

第一种:数字(int)与 字符串(str)

       int-->str     str(int) 

       str-->int     int(str)  注意:只有字符串内容是数字时,才可转换。

第二种数字(int)与 布尔值(bool)

       int-->bool   bool(int) 非零数 = true   0 = false

       bool-->int   int(bool)     true = 1           false = 0

#ps: 进行死循环时,选择效率高的
while True:
    pass

while 1: 效率高
    pass

第三种:布尔值(bool)与 字符串(str) 

       str-->bool    s = " " 空字符串为false    s = "0",s = "非空字符串"为true

       bool-->str 

第四种:字符串(str)与 列表(list)

       str-->list       li =s.split() 

       list-->str       s =  "   ".join(li) 

join

#'连接符,默认为拼接' . join(可迭代对象)
#返回字符串
#除了int,bool,含有多个元素的字符串,列表等可迭代
    li = ['taibai','alex','wusir','egon','女神',]
    s = '++++'.join(li)
    print(s)
    #taibai++++alex++++wusir++++egon++++女神    

 第五种: list --set

#去重
    li = [1,2,33,33,2,1,4,5,6,6]
    set1 = set(li)
    print(set1)  #  {1, 2, 33, 4, 5, 6} 将列表变集合去重
    li = list(set1)
    print(li)      #  [1, 2, 33, 4, 5, 6] 再将去重的集合变列表       

4 str 

  字符串的索引和切片

  索引:通过下标选取字符串中的元素,下标从零开始。(从左到右)      

  切片:通过索引截取字符串中的元素,形成新的字符串。(原则:顾头不顾尾)

a = "ABCDEFG"
# 1 取单个元素
print(a[3]) # -->D 

# 2 取一段 ,[首:尾:步长]
print(a[0:3]) #-->ABC 顾头不顾尾
print(a[0:]) #默认到最后 或者print(a[:])
print(a[0:-1]) #-1就是最后一个 -->ABCDEF
print(a[-1::-1])# --> GFEDCBA

#3 隔几个取
print(a[0:5:2]) #加步长-->ACE
print(a[5:0:-2]) #反向加步长-->FDB

  字符串的操作 

 s = "AKKscDxx"
#1 首字母大写 print(s.capitalize()) #2 全大写,全小写 用于验证不区分大小写的密码、验证码 print(s.upper()) print(s.lower()) #3 大小写翻转 print(s.swapcase()) #4 每个(空格,数字,特殊字符隔开的)单词的首字母大写 s= 'big small7middle&hi ' print( s.title())#-->Big Small7Middle&Hi #5 内同居中,总长度,空白处填充(空格或其他字符) s="a" print(s.center(10,"*")) #-->****aa**** #6 前面的补全   “““默认将一个tab键变成8个空格,如果tab前面的字符长度不足8 个,则补全8个,如果tab键前面的字符长度超过8个不足16个则 全16个,以此类推每次补全8个。”””    s = "hqw dfehdgyb"    print( s.expandtabs())#-->hqw dfehdgyb #7 startswith 判断是否以...开头 # endswith 判断是否以...结尾   s = "dkfjdkfasf54"   print(s.endswith('jdk',3,6)) #-->true   # 返回的是布尔值 顾头不顾腚 print(s.startswith("kfj",1,4))#-->true print(s.startswith(“dk"))#-->true #8 通用方法   l = len(s) #求字符串s的长度,返回值为 int #9 查找字符串中的元素   # find 通过元素找索引,找不到返回-1(int)   # index通过元素找索引,找不到报错   # 找到返回下标数字(int)    s = 'alexWUsir'   s8 = s.find('A')   s81 = s.index('A')   print(s81,type(s81))   s= "dkfjdkfasf54"   print(s.find("fjdk",1,6)) # -->返回 2 #10 去空格(特殊符号等) 默认删除前后空格,用于用户输入    s = "*egon**"    print(s.strip('*'))#-->egon    print(s.lstrip('*'))#-->egon**    print(s.rstrip('*'))#-->*egon    #s.strip(“%$#”) 分别删除%¥# #11 统计字符串中某个元素出现的次数 列表、元祖等通用    s = "adfad"    print(s.count("a",0,4) ) # 可切片 #12 拆分 默认以空格拆 可将字符串拆成列表,得到的列表不含 分割元素    # 注意原则:一分为二    s = ';alex;wusir;taibai'    l = s.split('a')print(l)#-->[';', 'lex;wusir;t', 'ib', 'i'] #13 格式化输出fomat(更高级)    #format的三种格式化输出    # s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('太白',36,'girl','太白')    # print(s) 对应    # name = input('请输入名字:')    # s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,36,'girl')    # print(s) 索引    # name = input('请输入名字:')    # s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='girl')    # print(s) 变量 #14 replace (旧的,新的,个数)    s = '哈哈顶顶顶顶哈哈'    s = s.replace('哈哈','呵呵',1)    print(s)-->#呵呵顶顶顶顶哈哈 只替代一个 #15 is系列 返回 true false    name='jinxin123'    print(name.isalnum()) #字符串由字母或数字组成    print(name.isalpha()) #字符串只由字母组成    print(name.isdigit()) #字符串只由数字组成

5 列表list 

  列表的索引和切片与字符串相同,且得到的是列表。

  列表的操作(增删改查)与字符串操作不一样,对列表进行操作将改变原列表,对字符串操作创建新字符串,原字符串不变。  

  通常对列表的操作与对列表中字符串的操作结合进行。

    li = ['alex','wusir','egon','女神','taibai']
#增加 append
    li.append("nihao")
    print(li)#-> ['alex', 'wusir', 'egon', '女神', 'taibai', 'nihao']

#索引插入insert(索引,对象)
    li.insert(2,123)
    # ['alex', 'wusir', 123, 'egon', '女神', 'taibai']

#迭代插入extend(可迭代对象)分解到元素再加入
    li.extend(123)  #报错  数字不可迭代
    li.extend([1,2,"asd"]) 
    #['alex', 'wusir', 'egon', '女神', 'taibai', 1, 2, 'asd']
    li = ['taibai','alex','wusir','egon','女神',]
#按索引删 pop()
    #pop() 默认删最后一个,且可返回删除的值
    print(li.pop(2),li)
    # wusir ['taibai', 'alex', 'egon', '女神']

#按元素删 remove()
    li.remove('taibai')  
    print(li)#-->['alex', 'wusir', 'egon', '女神']
            
#清空 clear() 
    li.clear()
    print(li) #-->[]
         
#在内存中删除列表 del li 
#切片去删 del li[x:y]    
    del li      #报错 li 不存在
    del li[0:2] #['wusir', 'egon', '女神']
    print(li)
#直接赋值改变
    li[0] = "男神"#-->['男神', 'alex', 'wusir', 'egon', '女神']

#先切片删除,再添加(添加不需要等于删除)
    li[0:3] = '云姐pl'#-->['云', '姐', 'p', 'l', 'egon', '女神']
    li[0:3] = [1,2,3,'春哥','咸鱼哥']
    #-->[1, 2, 3, '春哥', '咸鱼哥', 'egon', '女神']
    print(li)
#循环查
    for i in li:
        print(i)
#切片查某一段
    print(li[0:2])
 1 li = ['taibai','武藤兰','苑昊',['alex','egon',89],23]
 2 # print(li[1][1])
 3 # li[0] = li[0].capitalize()
 4 
 5 # li[2] = '苑日天'
 6 # print(li[2].replace('昊','ritian'))
 7 # li[2] = li[2].replace('昊','ritian')
 8 
 9 # li[3][0] = li[3][0].upper()
10 # print(li)
列表的嵌套

6 通用方法

len()

#求长度   
    s = "adfad"
    print(len(s))  #--> 5 (个字符)

    a = ["q", "wss", "qssss", "sssr", "t", "y"]
    print(len(a))  #--> 6 (个元素)

count ()

#统计某个元素出现的次数
    s = "adfad"
    print(s.count("a",0,4) ) # 可切片

    a = ["q","w","q","r","t","y"]
    print(a.count("q"))    

index()

#找出某个值第一个匹配项的索引位置
    a = ["q","w","r","t","y"]
    print (a.index("r"))

    s = 'alexWUsir'
    print(s.index('al'))    

reverse() 字符串不能用

#反转元素
    li = ['taibai','alex','wusir','egon','女神',]
    li.reverse()
    print(li)    
    #--> ['女神', 'egon', 'wusir', 'alex', 'taibai']

sort() 字符串不能用

    li = ['taibai','alex','wusir','egon','女神',]
#正向排序 再原列表的基础上
    li.sort()
    print(li)#-->['alex', 'egon', 'taibai', 'wusir', '女神']
#反向排序
    li.sort(reverse=True)
    print(li)#-->['alex', 'egon', 'taibai', 'wusir', '女神']

 7 元祖

  #元祖 只读列表,可循环查询,可切片。
  #儿子不能改,孙子可以改
   tu = (1,2,3,'alex',[2,3,4,'taibai'],'egon')
    tu[4][3]=tu[4][3].upper()
    print(tu)
    #-->(1, 2, 3, 'alex', [2, 3, 4, 'TAIBAI'], 'egon')
#元祖  如果元祖里面只有一个元素且不加,那此元素是什么类型,就是什么类型。
    tu1 = (1)
    tu2 = (1,)
    print(tu1,type(tu1))       #   1 <class 'int'>                 
    print(tu2,type(tu2))       #  (1,) <class 'tuple'>
    

8 range 

#列表,盛放数字 (首,尾,步长)
# for i in range(3,10): #顾头不顾尾 3.4...9
# for i in range(10):    #0.1.2...9
# for i in range(0,10,3):#0 3 6 9
# for i in range(10,0,-2):#10 8 6  4 2
# for i in range(10,-1,-2):#10 8 6  4  2 10 8 ...2

9 for

for i in s:        if   i in  s:

# 输出元素
    li = [1,2,3,5,'alex',[2,3,4,5,'taibai'],'afds']
     for i in li:
         if type(i) == list:
             for k in i:
              print(k)
         else:print(i)

    for i in range(len(li)):
       if type(li[i]) == list:
            for j in li[i]:
                print(j)
        else:print(li[i]

 10 enumerate

li = ['alex','taibai','wusir','egon']
for i in li:
    print(li.index(i),i)
0 alex
1 taibai
2 wusir
3 egon
# li需可迭代,index为索引,可加
for index,i in enumerate(li,100):
    print(index,i)
100 alex
101 taibai
102 wusir
103 egon

 

原文地址:https://www.cnblogs.com/olivia2018/p/8059438.html