02---python基础 (二)(-基础数据类型-)

int

i = 3
i = 4
print(i.bit_length())

#二进制          十进制
#0000 0001          1
#0000 0010          2
#0000 0011          3
#0000 0100          4

bool值:True,False

# 
# int  ---> str :str(int)
# str  ---> int :int(str) str必须全部是数字组成。
# 
# int --- > bool  0 False  非零 True
# bool ---> int  int(True) 1    int(False)  0
# 
# str ---> bool  '' False   非空字符串 True

print(int(True))
print(bool("")) # False

a = 0
print(int(a),bool(a))
a = 123
print(str(a),type(a))

str

s = 'python自动化运维21期'
s1 = s[0]
print(s1)
s2 = s[2]
print(s2)
s3 = s[-1]
print(s3)
s4 = s[-2]
print(s4)

1. 切片

s[起始索引:结束索引+1:步长]

s = 'python自动化运维21期'
s1 = s[:6] #顾头不顾尾
print(s1)

s2 = s[6:9]
print(s2)

s3 = s[:5:2]
print(s3)

s4 = s[:]
print(s4)

s5 = s[-1:-5:-1]  #倒着取值,必须加反向步长
print(s5)

- capitalize 首字母大写,其他字母小写

s = 'oldBoy'
s1 = s.capitalize()
print(s1)

- 全部大写upper() 全部小写lower()

s2 = s.upper()
s3 = s.lower()
print(s2,s3)

code = 'QeAr'.upper()
your_code = input('请输入验证码:').upper()
if your_code == code:
    print('验证成功')

- 大小写反转 swapcase()

s4 = s.swapcase()
print(s4)

- 非字母的元素隔开的每个单词首字母大写 title()

s = 'alex wusir*oldboy3taibia'
s5 = s.title()  # Alex Wusir*Oldboy3Taibia
print(s5)

- center 居中,长度自己设定,默认填充物None

s6 = s.center(30)
s6 = s.center(30,"*")
print(s6)
s = 'oldBoy'
*** startswith endswith
s7 = s.startswith('o')
s7 = s.startswith('ol')
s7 = s.startswith('oldBoy')
s7 = s.startswith('Bo',3,5)
print(s7)

- strip 去除首尾的空格,制表符\t,换行符。不仅仅是去除空格

lstrip()首 、rstrip()尾

s = '   tyoyldBoyrte'
s8 = s.lstrip()  ###去除首空格  指定字母
print(s8)
s8 = s.strip()
print(s8)
s81 = s.strip('t')
print(s81)
s81 = s.strip('tey')
print(s81)


name = input('>>>').strip()
if name == 'oldboy':
    print('验证成功')

- split (str —> list) 字符串转化为列表

s1 = 'oldboy,wusiry,alexy'
s = 'oldboywusiroalex'
l = s.split()
print(l)           # ['oldboywusiroalex']
l = s1.split(',')
print(l)           # ['oldboy', 'wusiry', 'alexy']
l2 = s.split('o')  
print(l2)          # ['', 'ldb', 'ywusir', 'alex']

l2 = s.split('o',1)  
print(l2)           # ['', 'ldboywusiroalex']

- join 将list —>str 将列表转化为字符

s = 'oldBoy'
s9 = '+'.join(s)
s9 = '_'.join(s)
print(s9)
l1 = ['oldboy','wusir','alex']
s91 = '_'.join(l1)
print(s91)

- replace 互换位置

s = '大铁锤fdsalj铁锤妹妹范德萨'
s10 = s.replace('铁锤','钢蛋')
print(s10)          # 大钢蛋fdsalj钢蛋妹妹范德萨

- find 通过元素找索引 找不到返回-1 - index 通过元素找索引 找不到报错

s = 'oldBoy'
ind1 = s.find('d')
print(ind1)
ind2 = s.find('o')
print(ind2)
ind3 = s.find('A')
print(ind3)
ind4 = s.index('A')
print(ind4)

格式化输出format

res='我叫{}今年{}岁,爱好{}'.format('egon',18,'male')
print(res)
res='我叫{0}今年{1}岁,爱好{2},我依然叫{0}'.format('egon',18,'male')
print(res)
res='{name} {age} {sex}'.format(sex='male', name='egon', age=18)
print(res)

- len 总计 - count 计数

s = 'fdsafsdagsdafjdskahdhjlsadhfkj'
print(len(s))          # 30
s = 'fdsadd'
print(s.count('d'))    # 3

- isalnum、 isalpha、 isdigit

name = 'jinxin123'
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
i = '123a'
if i.isdigit():
    i = int(i)
else:
    print("输入有误...")

list列表

l = [111,'alex',222,'wusir']
print(li[1])  # alex
print(li[-1])  # wusir
print(li[:2])  # [111, 'alex']
print(li[:3:2])

- append 在最后追加

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
l.append('葫芦')
l.append([1,2,3])
print(l)

- insert 插入

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
l.insert(1,'景nvshen')
print(l)

- 迭代着添加

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
l.extend('alex')
l.extend(['111',222,333])
print(l)

*- pop 有返回值 按照索引删除*

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
print(l.pop(0))
print(l)

- remove

l.remove('alex')
print(l)

- clear 清空列表

l.clear()
print(l)

- del 内存级别删除列表 按索引删除

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
del l
print (l)
#按索引删除
del l[1]
print(l)

- 切片删除

del l[:3]
print(l)

- 按照索引改

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
l[0] = '孟'
print(l)
print(l[2])
l[2] = '武藤兰'
print(l)

- 按照切片去改

l = ['刘', 'alex', 'wusir', 'taibai', 'ritian']
l[1:2] = 'abc'
print(l)
l[1:3] = [111,222,333,444]
print(l)

- 按照索引去查询,按照切片去查询

for i in l:
    print(i)

- 计数 count len index(通过元素找索引)

l1 = [1,2,1,2,1,1,3,4]
#其他方法:
#count 计数
print(l1.count(1))
#len
print(len(l1))
#通过元素找索引
print(l1.index(2))

- sort 排序

l2 = [3,2,4,6,9,8,7,1]
l2.sort()
print(l2)
l2.sort(reverse=True)
print(l2)
l2.reverse()
print(l2)
sort
l2.sort()  #从小到大
print(l2)
l2.sort(reverse=True)  #从大到小排序
print(l2)

#reverse
l2.reverse()
print(l2)

小题

#列表的嵌套
l1 = [1, 2, 'alex', 'wusir',['oldboy', 'ritian',99], 'taibai']
#1,将'alex'全部变成大写,放回原处。

l1[2] = 'ALEX'
print(l1[2].upper())
l1[2] = l1[2].upper()
print(l1)


#2.给['oldboy', 'ritian', 99] 追加一个元素‘女神’。 一个方法

# l1[-2].append('女财神')
# print(l1)



#3,将'ritian'首字母大写,放回原处。

# l1[-2][1] = l1[-2][1].capitalize()
# print(l1)



#4,将99通过数字相加,或者字符串相加或者等等,变成'100'

l1[-2][-1] = str(l1[-2][-1] + 1)
print(l1)

l1[-2][-1] = str(l1[-2][-1]) + '0'
print(l1)

dict 字典

字典的key是唯一的。key 必须是不可变的数据类型。
     key:不可变的数据类型(可哈希):str,bool,tuple,int。
     value:任意数据类型。
数据类型分类:
        不可变的数据类型(可哈希):str,bool,tuple,int
        可变的数据类型:dict,list,set。
        容器类数据类型:list,tuple,dict,set.
字典:存储数据多,关系型数据,查询速度快(二分查找)。
3.6版本之前,字典是无序的,3.6之后字典是有序的。

setdefault() :有则不变,无则添加

dic = {'name':'taibai','age':21,'hobby':'girl',}

dic['high'] 有则覆盖,无则添加
dic['high'] = 180
dic['name'] = 'ritian'
print(dic)
dic.setdefault() 有则不变,无则添加
dic.setdefault('high')
dic.setdefault('high',180)
dic.setdefault('name','日天')
print(dic)

- pop : 有返回值

print(dic.pop('name'))  # 返回值 对应的值
print(dic.pop('name1','没有此key sb'))
print(dic)
print(dic)

- clear() 清空

dic.clear()  # 清空
print(dic)

- popitem() #随机删除,返回值

print(dic.popitem())  #随机删除,返回值
print(dic)

- del

del dic
print(dic)
del dic['age']
print(dic)

dic['name'] = '老男孩'
print(dic)

- update

dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic)
#将dic的键值对覆盖添加到dic2中,dic不变。
dic2.update(dic)
print(dic)
print(dic2)

print(dic['name'])
print(dic['name2'])

- get

print(dic.get('name1'))
print(dic.get('name1'))
print(dic.get('name1','没有此key,sb'))

- keys() 只显示key

dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl','aaa':'bbb' }
print(list(dic.keys()))    #['name', 'age', 'hobby', 'aaa']
for i in dic.keys():
    print(i)    
#显示 
#name
#age
#hobby
#aaa

- values() 只显示值

dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl','aaa':'bbb' }
print(dic.values())   # dict_values(['taibai', 21, 'girl', 'bbb'])
for i in dic.values():
    print(i)
#taibai
#21
#girl
#bbb

- items 以元祖的形式显示出来

#dic.items():把字典以元祖显示 #list(dic.items())把显示的元祖以列表显示

print(list(dic.items()))  # [('name', 'taibai'), ('age', 21), ('hobby', 'girl'), ('aaa', 'bbb')]
for i in dic.items():
    print(i)
#('name', 'taibai')
#('age', 21)
#('hobby', 'girl')
#('aaa', 'bbb')

- 分别赋值

a,b = 1,2
a,b,c = ['alex', 'wusir', 'ritain']
print(a,b,c)
a = 1
b = 5
a,b = b,a
print(a,b)
for i in dic.items():
    print(i)



dic = {'name': 'taibai', 'age': 21, 'hobby': 'girl','aaa':'bbb' }

for i in dic.items():
    print(i)

for k,v in dic.items():
    print(k,v)

len 计数

dic = {'aa': 'ab','ac':'ad'}
print(len(dic))   #2

- fromkeys


dic1 = dict.fromkeys('abc','张三')
print(dic1)   # {'a': '张三', 'b': '张三', 'c': '张三'}
dic2= dict.fromkeys([1,2,3],'李四')
print(dic2)   # {1: '李四', 2: '李四', 3: '李四'}



dic3 = dict.fromkeys('abc',[])
print(dic3)   # {'a': [], 'b': [], 'c': []}
dic3['a'].append('老男孩')
print(dic3)   # {'a': ['老男孩'], 'b': ['老男孩'], 'c': ['老男孩']}

字典的嵌套: 小题

dic = {
    'name_list':['b哥', '张帝', '人帅', 'kitty'],
    '老男孩':{
        'name':'老男孩',
        'age': 46,
        'sex': 'ladyboy',
    },
}

#1,['b哥', '张帝', '人帅', 'kitty']追加一个元素,'骑兵'

dic['name_list'].append('骑兵')
print(dic)


#2,将kitty全部变成大写。

l1 = dic['name_list']
print(l1[-1].upper())
l1[-1] = l1[-1].upper()
print(dic)
dic['name_list'][-1] = dic['name_list'][-1].upper()
print(dic)


#3,将老男孩 改成oldboy。

dic['老男孩']['name'] = 'oldboy'
print(dic)


#3.1,将ladyboy首字母大写。

dic['老男孩']['sex'] = dic['老男孩']['sex'].capitalize()
print(dic)

tuple 元祖

不可变元素

tu = (11,2,True,[2,3,4],'alex')
for i in tu:
    print(i)
#11
#2
#True
#[2, 3, 4]
#alex

print(tu[1])     # 2
print(tu[:3:2])  # (11, True)
print(tu.index(True))   # 2
print(tu.count(2))      # 1
print(len(tu))          # 5
tu[-2].append(666)
print(tu)     # (11, 2, True, [2, 3, 4, 666], 'alex')

set 集合

    无序,不重复的数据类型。它里面的元素必须是可哈希的。但是集合本身是不可哈希的。
    1:关系测试。交集并集,子集,差集....
    2,去重.(列表的去重)
set1 = {1,'alex',False,(1,2,3)}
l1 = [1,1,2,2,3,3,4,5,6,6]
l2 = list(set(l1))
print(l2)     #[1, 2, 3, 4, 5, 6]

- add

set1 = {'alex','wusir','ritian','egon','barry'}
set1.add('666')
print(set1)   #无序 {'ritian', '666', 'alex', 'wusir', 'barry', 'egon'}  

- update

set1.update('abc')
print(set1)    # {'ritian', 'alex', 'wusir', 'egon', 'b', 'a', 'barry', 'c'}

- pop 随机删除一个元素

set1 = {'alex','wusir','ritian','egon','barry'}

set1.pop()  # 随机删除一个元素
print(set1)    # {'barry', 'egon', 'ritian', 'alex'}

- remove # 删除一个元素

set1.remove('alex')  # 删除一个元素
print(set1)    # {'egon', 'ritian', 'barry', 'wusir'}

- clear 清空集合

set1.clear()  # 清空集合
print(set1)   # set()

- del 删除集合

del set1  # 删除集合
print(set1)

交集、并集、差集、反差集

交集: (& intersectio)

set1 = {1,2,3,4,5}
set2 = {4,5,6,7,8}

print(set1 & set2)      #{4, 5}
print(set1.intersection(set2))   # {4, 5}

并集:( | union )

print(set1 | set2)      # {1, 2, 3, 4, 5, 6, 7, 8}
print(set1.union(set2)) # {1, 2, 3, 4, 5, 6, 7, 8}

差集:( - difference )

print(set1 - set2)   # {1, 2, 3}
print(set1.difference(set2))  # {1, 2, 3}

反交集: ( ^ symmetric_difference )

print(set1 ^ set2)      # {1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}

issubset、issuperset、frozenset

set1 = {1,2,3}
set2 = {1,2,3,4,5,6}

print(set1 < set2)          #True
print(set1.issubset(set2))  #True 这两个相同,都是说明set1是set2子集。

print(set2 > set1)     #True
print(set2.issuperset(set1))  #True   测试是否 set1 中的每一个元素都在 set2 中 

s = frozenset('barry')       #创建固定的无序集合
s1 = frozenset({4,5,6,7,8})
print(s,type(s))     # frozenset({'a', 'b', 'y', 'r'}) <class 'frozenset'>
print(s1,type(s1))   # frozenset({4, 5, 6, 7, 8}) <class 'frozenset'>

copy 小数据池

# id == is
a = 'alex'
b = 'alex'
print(a == b)  # True 数值
print(a is b)  # True 内存地址
print(id(a))   # 2409263247688   内存ID号
print(id(b))   # 2409263247688

深浅copy

赋值运算,它们共用一个列表

a = [1,2,3]
b = a
a.append(666)
print(a,b)  # [1, 2, 3, 666] [1, 2, 3, 666]

python中 有小数据池的概念。
int -5 ~256 的相同的数全都指向一个内存地址,节省空间。
str:s = 'a' * 20 以内都是同一个内存地址
#只要字符串含有非字母元素,那就不是一个内存地址

浅copy


对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始
指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性


l1 = [1,2,3]
l2 = l1.copy()
l1.append(666)
print(l1,l2)           #   [1, 2, 3, 666] [1, 2, 3]
print(id(l1),id(l2))   #   2736276933640 2736276951752

l1 = [1,2,3,[22,33]]
l2 = l1.copy()
l1[-1].append(666)
print(l1,l2)                 # [1, 2, 3, [22, 33, 666]] [1, 2, 3, [22, 33, 666]]
print(id(l1[-1]),id(l2[-1])) # 1420042013704  1420042013704

深copy


对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。


import copy     # 调用copy 模块
l1 = [1,2,3,[22,33]]
l2 = copy.deepcopy(l1)
l1[-1].append(666)
print(l1,l2)                   # [1, 2, 3, [22, 33, 666]] [1, 2, 3, [22, 33]]
print(id(l1[-1]),id(l2[-1]))   # 2561063915272 2561063974088

整体回顾

int:
    bit_lenth
str:
    upper(),lower() 全大写,全小写
    catlize 首字母大写,其他字母小写
    strip去除空格,去除换行符,制表符,等或者指定字符。
    split()分割,str ---> list
    replace() 替换
    startswith endswith  有切片,判断是以... 开头或者结尾
    count 计算元素的个数 有切片
    center() 居中,可以有填充物
    join()  '_'.join(iterable)  list(每个元素必须是str) --> str
    find,index 通过元素找索引。区别:index找不到会报错。
    title 每个单词首字母大写。
    isdigit()全部是数字
    isalpha()全部是字母。
    isalnum()数字或者字母组成。
    swapcase()大小写反转。
    fomart
    len 测量长度,个数。

list:
    增:
        append() 追加。
        insert() 插入,指定位置。
        extend() 迭代着追加。
    删:
        pop 按照索引,下标。有返回值。
        remove,按照元素删除。
        del:
            1,按照索引删除。
            2,按照切片删除。
        clear:清空。
    改:
        索引:
            li[1] = 666
        切片:
            li[1:4] = '1234'

    查:
        索引查,切片,for循环。

字典:dic = {'name':’老男孩','age':45}
    增:
        1,setdefault:如果存在,则不变,否则,添加。
        2,dic['key1'] = 'value1' 有则替换,无则添加。
    删:
        pop 按照键删除,有返回值。
        popitem 随机删除。
        clear清空。
        del 按照键去删除。
    改:
        update:覆盖添加
        dic['key1'] = 'value1'
    查:
        dic.get()
        dic['key1']
        dic.keys() dic.values() dic.items()
id  is  ==

猜你喜欢

转载自blog.csdn.net/qq_40585450/article/details/79885012