second day--数据类型

Posted yuyou123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了second day--数据类型相关的知识,希望对你有一定的参考价值。

一、int

# bit_length表示二进制的有效位数
i1=3
i2=4
print(i1.bit_length(),i2.bit_length()) #2 3

 二、bool

技术分享图片
"""
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))  #1
# print(bool("")) # False
bool

三、str

1.索引、切片、步长
技术分享图片
1 # s=python自动化运维21期
2 # s1=s[0:6]
3 # print(s1)
4 # s2=s[-1:-5:-1]
5 # print(s2)
6 # s3=s[::2]
7 # print(s3)
切片

注意:

#切片
# s[起始索引:结束索引+1:步长]
# s1 = s[:6] #顾头不顾腚

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

2.字符串方法

1.首字母大写,其他字母小写
技术分享图片
1 s = oldBoy
2 # * capitalize 首字母大写,其他字母小写
3 # s1 = s.capitalize()
4 # print(s1)
capitalize

    2.全部大写upper() 全部小写lower()

技术分享图片
1 # code = QeAr.upper()
2 # your_code = input(请输入验证码:).upper()
3 # if your_code == code:
4 #     print(验证成功)
View Code

    3.大小写反转 swapcase()

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

技术分享图片
1 *非字母的元素隔开的每个单词首字母大写 title()
2 # s = alex wusir*oldboy3taibia
3 # s5 = s.title()  # Alex Wusir*Oldboy3Taibia
4 # print(s5)
title

5.center 居中,长度自己设定,默认填充物None,也可指定

技术分享图片
1 s6 = s.center(30)
2 # s6 = s.center(30,"*")
3 # print(s6)
title

6.startswith endswith 判断不同的业务逻辑

技术分享图片
1 s = oldBoy
2 # *** startswith endswith
3 # s7 = s.startswith(o)
4 # s7 = s.startswith(ol)
5 # s7 = s.startswith(oldBoy)
6 # s7 = s.startswith(Bo,3,5)
7 # print(s7)
View Code

7.strip 去掉收尾空格!!! 制表符 \t 换行符\n

# 用途:验证误输入空格,input(‘>>>: ‘).strip()
# 去想去的任何元素;;;迭代去重,包含就去掉
# 只去前面:lstrip() 只去右边rstrip()
技术分享图片
# s = tyoyldBoyrte
# *** strip 去除首尾的空格,制表符\t,换行符。不仅仅是去除空格....
#lstrip() rstrip()
# print(s)
# s8 = s.strip()
# print(s8)
# s81 = s.strip(t)
# print(s81)
# s81 = s.strip(tey)
# print(s81)

# name = input(>>>).strip()
# if name == oldboy:
#     print(验证成功)
strip 
8.s.split() very imporant str----> list
# 可以任何形式隔开 被隔元素清除,注意例子中空字符
# 可设置次数切割
技术分享图片
 1 #*** split  (str ---> list)
 2 # s1 = oldboy,wusir,alex
 3 # s = oldboywusiroalex
 4 # l = s.split()
 5 # print(l)
 6 # l = s1.split(,)
 7 # print(l)
 8 # l2 = s.split(o)  # [‘‘, ldb, ywusir, alex]
 9 # print(l2)
10 
11 # l2 = s.split(o,1)  # [‘‘, ldboywusiroalex]
12 # print(l2)
split
9.join   字符串类型的     iterable 可迭代的
# 可操作字符串、元祖、列表
# s1=‘+‘.join(s)
# 例子,,,list--->str
技术分享图片
# s = oldBoy
#join 将list --->str
# s9 = +.join(s)
# s9 = _.join(s)
# print(s9)
# l1 = [oldboy,wusir,alex]
# s91 = _.join(l1)
# print(s91)
join
10.replace 替换
技术分享图片
# s = 大铁锤fdsalj铁锤妹妹范德萨
# #replace
# s10 = s.replace(铁锤,钢蛋)
# print(s10)
replace
11.find 通过元素找索引,找不到返回-1 较好
# 返回正向索引
# index 通过元素找索引 ,找不到会报错
技术分享图片
s = oldBoy
#find 通过元素找索引  找不到返回-1
# index 通过元素找索引 找不到报错
# ind = s.find(d)
# print(ind)
# ind = s.find(o)
# print(ind)
# ind = s.find(A)
# print(ind)
# ind = s.index(A)
# print(ind)
find
12.格式化输出format
技术分享图片
#格式化输出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)
format
13.公共方法:   len    count
# [] ,() ,str都可用
技术分享图片
# s = fdsafsdagsdafjdskahdhjlsadhfkj
# print(len(s))
# s = fdsadd
# print(s.count(d))
View Code
14.is系列
# name=‘lijie123‘
# print(name.isalnum()) #字符串由字母或数字组成
# print(name.isalpha()) #字符串只由字母组成
# print(name.isdigit()) #字符串只由数字组成
技术分享图片
# name = jinxin123
# print(name.isalnum()) #字符串由字母或数字组成
# print(name.isalpha()) #字符串只由字母组成
# print(name.isdigit()) #字符串只由数字组成
# i = 123a
# if i.isdigit():
#     i = int(i)
# else:
#     print("输入有误...")
View Code

四、list

存储大量的数据类型
1.有序、索引、切片
技术分享图片
# li = [111,alex,222,wusir]
# print(li[1])  # alex
# print(li[-1])  # wusir
# print(li[:2])  # [111, alex]
# print(li[:3:2])
View Code

2.增--append()、insert、extend

技术分享图片
 1 l = [老男孩, alex, wusir, taibai, ritian]
 2 #  增
 3 # append()在最后增加
 4 # l.append(dg)
 5 # print(l)
 6 # # insert插入,可指定位置
 7 # l.insert(1,zz)
 8 # print(l)
 9 # extend 迭代着增加  分解着添加
10 # l.extend([1,2,3,4])
11 # print(l)
list add

3.删除--pop、remove、clear、del

技术分享图片
 1 # # #删
 2 # # pop() 有返回值,按照索引去删除,返回删除的内容
 3 # l.pop(1)
 4 # print(l)
 5 # # remove()  按照元素去删除
 6 # l.remove(wusir)
 7 # print(l)
 8 # # clear 清空列表内容
 9 # l.clear()
10 # print(l)
11 # del l,在内存中删除列表  ;按索引删除
12 # del l
13 # print(l)
14 # 切片删除 del l[:3]  #删除列表中前三个元素
15 # del l[1:3]
16 # print(l)
list--删除

4.改--按索引、按切片

技术分享图片
# #改
# 按照索引改l[2]=123
# l[1]=123
# print(l)
# 按照切片去改:切片内容删除+以最小元素增加
# l[1:3]=ale
# print(l)
list--改

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

技术分享图片
l = [老男孩, alex, wusir, taibai, ritian]
# # 查
# 按照索引查询
# 按照切片查询
# 循环
for i in l:
    print(i)
list--查

6. 其它方法:

# 1.count计数
# 2.len()长度
# 3.index 通过元素找索引 ,第一个就返回
# 4.sort()从小到大排序
# sort(reverse=True) 从大到小排序
# 5.reverse() 倒序
技术分享图片
l=[1,2,1,4,6,2,5,7]
# print(l.count(3))
# print(len(l))
# print(l.index(2))
# l.sort()
# print(l)
# l.sort(reverse=True)
# print(l)
print(l.reverse())  #None
l.reverse()
print(l)
View Code

7.列表的嵌套

技术分享图片
# l1 = [1, 2, alex, wusir,[oldboy, ritian, 10], 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,将10通过数字相加,或者字符串相加或者等等,变成100
# l1[-2][-1] = str(l1[-2][-1] + 90)
# print(l1)

# l1[-2][-1] = str(l1[-2][-1]) + 0
# print(l1)
练习

五、dict

1.字典的key是唯一的。

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

2.增--直接添加或setdefault

技术分享图片
增 、
# dic[sex]=male
# dic.setdefault(name,123)
# print(dic)
# dic[high]=180   #有则覆盖,无则添加
# dic.setdefault(name,)  #有则不变,无则添加
dic-增

3.删---pop、clear、popitem、del

技术分享图片
# # 删、
# dic.pop(name)    有返回值,对应的值
# dic.pop(name1,None)
# dic.clear()
# del dic
# print(dic)
#
# dic.clear()     #清空

# del dic     #删除,,,
# # 按照键去删除
# del dic[age]
#
# dic.popitem() 随机删除,有返回值,返回删除的内容,放在元祖中
# dic.pop(name1,没有)
# print(dic)
# dic.pop(name1,没有此key)   #常用,避免报错
dic--删除

4.改---直接修改,update

技术分享图片
# 改
# dic[name] = 老男孩
# print(dic)

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

5.查---get

技术分享图片
#查
# print(dic[name2])
# print(dic.get(name))
# print(dic.get(name1))
# print(dic.get(name1,没有此key,sb))
字典--查

6.keys() values() items()三种方法

技术分享图片
#keys() values() items()
# print(list(dic.keys()))
# for i in dic.keys():
#     print(i)

# print(dic.values())
# for i in dic.values():
#     print(i)

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

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


#分别赋值
# 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)

# len(dic)   键值对的个数

# fromkeys      创建字典

dic1 = dict.fromkeys(abc,张三)
dic2= dict.fromkeys([1,2,3],李四)
print(dic1)

#注意:全部都追加
# dic3 = dict.fromkeys(abc,[])
# # print(dic3)
# dic3[a].append(老男孩)
# print(dic3)
View Code

7.字典的嵌套

技术分享图片
 1 dic = {
 2     name_list:[b哥, 张帝, 人帅, kitty],
 3     老男孩:{
 4         name:老男孩,
 5         age: 46,
 6         sex: ladyboy,
 7     },
 8 }
 9 #1,[b哥, 张帝, 人帅, kitty]追加一个元素,骑兵
10 # dic[name_list].append(骑兵)
11 # print(dic)
12 #2,将kitty全部变成大写。
13 # l1 = dic[name_list]
14 # print(l1[-1].upper())
15 # l1[-1] = l1[-1].upper()
16 # print(dic)
17 # dic[name_list][-1] = dic[name_list][-1].upper()
18 # print(dic)
19 
20 #3,将老男孩 改成oldboy。
21 # dic[老男孩][name] = oldboy
22 # print(dic)
23 #,将ladyboy首字母大写。
24 # dic[老男孩][sex] = dic[老男孩][sex].capitalize()
25 # print(dic)
练习

六、tuple

# 元祖  主要用于查 ;儿子不能改,孙子级别可以修改
# 索引、切片、步长
#索引index
# count len
技术分享图片
# tu = (11,2,True,[2,3,4],alex)
# # for i in tu:
# #     print(i)
# # print(tu[1])
# # print(tu[:3:2])
# # print(tu.index(True))
# # print(tu.count(2))
# # print(len(tu))
# tu[-2].append(666)
# print(tu)
View Code

七、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.增--add,update(以小元素的方式增)无序

技术分享图片
# set1 = {alex,wusir,ritian,egon,barry}
# 增
# set1.add(666)
# print(set1)

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

2.删---remove、pop、clear、del   set删除不常用

技术分享图片
#删
# set1 = {alex,wusir,ritian,egon,barry}

# set1.remove(alex)  # 删除一个元素
# print(set1)

# set1.pop()  # 随机删除一个元素
# print(set1)
#
# set1.clear()  # 清空集合
# print(set1)
#
# del set1  # 删除集合
# print(set1)
set---删除

3.集合间操作

交集&  并集 |   差集-  反交集^    子集和超集

技术分享图片
 1 set1 = {1,2,3,4,5}
 2 set2 = {4,5,6,7,8}
 3 
 4 #交集 &  intersectio
 5 # print(set1 & set2)
 6 # print(set1.intersection(set2))
 7 
 8 #并集 |   union
 9 # print(set1 | set2)
10 # print(set1.union(set2))
11 
12 #差集  -  difference
13 # print(set1 - set2)
14 # print(set1.difference(set2))
15 
16 #反交集 ^ symmetric_difference
17 # print(set1 ^ set2)
18 # print(set1.symmetric_difference(set2))  # {1, 2, 3, 6, 7, 8}
19 # set1 = {1,2,3}
20 # set2 = {1,2,3,4,5,6}
21 
22 # print(set1 < set2)
23 # print(set1.issubset(set2))  # 这两个相同,都是说明set1是set2子集。
24 
25 # print(set2 > set1)
26 # print(set2.issuperset(set1))
View Code

4.frozenset不可变集合,让集合变成不可变类型。

s = frozenset(‘barry‘)
print(s,type(s))  # frozenset({‘a‘, ‘y‘, ‘b‘, ‘r‘}) <class ‘frozenset‘>

 八、数据类型补充

#再循环一个列表时,不要对列表进行删除的动作(改变列表元素的个数动作),会出错

# dict 再循环字典时,不要改变字典的大小。

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

技术分享图片
 1 l1 = [alex, wusir, taibai, barry, 老男孩]
 2 #删除奇数位   正确
 3 # del l1[1::2]
 4 # print(l1)
 5 
 6 
 7 #再循环一个列表时,不要对列表进行删除操作(改变列表元素个数),会出错
 8  #error 9 # for i in l1:
10 #     if l1.index(i)%2==1:
11 #         del l1[l1.index(i)]
12 # print(l1)
13 #
14 # for i in range(len(l1)) :
15 #     if i%2==1:
16 #         del l1[i]
17 # print(l1)
18 #
19 #可采用倒着删除    --20 # for i in range(len(l1)-1,-1,-1):
21 #     if i%2==1:
22 #         del l1[i]
23 # print(l1)
24 #
25 
26 #range 可定制的数字列表
27 # for i in range(10):
28 #     print(i)
29 # for i in range(1,10):
30 #     print(i)
31 # for i in range(1,10,2):
32 #     print(i)
33 
34 # for i in range(10,1,-1):
35 #     print(i)
36 #删除含k元素的键值对
37 #再循环字典时,不要改变字典的大小(增加或删除)
38 dic = {k1:v1,k2:v2,k3:v3,r:666}
39 
40 l1 =[]
41 for i in dic:
42     #print(i)
43     if kin i:
44         l1.append(i)
45 for i in l1:
46     del dic[i]
47 print(dic)
48 
49 
50 #如果元祖里面只有一个元素,并且没有,隔开,那么数据类型与该元素一致
51 # tu1 = (1)
52 # print(tu1,type(tu1))
53 # tu2 = (alex)
54 # print(tu2,type(tu2))
55 #
56 # tu3 = ([alex,1,2])
57 # print(tu3,type(tu3))   #[alex, 1, 2] <class list>
View Code

九、小数据池

    python中存在小数据池: str int

int -5~256  内的相同的数,全都指向一个内存地址,节省空间

str 单个字符*20以内都是同一个内存地址,只要字符串中含有非字母元素,那就不是一个内存地址
技术分享图片
#id == is
# a = alex
# b = alex
# print(a == b)  # 数值
# print(a is b)  # 内存地址
# print(id(a))

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

十、深浅copy

赋值运算,它们共用一个内存空间
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
技术分享图片
 1 #深浅copy
 2 #赋值运算,它们共用一个列表
 3 # a = [1,2,3]
 4 # b = a
 5 # a.append(666)
 6 # print(a,b)
 7 
 8 #浅copy
 9 # l1 = [1,2,3]
10 # l2 = l1.copy()
11 # l1.append(666)
12 # print(l1,l2)
13 # print(id(l1),id(l2))
14 
15 # l1 = [1,2,3,[22,33]]
16 # l2 = l1.copy()
17 # l1[-1].append(666)
18 # print(l1,l2)
19 # print(id(l1[-1]),id(l2[-1]))
20 
21 #对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,
22 # 指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性
23 
24 #深copy 对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
25 # import copy
26 # l1 = [1,2,3,[22,33]]
27 # l2 = copy.deepcopy(l1)
28 # l1[-1].append(666)
29 # print(l1,l2)
30 # print(id(l1[-1]),id(l2[-1]))
copy

十一、编码

字符编码
1.不同编码的二进制是不能互相识别的
2.python3x str内部编码方式(内存)为unicode
但是,对于文件的存储和传输,不能用unicode---浪费空间
bytes 内部编码方式(内存)为非unicode(utf-8,gbk)


转化:
s=‘lijie‘
s2=s.encode(‘utf-8‘) #编码 str---->bytes
s3=s.encode(‘gbk‘)
print(s2)

ss=s2.decode(‘utf-8‘) #解码 bytes--->str
技术分享图片
 1 #对于英文
 2 # s = laonanhai
 3 # print(s,type(s))
 4 #
 5 # s1 = blaonanhai
 6 # print(s1,type(s1))
 7 
 8 #对于中文:
 9 # s = 中国
10 # print(s,type(s))
11 #
12 # s1 = b\xe4\xb8\xad\xe5\x9b\xbd
13 # print(s1,type(s1))
14 
15 #转化
16 # s = laonanhai
17 # s2 = s.encode(utf-8)  #str -->bytes encode 编码
18 # s3 = s.encode(gbk)
19 # print(s2,s3)
20 # s = 中国
21 # s2 = s.encode(utf-8)  #str -->bytes encode 编码
22 # # s3 = s.encode(gbk)
23 # # print(s2)  #b\xe4\xb8\xad\xe5\x9b\xbd
24 # # print(s3)   #b\xd6\xd0\xb9\xfa
25 # ss = s2.decode(utf-8)  # bytes ---> str decode 解码
26 # print(ss)   #中国
编码

 

 

 

 

 

 
 
 

 














































以上是关于second day--数据类型的主要内容,如果未能解决你的问题,请参考以下文章

如何从INTERVAL类型转换为NUMBER类型

1 代码片段1

Python Second Day

pandas使用dt.year(month/day/hour/minute/second)函数抽取dataframe日期数据列对应的年月日时分秒信息

day06-jsp

Python 时间格式 => [days:hours:minutes:seconds] 到秒