【Python错题】考前突击·数据与表达

根据错题衍生知识点,自用,欢迎指正。

目录

          • 字符串
          • 切片
          • 列表
            • 编辑使用
          • 集合
            • 创建
            • 编辑使用
          • 字典
            • 创建
            • 编辑使用

有序序列:列表、元组、字符串
无序序列:字典、集合

字符串

#当查找字符串时,结果为首字符出现位置

>>> 'abcabcabc'.rindex('abc')
6   #当查找字符串时,结果为首字符出现位置

s.swapcase():大小写互换
替换
s.replace(u,v[,n]):把u替换为v n次(默认全部)
s.strip([c]):去掉首尾连续的字符串(默认空格)
s.lstrip([c]):首部开始,重复的都替换
s.rstrip([c]):尾部,同理
s.expandtabs([n]):把\t替换为n个空格(默认8)
主要对strip()和expandtab()不熟悉,举例

>>> s='abcHello\tworld!'
>>> s='abcabcHello\tworld!abdabc'
>>> s.lstrip('abc')
'Hello\tworld!abdabc'
>>> s.rstrip('abc')
'abcabcHello\tworld!abd'
>>> s.strip('abc')
'Hello\tworld!abd'
>>> s.expandtabs(2) #换成两个空格
'abcabcHello world!abdabc'
>>> 

测试
s.isspace():全为空格
s.istittle():所有词首字母大写
s.isupper():全大写
s.islower():全小写
!!!!!!
小写转换s.lowers()有s!!!!

切片

s[i[:j[:k]]] 不包含 j
从i到(j-1) 是切一段哟!
使用切片y=x[:]的方法,复制,地址不一样
包含右端点的目前只见过两函数:randint(a,b),uniform(a,b)
宝藏切片可以使倒序

>>> s=[1,23,545,6]
>>> t=s[-1::-1]  ##########
>>> print(t)
[6, 545, 23, 1]
``
>>> x=[1,2,3,4,5]	#当超出范围时,返回空列表
>>> a=x[10:]
>>> print(a)
[]
列表
编辑使用

apped():末尾添加[元素]
extend():合并列表

>>> a=list(range(4))
>>> a.append([2])	#保留list特性
>>> a.extend([5])	#消除list特性
>>> print(a)
[0, 1, 2, 3, [2], 5]

关系
与第一个不相同的元素比较,也就是说:相等必须顺序相同
而集合就是数学那样

集合
创建

集合{…}:相同元素只保留一个;元素不可改变但可添加s.add(x),删除。

>>> s=set(range(8)) 		#se(range(n))生成列表
>>> print(s)
{0, 1, 2, 3, 4, 5, 6, 7}
>>> s.remove(4)			#remove()&discard()删除指定值,
>>> s.discard(5)		#而非位置
>>> print(s)
{0, 1, 2, 3, 6, 7}
>>> s.pop()			#删除任意一个元素 
0 				#【列表】中默认组后一个
>>> s.pop()
1
>>> del s			#注意del&clear()的不同
>>> print(s)			#del删除集合,clear删除【元素】
Traceback (most recent call last):
  File "", line 1, in <module>
    print(s)
NameError: name 's' is not defined
>>> s=set(range(5))
>>> s.clear()
>>> print(s)
set()
>>> 
编辑使用

集合关系运算
并集:|,union()
交集:&,intersection()
差集:-,difference()
对称差集:^,symmetric_difference()

>>> a={1,2,3,'a',34}
>>> b={'a',8,9,0}
>>> c={34,4,7,9}	#所有的操作顺序计算
>>> a-b-c		#不可a-(b-c)!
{1, 2, 3}
>>> a.difference(b).difference(c) #差集只去相同,不补充
{1, 2, 3}
>>> a.symmetric_difference(b).symmetric_difference(c)
{0, 1, 2, 4, 3, 7, 8}		#对称集连b,c间相同的也会消除!
字典

键只读
字典的核心是键值对——这一核心将解释“dict()转换”,长度
没有值就默认"None"

创建

dict()的使用:
元素第一个为“键”,第二个为“值”

>>> dict([['a',3],('f',2)])		#可以注意到:
{'a': 3, 'f': 2}			#所转换的列表和元组
 dict((('a',2),('b',3),('c',5)))	#都是【嵌套】型的
{'a': 2, 'b': 3, 'c': 5}		#子列表/元组 都是成对的

{}.fromkeys(k[,v])
setdefault()

>>> s={'梦想':'科学家'}			#冒号在!之间!
>>> s.setdefault('梦想','太空人')	#如果键存在,则保持[原值]
'科学家'
>>> s.setdefault('星际飞船','自然选择')
'自然选择'
>>> print(s)
{'梦想': '科学家', '星际飞船': '自然选择'}
编辑使用

删除
pop():删除[指定的] [键值对]
popitem():随机删除对
clear():删除所有对象
del d[]:删除指定的字典或指定的键

列表、集合、字典都可以使用pop(),但规则不同

>>> a=list(range(4))
>>> b=set(range(5))
>>> c={'Dream':'Have an AGI','Spacecraft':'Natural Selection'}
>>> a.pop()			#[列表]删除指定[位置(s.index()]
3				#默认最后一个
>>> b.pop()			#任意一个 我的一般删除第一个
0
>>> c.pop()			#出错
Traceback (most recent call last):
  File "", line 1, in <module>
    c.pop()
TypeError: pop expected at least 1 argument, got 0
>>> c.pop('Dream')		#成对删除,但返回值
'Have an AGI'
>>> print(a,b,c)
[0, 1, 2] {1, 2, 3, 4} {'Spacecraft': 'Natural Selection'}

计算
再次diss我那烂烂的教材,默认情况都没有写清楚!

>>> a={2:1,3:2,5:4}
>>> print(sum(a),sum(a.values()),sum(a.keys()))
10 7 10 #由此我们可以看出,默认是计算[键]
>>> print(max(a),max(a.values()),max(a.keys()))
5 4 5

关于复制与id:
只有直接的赋值,id不变,且联动 完全相同,不管是先者变还是或者变
用切片[:],s.copy(),copy.copy()(要import copy)地址会变

你可能感兴趣的:(python)