第5天数据类型之整形,字符串和列表

整形(不可变,存储一个值)

对于int类型的解释

把一个数字或者字符串转换成整形,如果没有参数就返回0,如果参数是一个数字,那么就不变。对于浮点型,会自动省略小数点后面的值
Convert a number or string to an integer, or return 0 if no arguments are given. If x is a number, return x.__int__(). For floating point numbers, this truncates towards zero.
     # 这个主要说的是进制转换的方法,默认base为10是十进制的 If x
is not a number or if base is given, then x must be a string, bytes, or bytearray instance representing an integer literal in the given base. The literal can be preceded by '+' or '-' and be surrounded by whitespace. The base defaults to 10. Valid bases are 0 and 2-36. Base 0 means to interpret the base from the string as an integer literal. >>> int('0b100', base=0) 4 # (copied from class doc)

赋值操作

number = 10  # python在声明变量的时候不需要声明变量的类型,会进行自动的转换,其实这个就是执行了number = int(10) 

转换操作,如下图所示,如果转换的是number,int括号里面可以为整形也可为浮点型,如果转换的是str,括号里面的字符串必须只能包含整数,负责会报错。如果int里面什么都没有,会返回0。

十进制转换成其他进制的方法

# 系统自带的一写内置函数会给我们用来对十进制到其他进制的转换
print
(bin(256)) # 十进制转换成二进制 print(oct(256)) # 十进制转换成八进制 print(hex(256)) # 十进制转换成十六进制

其他进制转换成十进制的方法

# 其他进制转换成字符串的时候传入的第一个参数必须是字符串类型
# 第一个参数代表的是多少进制的数,后面的参数代表的是进制
print(int('56', 10)) # 10进制的数56要转换成10进制 print(int('0101', 2)) # 二进制的数0101要转换成10进制 print(int('56', 8)) # 八进制的数56要转换成十进制 print(int('56', 16)) # 16进制的数56要转换成十进制

 

浮点型(不可变,可存储一个值)

python关于浮点型的解释

# 和整形其实是一样的,如果可以转换就用来转换一个数字和字符串为浮点型的数据
Convert a string or number to a floating point number, if possible.

浮点型的赋值操作

float_number = 1.2

浮点型的转换操作,转换操作大部分和int是类似的,不同的是float里面字符的可以是浮点型的.当传递的值为空的时候返回为0.0 。

 

字符串(不可变,有序,可存储多个值)

取值和切片

从前往后面进行取值和切片的,取值就是根据字符串的索引来取的,字符串的切片默认取左不取右的,例如图中的s[0::1]和s[0:-1:1]通过结果可以看出来,s[0:-1:1]是取不到最后一个字符的

除了从前往后取值之外,还有从后往前取值的,很简单,就是步长变成负的就可以了,但是要强调的一点是s[参数一:参数二: 参数三]中的三个参数是有一定的逻辑的,当参数一:参数二本身是从前往后的话,参数三就必须是正数,当参数一到参数二是从后往前的话,参数三就必须是复数了。否则是取不到值的。如下图所示:0: -1 是从前往后的,但是参数三却是-1,-1:0是从后往前的,但是参数三确实1,所以取不到数据。

 

strip方法:(lstrip去除左边的指定字符,rstrip去除右边的指定字符)

# strip就是去除字符串两边的指定的字符
s1 = 'hello, world, 胡 '
a = s1.strip() # 默认为去除字符串两边的空格
print(a)
s2 = '*h^ello, wor,ld, , 胡*'
a = s2.strip(' ,,*胡')   # 只要是有的字符都会去除,只有等到没有了才会停止
print(a)
s2.strip("") # 这个会返回一个原来的字符串

split方法:(可以看作是str转化成列表的方法), rsplit从右边开始切片

#split分割会返回一个里面都是字符串的列表
s = '*hello**world*nihao*'
s1 = s.split('*')     #从左往右以*分割
print(s1)
s2 = s.split('**')  # 从左往右以**分割
print(s2)
s3 = s.split('*', 2)  # 从左往右以*为分割点分割两次
print(s3)

# 运行结果:
['', 'hello', '', 'world', 'nihao', '']   
['*hello', 'world*nihao*']
['', 'hello', '*world*nihao*']

print(s.split(""))  # 和strip不一样,这样子写会报错

join方法(列表,元祖,字典转换成str的方法)

join可以拼接一个可迭代对象,例如列表,元祖,字典,集合等,但是无论是哪种类型,里面的值必须是字符串类型的才可以进行拼接,否则会报错。

 

endswith, startwith

s = 'hello, world'
print(s.endswith('d', 0, -1))     # 从0到-1结束是否是以d结尾的
print(s.startswith('h', 0, -1))    # 从0到-1结束是否是以d开头的

# 结果:
False
True

replace 替换方法

s = 'hello, hh '
r = s.replace('h', 'H', 2)  # 参数一为旧的,参数二为新的,参数三为替换的个数
print(r)

upper和lower方法

# upper全部变成大写,lower全部变成小写
a = 'hello, World! 中国 ' print(a.upper()) print(a.lower()) # 显示结果: HELLO, WORLD! 中国 hello, world! 中国

format方法

有了%的格式化输出为什么还要format呢?如下图,用%格式化写起来就比较麻烦了,而且还要对准位置。

a = '''
你好,{name},你今年{age}了。
你好,{name},你今年{age}了。
你好,{name},你今年{age}了。
你好,{name},你今年{age}了。
'''.format(name='hu', age=123)
print(a)

index, find, rfind, rindex位置查询

# index, find  都是字符所在的位置,index找不到的时候会报错,find找不到的时候返回-1, 因此以后呀多用find,少用index
s = 'hello, world!'
res1 = s.index('h', 0, 6)
res2 = s.find('h', 0, 6)
res3 = s.find('h0', 0, 6)
print(res1, res2, res3)
res4 = s.index('ho', 0, 6)

# rfind和rindex其实就是在寻着索引的时候有时候会遇到多个,rfind和rindex其实就是去找最后一个的索引所在的位置

captilize, title,swapcase

# capptalize首字母大写,如果首字母是特殊字符就不变 title每个单词首字母大写,以特殊字符分割的都是一个单词,swapcase大小写的反转
s = 'hello*wor.ld!'
print(s.capitalize())
print(s.title())
print(s.swapcase())
# 结果展示 
Hello*wor.ld!
Hello*Wor.Ld!
HELLO*WOR.LD!

center, ljust, rjust, zfill填充

# center,ljust,rjust,zfill
s = 'hello'
print(s.center(6, '*'))   # 参数一代表的是长度,参数二代表的是填充的字符
print(s.ljust(10, '*'))
print(s.rjust(10, '*'))
print(s.zfill(6))

# 结果:
hello*
hello*****
*****hello
0hello

 

字符串练习题:(附答案)

# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
name = " aleX"
# 1)    移除 name 变量对应的值两边的空格,并输出处理结果
print(name.strip())
# 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果print(name.startswith('al'))
# 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果print(name.endswith('X'))
# 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
print(name.replace('l', 'p'))
# 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
print(name.split('l'))
# 6)    将 name 变量对应的值变大写,并输出结果print(name.upper())
# 7)    将 name 变量对应的值变小写,并输出结果print(name.lower())
# 8)    请输出 name 变量对应的值的第 2 个字符?
print(name[1])
# 9)    请输出 name 变量对应的值的前 3 个字符?
print(name[0:3])
# 10)    请输出 name 变量对应的值的后 2 个字符?print(name[-1:-3:-1])
# 11)    请输出 name 变量对应的值中 “e” 所在索引位置?print(name.find('e'))
# 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
print(name[0:-1])
View Code

 

列表(可变,有序,可存储多个值)

列表的创建

l = [1, 2, 3]  # ==》 l = list([1,2,3])

列表的转换

只要是可迭代类型的数据都是可以转换成列表的,例如: 元组,字典,字符串都是可以转换成列表的,但是整形和浮点型不行,因为他们不可迭代

列表的索引和切片和字符串的都是一样的,此处不再赘述。其中列表是可以通过索引进行修改数据的,但是字符串不能修改。虽然可以修改数据,但是列表却不能通过索引去添加新的值。因此需要通过方法去添加值。

列表的方法

修改法:del, append, insert, extend, remove,  pop

l = [1, 2, 3]
l.append('h')
l.append(['a', 'b', 'c'])
l.append(('a', 'b', 'c'))
l.append('str')
l.append({'a': 1})
print(l)

# 显示结果
[1, 2, 3, 'h', ['a', 'b', 'c'], ('a', 'b', 'c'), 'str', {'a': 1}]
# append把整体的一个输入追加到列表的最后
l = [1, 2, 3]
l.insert(0, 'h')
l.insert(0, ['a', 'b', 'c'])
l.insert(0, ('a', 'b', 'c'))
l.insert(0, 'str')
l.insert(0, {'a': 1})
print(l)

# 展示的结果
[{'a': 1}, 'str', ('a', 'b', 'c'), ['a', 'b', 'c'], 'h', 1, 2, 3]
# insert在指定的位置把整体的数据添加进去
l = [1, 2, 3]
l.extend('h')
l.extend(['a', 'b', 'c'])
l.extend(('a', 'b', 'c'))
l.extend('str')
l.extend({'a': 1})
print(l)

# 展示结果
# [1, 2, 3, 'h', 'a', 'b', 'c', 'a', 'b', 'c', 's', 't', 'r', 'a']
# extend会把可迭代对象一个一个的追加到列表当中
# remove, pop, del

l = ['a', 'b', 'c', 'd', 'e']
del l[0]        # 遭到列表中的值并删除掉
res = l.pop(0)  # 根据索引删除值并且有返回值的
l.remove('e')   # 根据列表中的内容删除值,没有返回值
print(l, res)

# 结果:
# ['c', 'd'] b

 

索引index  计数count(和字符串的方法是一样的)

a = [1, 2, 3, 1, 2, 3, 1, 2, 3, 4]
print(a.index(4, 0))  # 一个是取索引
print(a.count(4))    # 一个是计数

排序sort    反转reverse

sort只能排序全部都是数字或者字母的列表,否则会出现错误,反转是都可以的

 

复制copy  清空clear 

a = [1, 2, 3]
b = a.copy()     # 复制了一个a列表
print(b)
b.clear()        # 把b给清空掉
print(b)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值