一、基础数据类型操作

1、数字 int

数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:

int.bit_length() -> int
Number of bits necessary to represent self in binary.
>>> bin(37)
'0b100101'
>>> (37).bit_length()
6

2、布尔值

布尔值就两种:True,False。就是反应条件的正确与否。

真   1   True。

假   0   False。

#各种类型相互转换操作
int --> str :str(int) #int转换str
str --> int :int(str) #str转化int str必须全是整数
int --> bool #int转换为bool 0 false 非零True
bool--> int #bool转换为int, True为1, false为0
str --> bool("") #s空字符转字符串
str --> bool(" ") #空格转字符串, 非空字符串返回True

3、字符串str

3.1、字符串的索引及切片

索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。

s = 'python自动化运维21期'
s1 = s[0]
print(s1)
s3 = s[-1] #取倒一

切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。

s2 = s[:] #取全部
s4 = s[-1:-5:-1] #反向取
s5 = s[-5:0:-2]

3.2、字符串常用方法

#center
# S.center(width[, fillchar]) -> str
#fill character (default is a space)
s = 'oldboY老男孩'
s1 = s.center(30,'*')
print(s1)
#onput:**********oldboY老男孩*********** #capitalize 首字母大写,其他字母小写
#S.capitalize() -> str
s = 'oldBoy'
s1 = s.capitalize() #首字母大写,其他字母小写
print(s1)
#onput:Oldboy #upper lowser
#S.upper() -> str
#S converted to uppercase.
#S.lower() -> str
#string S converted to lowercase.
s2 = s.upper() #全部大写
print(s2)
s3 = s.lower() #全部小写
print(s3)
#output:
OLDBOY
oldboy #swapcase
#S.swapcase() -> str
s4 = s.swapcase() #大小写翻转
print(s4)
#output:OLDbOY #title
# S.title() -> str
s = 'aelx*join&jinxing)fuck'
s5 = s.title()
print(s5)
#output:Aelx*Join&Jinxing)Fuck #startswith,endswith 判断是否以该字符串开头和结尾
#S.startswith(prefix[, start[, end]]) -> bool
#S.endswith(suffix[, start[, end]]) -> bool
s7 = s.startswith('o')
print(s7)
s71 = s.startswith('ol')
print(s71)
s72 = s.startswith('l', 1)
print(s72)
s73 = s.startswith('o', 0)
print(s73)
s74 = s.startswith('l', 1, 2) #符合切片的顾头不顾尾
print(s74)
s8 = s.endswith('y') #同startswith一样
print(s8) #strip,rstrip,lstrip
#S.strip([chars]) -> str
#默认去除左右的空格、换行符、制表符,可以自定义移除的字符
s = ' \toldbboy\n'
print(s)
s9 = s.strip()
print(s9)
s91 = s.strip(' \n \t olby') #默认是去除空格,可以自定义要去除的元素
print(s91)
s92 = s.lstrip()
s93 = s.rstrip() #split
#S.split(sep=None, maxsplit=-1) -> list of strings
#默认以空格分割字符串返回list,可以自定义分隔符和分割次数
s = 'oldboy,wusire.alex'
s10 = s.split()
print(s10)
s101 = s.split('.')
print(s101)
#output:
['oldboy,wusire.alex']
['oldboy,wusire', 'alex'] #join #join可以操作list 字典,元组,可迭代的对象都可以
#列表可以转换为字符串
#S.join(iterable) -> str
s = 'oldboy'
l = ['alex', 'taibai', 'nan']
s11 = '+'.join(s)
print(s11)
s111 = ','.join(l) #列表中是非字符串元素的话会报错,
print(s111)
#output:
o+l+d+b+o+y
alex,taibai,nan #replace
#S.replace(old, new[, count]) -> str
s12 = s.replace('oldbou', 'oldboy', 1)
print(s12)
#output:alex,oldboy,taibai,oldbou #find index #通过元素找到索引
S.find(sub[, start[, end]]) -> int
S.index(sub[, start[, end]]) -> int
print(s.find('o'))
print(s.index('o'))
#output:
5
5 #公共方法:len count
print(len(s))
print(s.count('o'))
#output:
25
4 #is系列
S.isalnum() -> bool
S.isalpha() -> bool
S.isdigit() -> bool
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成

3.3、format格式化输出

#格式化输出format
res = '我叫{} 今年{}岁,爱好{}'.format('alex', 30, 'nan')
print(res)
res = '我叫{0} 今年{1}岁,爱好{0}'.format('alex', 30, 'nan')
print(res)
res = '我叫{name} 今年{age}岁,爱好{hobby}'.format(name= 'alex', age = 30, hobby = 'nan')
print(res)
#output:
我叫alex 今年30岁,爱好nan
我叫alex 今年30岁,爱好alex
我叫alex 今年30岁,爱好nan

4、列表list

list:存储大量数据,列表是有序的,有索引值,可切片,方便取值。

4.1、增

#append
#L.append(object) -> None -- append object to end
l = ['oldboy', 'alex', 'taibai']
l.append('nvshne')
l.append([1,2,3])
print(l) #insert
#L.insert(index, object) -- insert object before index
l.insert(1, 'dc')
print(l) #迭代增加
#L.extend(iterable) -> None -- extend list by appending elements from the iterable
l.extend('alex')
print(l) #output:
['oldboy', 'alex', 'taibai', 'nvshne', [1, 2, 3]]
['oldboy', 'dc', 'alex', 'taibai', 'nvshne', [1, 2, 3]]
['oldboy', 'dc', 'alex', 'taibai', 'nvshne', [1, 2, 3], 'a', 'l', 'e', 'x']

列表的增

4.2、删

#pop 增删改查唯一有返回值的方法
#L.pop([index]) -> item -- remove and return item at index (default last).Raises IndexError if list is empty or index is out of range.
l.pop(0)
print(l)
print(l.pop()) #remove 按照元素去删除
#L.remove(value) -> None -- remove first occurrence of value.
#Raises ValueError if the value is not present.
print(l.remove('alex'))
print(l) #clear 清空列表
#L.clear() -> None -- remove all items from L
l.clear()
print(l) #del 内存中删除列表
del l
print(l) #按照索引/切片删除
del l[-1]
print(l) del l[:]
print(l) del l[0:2]
print(l)

列表的删

4.3、改

#改 只有两种方法
#按照索引改
print(l)
l[0] = 'oldgirl'
print(l) #按照切片改
l[:1] = 'abc' #迭代操作
print(l)

列表的改

4.4、查

#按照索引,切片,for循环来查

列表的查


4.5、公共方法

#公共方法
#len count #根据元素找到索引
# print(l.index('oldboy')) #排序sort
# l.sort() #倒序
# print(l.sort(reverse=True))
# print(l)

5、字典dic

存储大量数据,关联型数据,查询速度快,符合二分查找

字典的key是唯一的,必须是不可变的数据类型(可哈希):str bool int tuple
value: 任意数据类型。
数据类型分类:
不可变的数据类型(可哈希)
可变的数据类型:list dict set
容器数据类型:list tuple dict set

5.1、增

dic = {'name': 'alex', "age": 20, 'hobby': 'girl' }
#增
dic['high'] = 180
print(dic) #有则覆盖,无则添加
dic['name'] = 'ritian'
print(dic) #有则不变,无则添加
""" D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D """
dic.setdefault('high', 170)
print(dic)

字典的增

5.2、删

#字典的所有操作都是通过key来操作value的
dic.pop('name')
print(dic.pop('name1', "none")) #没有找到要删除的key,返回none,可以自定义
print(dic) dic.cler() #清空
del dic #内存中删除字典
print(dic) del dic['name'] #del也可以按照key来删除
print(dic) print(dic.popitem()) #随机删除

字典的删

5.3、改

dic['name'] = 'oldboy'
print(dic)
dic1 = {'name': 'alex', "age": 20, 'hobby': 'girl' }
dic2= {'name': 'jin', 'high': 150}
dic1.update(dic2) #把dic2的内容更新到dic1中,有则覆盖,无则添加
#D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
print(dic1)

字典的改

5.4、查

print(dic['name'])
#通过key查询,没有对应key的话会返回报错
dic.get('name')
#这个查询较好,没有对应key不会报错

字典的查

5.5字典的循环

# #keys() values() items() 可以通过list转换为列表,或者直接for循环取值
# print(dic.keys())
# print(dic.values())
# print(dic.items())

5.6 fromkeys创建字典

#value如果是list的话,list会指向一个地址
dic = dict.fromkeys(['alex', 'taibai', 'jinxing'], ['', '', ''])
print(dic)
dic['alex'].append('')
print(dic)

6、元组 tuple

只限于子级别只读
([True,1, 'alex', {字典}, [], (), {集合}])

7、集合 set

关系型数据的交集,并集,差集,子集..列表去重
无序,不重复的数据类型,里面的元素是不可变(可哈希的)
集合本身是可变的,
1、关系测试,
2、去重(列表)

7.1、增

# set1 = {1, 'alex', '2'}
# print(set1)
# #增
# set1.add(2)
# print(set1)
# #update 迭代的增
# set1.update('456')
# print(set1)

7.2、删

# #remove 按照元素删除
# set1.remove('2')
# print(set1)
#
# #清空列表
# set1.clear()
#
# #内存删除
# del set1

7.3关系测试

# set1 = {1, 2, 3, 4, 5}
# set2 = {4, 5, 6, 7, 8}
# #交集
# print(set1 & set2)
# print(set1.intersection(set2))
#
# #并集
# print(set1 | set2)
# print(set1.union(set2))
#
# #差集
# print(set1 - set2)
# print(set1.difference(set2))
#
# #反交集
# print(set1 ^ set2)
#
# #子集和超集
# print(set1 > set2)
# print(set1 < set2)
# #frozenset 构建一个不可变的集合
# s = frozenset('barry')
# print(s)

8、数据类型的补充

8.1、删除奇数位对应的元素

l = ['taibai', 'barry', 'allan', 'oldboy', 'alex']
# del l[1:4:2] #最简单的方法,切片删除
# print(l) # for index in range(len(l)): 可以倒着删除操作,循环一个列表时候不要对列表进行删除及添加,会改变列表元素的索引
# print(l)
# if index % 2 == 1:
# print(l.pop(index))
#
# print(l)
# for index in range(len(l)-1, -1, -1):   #倒着往前删除
# # print(index)
# if index % 2 == 1:
# l.pop(index)
# print(l)

# for index in range( -len(l) , -1+1):  #正着删除的话可以使用反向步长的方法
# # print(index)
# if index % 2 == 0:
# l.pop(index)
# print(l)
 

8.2、循环一个字典的时候不要改变字典的大小

dic = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3', 'alex': 666}
for i in dic:
if 'k' in i:
dic.pop(i) print(dic) #output:
RuntimeError: dictionary changed size during iteration
#可以把含k的key添加到list中,循环list删除字典
# l = []
# for i in dic:
# if 'k' in i:
# l.append(i)
# for i in l:
# dic.pop(i)
# print(dic)
#如果元组里面只有一个元素,并且没有逗号隔开,他的元素类型与该元素一直
tu1 = (1)
print(tu1, type(tu1)) tu2 = (1,)
print(tu2, type(tu2)) #output:
1 <class 'int'>
(1,) <class 'tuple'>

9、小数据池

# a = 'alex'
# b = 'alex'
# print(a==b) #比较数值
# print(a is b) #比较内存地址 # id打印内存地址,涉及到id的测试一定要在终端操作
# 小数据池只针对str 和int # int 范围 -5 ~ 256 在这个范围内相同的数全都指向一个内存地址(为了节省空间)
# str 单个字符*int 不能超过21

10、编码

#编码
#python 字符串内存编码为(unicode) 计算机存储和传输需要以非unicode的编码,需要先转换为bytes存储或者传输
#bytes 类型
#对于英文
# s = 'laonanhai' #表现形式,内部编码方式unicode
# print(s, type(s))
#
# s = b'laonanhai' #内部编码形式为非unicode
# print(s, type(s)) #对于中文
# s = '中文'
# print(s)
# print(s.encode('utf-8'))
# print(s.encode('gbk'))
#
# #转换为bytes类型
# print(s.encode('utf-8')) #str-->bytes类型 encode编码
# print(s.encode('gbk'))
#
# #转换str类型
# s2 = b'\xd6\xd0\xce\xc4' #bytes-->str类型, decode解码
# print(s2.decode('gbk'))
# print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8'))
#
# # utf-8的bytes类型转换为gbk的bytes类型
# print(b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8').encode('gbk'))

输出:

day2(基础数据类型)的更多相关文章

  1. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  2. TypeScript学习指南第一章--基础数据类型(Basic Types)

    基础数据类型(Basic Types) 为了搭建应用程序,我们需要使用一些基础数据类型比如:numbers,strings,structures,boolean等等. 在TypeScript中除了Ja ...

  3. 【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张

    自从苹果宣布swift之后,我一直想了解,他一直没有能够把它的正式学习,从今天开始,我会用我的博客来驱动swift得知,据我们了解还快. 1.定义变量和常量 var  定义变量,let定义常量. 比如 ...

  4. 二、Windows基础数据类型

    六.Windows Data Types 简介: 6.1.这些数据类型都是C语言数据类型的再次的进行包装. 6.2.因为考虑到如果使用的是C中的基础数据类型可能无法表示,想表示的精准的含义. 6.3. ...

  5. java基础数据类型包装类

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  6. java.lang基础数据类型boolean、char、byte、short、int、long、float、double (JDK1.8)

    java.lang.Boolean public static int hashCode(boolean value) { return value ? 1231 : 1237; } JDK 1.8新 ...

  7. Python基础数据类型之列表和元组

    一.列表   list 列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如: li ...

  8. Python基础数据类型之字典

      基础数据类型之字典 ps:数据类型划分:可变数据类型和不可变数据类型. 不可变数据类型:元组(tupe).布尔值(bool).整数型(int).字符串(str).不可变数据类型也称为可哈希. 可变 ...

  9. Python基础数据类型之集合以及其他和深浅copy

    一.基础数据类型汇总补充 list  在循环一个列表时,最好不要删除列表中的元素,这样会使索引发生改变,从而报错(可以从后向前循环删除,这样不会改变未删元素的索引). 错误示范: lis = [,,, ...

随机推荐

  1. 解决Eclipse添加新server时无法选择Tomcat7的问题

    在Eclipse中创建了一个Web工程后,需要将该工程部署到Tomcat中进行发布.有时就会遇到在New Server对话框中选择了Tomcat 6/7后却无法单击“Next”按钮的问题,如下图所示: ...

  2. ios 错误纪录

    .self.出不来的原因 Member reference type 'struct objc_class *' is a pointer; maybe you meant to use '-> ...

  3. ubuntu启动进程笔记

    --防止程序随着web终端一起被关闭方法: 1.Screen -ls 查看当前进程2.Screen -S XX XX是自定义的进程名回车完 进入这个进程,在这个进程里面 可以启动 程序 3.正常返回: ...

  4. netcore webapi 用户 'IIS APPPOOL\无托管代码' 登录失败

    配置在iis上,除了环境配置错误的原因还有一种可能是连接字符串的问题,iis要求使用sql server的sa或者其他登录用户. ps:连接字符串:  "Default": &qu ...

  5. c#一个统计运行时间方法

    public string STD(int HowManySecond) { ) { "; } string ShowStr = ""; * )) { ShowStr + ...

  6. oracle 单表导出导入

    exp username/password@服务名 file=d:\daochu.dmp tables=(tableneme,...)

  7. PAT 1088 三人行(20 分)(暴力破解+流程分析)

    1088 三人行(20 分) 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 ...

  8. linux中的设备类型

    loop设备 loop设备 一.参考命令[root@localhost a]# losetup usage:  losetup loop_device                          ...

  9. Yii2-设置和获取、删除Cookies空值分析(有代码)

    Yii2-设置和获取,删除Cookies空值或值没有变化 原因: 1.不要使用相同的request url, 否则需要刷新才能获取值 可在不同的动作中设置和调用 2.不要在函数中使用exit来中止脚本 ...

  10. Luogu1501 Tree II - LCT

    Code #include<cstdio> #include<cstring> #include<algorithm> #define rd read() #def ...