2.python基础类型

int常用方法

# bit_length()二进制最少位数
>>> i = 2
>>> i.bit_length()
2
>>> i = 5
>>> i.bit_length()
3

字符串的索引和切片

  • 索引(从0开始)
>>> s = 'abcdef'
>>> s[0]
'a'
>>> s[2]
'c'
>>> s[-1]
'f'
  • 切片(索引:索引:步长 左闭右开区间)
>>> s = 'abcdef'
>>> s[0:1]
'a'
>>> s[2:5]
'cde'
>>> s[:-1]
'abcde'
>>> s[3:]
'def'
>>> s[::2]
'ace'
>>> s[-1::-1]
'fedcba'
  • str常用方法
# 首字母大写
>>> 'ret'.capitalize()
'Ret'

# 全部大写
>>> 'ret'.upper()
'RET'

# 全部小写
>>> 'Ret'.lower()
'ret'

# 大小写反转
>>> 'Ret'.swapcase()
'rET'

# 每个隔开(特殊字符或者数字)的单词首字母大写(标题)
>>> 'hello world'.title()
'Hello World'

# 判断是否是标题
>>> 'Little Title'.istitle()
True

# 居中,填充字符
>>> 'ret'.center(9)
'   ret   '
>>> 'error'.center(11, '*')
'***error***'

# 填充
>>> 'ret'.ljust(5, '*')
'ret**'
>>> 'ret'.rjust(5, '*')
'**ret'
>>> 'ret'.zfill(5)
'00ret'

# 连接
>>> '-'.join('123')
'1-2-3'

# 根据对应关系进行替换
>>> m = str.maketrans('aeiou', '12345')
>>> v = 'adkfesd;faisdfjskufjks'
>>> v.translate(m)
'1dkf2sd;f13sdfjsk5fjks'

# \t之前的字符不足8位补空格(默认),超过8位再补8位
>>> 'ret\tter'.expandtabs()
'ret     ter'
>>> 'ret\tter'.expandtabs(5)
'ret  ter'

# 以什么开头
>>> 'retter'.startswith('ret')
True
>>> 'ret'.startswith('ret', 0, 2)
False

# 以什么结尾
>>> 'retter'.endswith('ter')
True

# 查找在序列中的位置
>>> 'retter'.find('t')
2
>>> 'retter'.find('e', 3, -1)
4
>>> 'retter'.find('a')
-1

# 查找在序列中的位置(找不到报错)
>>> 'retter'.index('e')
1

# 去除空格
>>> '  ret  '.strip()
'ret'
>>> '  ret  '.lstrip()
'ret  '
>>> '  ret  '.rstrip()
'  ret'

# 去除左右指定字符
>>> '*ret%'.strip('*')
'ret%'
>>> '*r*et%'.strip('%*')
'r*et'
>>> ' *ret % '.strip(' %*')
'ret'

# 计数
>>> 'retter'.count('t')
2

# 分割(不包含分割的元素)
>>> 'hello world !'.split()
['hello', 'world', '!']
>>> 'aretatera'.split('a')
['', 'ret', 'ter', '']
>>> 'hello world !'.rsplit(' ', 1)
['hello world', '!']

# 分割(包含分割元素,只能分三份)
>>> 'retterabc'.partition('t')
('re', 't', 'terabc')

# 按行分割
>>> 'ret\nter\nabc'.splitlines()
['ret', 'ter', 'abc']

# 替换
>>> '   ret    '.replace(' ', '')
'ret'
>>> ' retter'.replace('t', 'e')
' reeeer'
>>> ' retter'.replace('t', 'e', 1)
' reeter'

# 判断是否由数字或字母组成
>>> 'abc'.isalnum()
True
>>> '123'.isalnum()
True
>>> 'a123'.isalnum()
True

# 判断只由字母组成
>>> 'abc1'.isalpha()
False
>>> 'abc'.isalpha()
True

# 判断只由数字组成
>>> '123'.isdecimal() # 十进制数
True
>>> '②'.isdigit() # 可以判断特殊的数字②
True
>>> '123'.isdigit()
True
>>> '一'.isnumeric() # 支持中文
True
>>> '陆'.isnumeric()
True

# 判断是否是标识符(数字、字母、下划线)
>>> '_'.isidentifier()
True
>>> '1f'.isidentifier()
False

# 判断小写
>>> 'ret'.islower()
True

# 判断是否是空格
>>> ' '.isspace()
True

# 格式化输出
>>> 'my name is {name}'.format(name='ret')
'my name is ret'
>>> 'my name is {name}'.format(**{'name': 'ret'})
'my name is ret'
>>> '{} to {}'.format('One', 'One')
'One to One'
>>> '{0}, {2}, {1}'.format('one', 'three', 'two')
'one, two, three'

公共方法

  • len计算序列长度
>>> len('ret')
3
>>> len('你好')
2
>>> len([1, 2, 3])
3
>>> len({'name': 'ret', 'gender': 'male'})
2
>>> len((1, 2))
2
>>> len({1, 2})
2
  • in、not 成员
>>> 1 in [1, 2, 3]
True
>>> 'a' in 'abc'
True
>>> 'name' in {'name': 'ret', 'gender': 'male'}
True
>>> 3 in (1, 2, 3)
True
>>> 5 not in {1, 2, 3}
True

list的索引

>>> l = ['a', 'bc', 'd']
>>> l[-1]
'd'
  • list的切片
>>> l[-1:0:-1]
['d', 'bc']
>>> l[2:]
['d']
  • list方法
# 追加
>>> l = []
>>> l.append(1)
>>> l.append('ret')
>>> l
[1, 'ret']

# 取值
>>> [1, 2, 2, 3, ['123']][4][0][1]
'2'

# 浅拷贝 
>>> [1, 2, 3].copy()
[1, 2, 3]

# 插入
>>> l.insert(0, 0)
>>> l
[0, 1, 'ret']

# 拓展
>>> l.extend('abc')
>>> l
[0, 1, 'ret', 'a', 'b', 'c']

# 删除
>>> l.pop() # 默认删除最后一个
'c'
>>> l
[0, 1, 'ret', 'a', 'b']
>>> l.pop(1) # 根据索引删除
1
>>> l
[0, 'ret', 'a', 'b']
>>> del l[0] # 根据索引删除
>>> l
['ret', 'a', 'b']
>>> l.remove('a') # 按值删除
>>> l
['ret', 'b']

# 清空
>>> l.clear()
>>> l
[]

# 删除
>>> l = [1, 2, 3]
>>> l
[1, 2, 3]
>>> del l
>>> l
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'l' is not defined

# 切片删除
>>> l = [1, 2, 3, 4, 5, 6]
>>> del l[2:-1]
>>> l
[1, 2, 6]

# 修改
>>> l[0] = [1, 2, 3]
>>> l
[[1, 2, 3], 2, 6]

# 切片修改
>>> l[0:2] = 'abc'
>>> l
['a', 'b', 'c', 6]
>>> l[0:2] = '12345'
>>> l
['1', '2', '3', '4', '5', 'c', 6]

# 排序(同类型)
>>> l.sort()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str()
>>> l.pop()
6
>>> l.sort()
>>> l
['1', '2', '3', '4', '5', 'c']
>>> l.sort(reverse=True)
>>> l
['c', '5', '4', '3', '2', '1']

# 反转
>>> l.append(0)
>>> l
['c', '5', '4', '3', '2', '1', 0]
>>> l.reverse()
>>> l
[0, '1', '2', '3', '4', '5', 'c']

# 查找
>>> l = [0, '1', '2', '3', '4', '5', 'c']
>>> l.index('c')
6

# 计数
>>> l.count('5')
1
>>> l.count(1)
0

元组(tuple)称为只读列表,只能查询,不能修改。

# 取值
>>> t = (1, 2, 'abc', True)
>>> t[1]
2

# 切片
>>> t[0:2]
(1, 2)

# 计数
>>> t.count('abc')
1

# 索引
>>> t.index(2)
1

字典(key必须不可变类型, value任意数据)

  • 字典索引
>>> d = {
...     'k1': 18,
...     2: True,
...     'k3': [11, 22, 33, {
...     'kk1': 1,
...     'kk2': 2,
...     'kk3': (11, 22)
...     }
...     ]
... }
>>> d['k3'][3]['kk3'][0]
11
  • dict方法
# 增
>>> d = {'name': 'ret', 'gender': 'male'}
>>> d
{'gender': 'male', 'name': 'ret'}
>>> d['age'] = 18
>>> d
{'gender': 'male', 'age': 18, 'name': 'ret'}
# 有key不做任何改变,返回value,没有添加
>>> d.setdefault('weight')
>>> d
{'gender': 'male', 'age': 18, 'name': 'ret', 'weight': None}
>>> d.setdefault('name', 'ter')
'ret'
>>> d
{'gender': 'male', 'age': 18, 'name': 'ret', 'weight': None}

# 根据序列生成字典
>>> dict.fromkeys(['k1', 'k2', 'k3'], 123)
{'k1': 123, 'k3': 123, 'k2': 123}

# 删
>>> d.pop('age') # 返回删除key的value
18
>>> d
{'gender': 'male', 'name': 'ret', 'weight': None}
>>> d.pop('abc', None) # 删除没有key,可设置返回值
>>> d.popitem() # 随机删,并以元组形式返回key, value
('gender', 'male')
>>> d
{'name': 'ret', 'weight': None}
>>> del d['weight'] # 根据key删除
>>> d
{'name': 'ret'}

# 清空
d.clear()

# 改
>>> d = {'name': 'ret', 'gender': 'male'}
>>> d['name'] = 'ter'
>>> d
{'gender': 'male', 'name': 'ter'}

# 更新(不存在的添加,有的更新)
>>> d1 = {'name': 'ret', 'age': 18}
>>> d2 = {'name': 'ter', 'gender': 'male'}
>>> d2.update(d1)
>>> d2
{'gender': 'male', 'age': 18, 'name': 'ret'}

# 查
>>> d.keys() # key的序列
dict_keys(['gender', 'name'])
>>> d.items() # key, value元组的序列
dict_items([('gender', 'male'), ('name', 'ter')])
>>> d.values() # value的序列
dict_values(['male', 'ter'])

# 取值
>>> d['name']
'ter'
>>> d.get('name')
'ter'
>>> d.get('ret')
>>> d.get('ret', 'none')
'none'

其他(for, enumerate, range)

  • for循环遍历序列
# 遍历字典
	>>> d = {'name': 'ret', 'gender': 'male'}
	>>> for i in d:
	...     print(i)
	...
	gender
	name

# 遍历列表
	>>> for i in [1, 3, 6]:
	...     print(i)
	...
	1
	3
	6

# 遍历字符串
	>>> for i in 'ret':
	...     print(i)
	...
	r
	e
	t

# 遍历元组
	>>> for i in (1, 2, 3):
	...     print(i)
	...
	1
	2
	3

# 遍历集合
	>>> for i in {'red', 'green', 'blue'}:
	...     print(i)
	...
	green
	blue
	red
  • enumerate(枚举,组成一个元组索引序列)
>>> for i in enumerate(['name', 'age', 'gender']):
...     print(i)
...
(0, 'name')
(1, 'age')
(2, 'gender')

>>> for i in enumerate('abc', 100): # 可以指定起始值
...     print(i)
...
(100, 'a')
(101, 'b')
(102, 'c')
  • range根据指定范围生成数字
>>> for i in range(1, 5):
...     print(i)
...
1
2
3
4

>>> for i in range(1, 5, 2): # 指定步长
...     print(i)
...
1
3
posted @ 2018-07-04 21:26  ret  阅读(137)  评论(0)    收藏  举报