1 数据类型整体分析
int: 用于计算
bool:用于逻辑判断
str:存储少量数据,进行操作
list:存储大量数据
元组:只读list,存储大量数据
dict:字典,存储大量关系型数据
-
集合:
- 示例:
a = {1,2 34} b = {2,34,5} # 求交集{2,34} a and b # 求并集{1,2,34,5} a or b
1.1 int
i = 2
print(i.bit_length())
1.2 类型转换
# 10进制转16进制
a = hex(17)
print(a)
# str -> int
# base 10
s = '15'
i = int(s)
# base 8
s = '071'
i = int(s, 8)
# base 16
s = '0x15'
i = int(s, 16)
# int -》str
i = 1
s = str(i)
1.3 str 索引和切片
s = 'ABCDEFGHI'
# A
s1 = s[0]
# C
s2 = s[2]
# ABCD
# 切片是顾头不顾腚,加步长
# 步长为正数,从左到右
# 步长为负数,从右到左
s3 = s[:4]
# ABCDEFGHI
s4 = s[:]
s5 = s[0:]
# DCBA
S6 = S[3::-1]
# DCB
S7 = S[3:0:-1]
# DB
S7 = S[3::-2]
1.4 字符串操作
# 首字母大写
s = 'ABCdefGHI'
s1 = s.capitalize()
print(s1)
# 全大写
# 全小写
s2 = s.upper()
s21 = s.lower()
print(s2, s21)
# 大小写互换
s3 = s.swapcase()
print(s3)
# 特殊字符隔开后,首字母大写
s = 'alex,egon wusir'
s4 = s.title()
print(s4)
# 居中空白填充
s = "root"
s5 = s.center(20)
print(s5)
# “#”填充
s5 = s.center(20, '#')
print(s5)
# 字符串里有“\t”,从“\t”到右边未满足8位的补足到8位,超过8位未满16位的不足到16位
s = '1234\tABCD'
s6 = s.expandtabs()
s = '12\tABCD'
s7 = s.expandtabs()
s = '1234567\tABCD'
s8 = s.expandtabs()
print(s6)
print(s7)
print(s8)
s = '12345678\tABCD'
s9 = s.expandtabs()
s = '123456789\tABCD'
s10 = s.expandtabs()
s = '1234567890123456\tABCD'
s11 = s.expandtabs()
print(s9)
print(s10)
print(s11)
'''输出结果如下:
1234 ABCD
12 ABCD
1234567 ABCD
12345678 ABCD
123456789 ABCD
1234567890123456 ABCD
'''
# 判断字符串开头,同理endwith已什么为结尾
s = 'abcdefg'
# s作为整体
s1 = s.startswith('abc')
print(s1) # True
s11 = s.startswith('cde', 2, 5)
print(s11) # True
s12 = s.startswith('cde', 2, 4)
print(s12) # False
# 在字符串中查找索引
s = 'acedfabcabc'
s2 = s.find('abc')
print(s2) # 返回5
# 前后去空格
s = ' abc def '
s3 = s.strip()
print(s3) #输出“abc def”
# 扩展
s = '#* abc def #*'
s31 = s.strip('#*')
print(s31) # 输出“ abc def ”
s = '#* abc def #* '
s32 = s.strip('#*')
print(s32) # 输出“ abc def #* ”
# 统计次数
s = 'acedfabcabc'
s4 = s.count('abc')
print(s4) # 输出 2
# 分割
s = ';alex;wusir;taibai;'
s5 = s.split(';')
print(s5) # 输出 ['', 'alex', 'wusir', 'taibai', '']
# format的三种玩法
# 玩法1:占位,一对一顺序填入
s101 = '我叫{},今年{},爱好{},再说一下我叫{}'.format('小白', 18, '打球', '小白')
print(s101)
# 玩法2:从0开始,写上序号,按序号对应填入
s102 = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format('小白', 18, '打球')
print(s102)
# 玩法3:按参数名称对应填入
s103 = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(name='小白',\
age=18, hobby='打球')
print(s103)
#大括号是特殊转义字符,如果需要原始的大括号,用{{代替{, 用}}代替}, 如下:
'hello {{worlds in braces!}}, {name}'.format(name='zhangsan')
# 替换
s = '程序员攻城狮编程码农程序员码农IT民工'
s6 = s.replace('程序员', '工程师')
print(s6) # 默认全替换
s7 = s.replace('程序员', '工程师', 1)
print(s7) # 替换一次
# is 判断
print(s.isalnum()) # 判断字母或数字组成
print(s.isalpha()) # 判断只有字母组成
print(s.isdigit()) # 判断只有数字
1.5 技巧
- while True 和 while 1,while 1 的效率高;