Python自学——“增删改查”、深浅拷贝
字符串常用函数
`split(str="", num=string.count(str))` 搜索指定str并按照num个数分割字符串(会删除str),**返回**字符串列表
`partition(str)` 3段式分割,**返回**元组类型: (‘左’, ‘str’, ‘右’)
`join(seq)` 以指定字符串作为分隔符,将 seq (列表)中所有的元素(的字符串表示)合并为一个新的字符串
`eval()` 用来执行一个字符串表达式,并**返回**字符串表达式的值
`str.find(str, beg=0, end=len(string))` 找到**首个**指定字符串在的位置,**返回**下标值,找不到则返回-1. *str* -- 指定检索的字符串。*beg* -- 开始索引,默认为0。*end* -- 结束索引,默认为字符串的长度
`str.index(str, beg=0, end=len(string))` 跟find()方法一样,只不过如果str不在字符串中会报错.
`str.count(sub, start= 0,end=len(string))` **返回** *str* 在 *string* 里面出现的次数,如果 *beg* 或者 *end* 指定则返回指定范围内 *str* 出现的次数
`str.replace(old, new[, max])` 把 将字符串中的 **str1 替换成 str2**,如果 max 指定,则替换不超过 max 次。
`str.capitalize()` 字符串首字母大写
`str.title()` 每个单词首字母大写
`str.startswith()` 方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False。
`strip([chars])` 去除字符串两侧[char],一般用于去除空格,相当于执行`lstrip([chars])`和`rstrip([chars])`
`isalnum()` 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
`isspace()` 如果字符串中只包含空白,则返回 True,否则返回 False
`isdigit()` 如果字符串只包含数字则返回 True 否则返回 False
`isalpha()`如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
**所有函数均不改变原字符串,只是返回新值**。
```python
a = 'wealcome to the international!'
b = ['1', '2', '3', '4', '5']
c = ' book '
print(a.split(' ', 2))
>>>['wealcome', 'to', 'the international!']
print(a.partition('to'))
>>>('wealcome ', 'to', ' the international!')
print('_'.join(b))
>>>1_2_3_4_5
print('%s = %s'%(('+'.join(b)), eval('+'.join(b))))
>>>1+2+3+4+5 = 15
print(a.find('a'))
>>>2
print(a.index('a'))
>>>2
print(a.count('a'))
>>>3
print(a.replace('int', 'Int'))
>>>wealcome to the International!
print(a.capitalize())
>>>Wealcome to the international!
print(a.title())
>>>Wealcome To The International!
print(a.startswith('w'))
>>>True
print(c.strip())
>>>book
```
## 列表常用函数和方法
查找列表:in 和 not in
```python
list0 = [1, 2, 3, 4, 5]
print(2 in list0)
>>>True
```
### List函数(函数有返回值)
`len()` `max()` `min()`不说了,提一下z>a>Z>A在比较字母大小的时候,实际比较的是ASCII码
`list(seq)` 强制转换为列表
### List方法(改变List,大多无返回值)
**增:**
`list.extend(list)` 末尾扩充**列表**,无返回值,直接改变原list
`list.append()` 末尾扩充元素,同样无返回值
`list.insert(index, obj)` 列表中插入元素,按index下标前插
**删:**
`list.clear()` 清空列表
`list.pop([index=-1])` 移除列表中的一个元素(默认最后一个元素),并且**返回**该元素的值
`list.remove(index, obj)` 移除列表中某个值的第一个匹配项
**改:**
`list.reverse()` 反向列表中元素
`list.sort(revwerse=False or True)` 排序,无返回值,默认reverse=False升序,True为降序
`list.copy()` 复制列表,**返回**复制后的新列表。
**查:**
`list.count()` `list.index()`方法与字符串一致,但没有`find()`方法
`list.index(obj)` 从列表中找出某个值第一个匹配项的索引**位置**
```python
#增删改查
#列表:
li = [10, 2, 3]
#增
li.append(4)
li.extend([5, 6])
li.insert(0, 0)
#删
li.remove(0)
li.pop(-1)
del li[-1]
# li.clear()
#改
li.sort()
li.reverse()
#查
li.count(2)
max(li)
min(li)
len(li)
a = li[0]
li.index(2)
```
## Dic字典常用函数和方法
### 函数
`len()` `str()` `type()`
### 方法
`dict.items()` 以列表返回可遍历的(键, 值) 元组数组。**返回可遍历的(键, 值) 元组数组。**
`dict.keys()` 返回一个keys值组成的迭代器,可以使用 list() 来转换为列表
`dict.values()` 返回一个values组成的迭代器,可以使用 list() 来转换为列表
`dict.get(key, default=None)` 返回指定键的值,如果值不在字典中返回默认值 None
`dict.fromkeys(seq[, value])` 创建新字典,可以列表形式写keys,代表多个keys。但values只能写唯一值,即便是列表形式。
```python
#元组(不可变)
#增
tup = (1, 2, 3)
#查
print(tup[0: 2])
#字典
dic = {'a': 1, 'b': 2}
dic0 = {'d': 4}
#增
dic.setdefault('c', 3)
dic.update(dic0)
dic1 = dict.fromkeys(['e', 'f'])
dic1['key3']='value3'
#删
dic.pop('a')
del dic['d']
del dic1
#改
dic['a'] = 0
#查
dic.items()
dic.keys()
dic.values()
dic.get('a')
dic.setdefault('g')
```
## 深浅拷贝
浅拷贝使用时,可变数据类型中的子元素如果可变,则该可变子元素的指向地址公用。
深拷贝则子元素指向地址重新建立,各自独立。
浅拷贝:`.copy()` `copy.copy()` `[:]`
深拷贝:`copy.deepcopy()`
赋值:`=` 赋值时,指针指向同一地址
```python
import copy
a = [[0, 3], 1, 2]
b = copy.deepcopy(a)
c = a.copy()
d = a
a[0][1] = 4
print(a, b, c, d)
>>>[[0, 4], 1, 2] [[0, 3], 1, 2] [[0, 4], 1, 2] [[0, 4], 1, 2]
```
网友评论