列表元组字符串
1. 列表都可以存放一些什么东西?
我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。
1 | mix = [1, ‘小’, 3.14, [1, 2, 3]] |
2. 向列表增加元素有哪些方法?
append(),extend(),insert()
extend()和append()都是向列表末端添加元素,区别在于:
append是将参数作为一个元素添加到列表的末尾
extend是将参数作为一个列表去扩展列表的末尾
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 name = ['F', 'i', 's', 'h']
name.append('C')
name
['F', 'i', 's', 'h', 'C']
name.extend(['.', 'c'])
name
['F', 'i', 's', 'h', 'C', '.', 'c']
name.append(['o', 'm'])
name
['F', 'i', 's', 'h', 'C', '.', 'c', ['o', 'm']]
insert():有两个参数,第一个参数是插入的位置,第二个参数是插入的元素
member = ['小甲鱼', '小布丁', '小宝贝']
\>>> member.insert(1, '厉害')
\>>> menber
['小甲鱼', '厉害', '小布丁', '小宝贝']
### 3.for循环的应用
```python
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88]
for each in member:
print(each)
4. 下边的列表分片操作会打印什么内容?
1 | list1 = [1, 3, 2, 9, 7, 8] |
左闭右开 应该是[2,9,7]
5. 请问 list1[0] 和 list1[0:1] 一样吗?
不一样,list1[0] 返回第0个元素的值,list1[0:1] 返回一个只含有第0个元素的列表。
6.如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?
1 | list1.insert(0,list1.pop()) |
7. 在进行分片的时候,我们知道分片的开始和结束位置需要进行指定,但其实还有另外一个隐藏的设置:步长。
在普通的分片操作中,步长默认设置为1,表示逐个遍历元素。其实我们可以人为调整步长以达到不可告人的秘密。
1 | list1 = [1, 3, 2, 9, 7, 8] |
之前提到的“简洁”分片操作在这里有效:
1 | list1[::2] |
步长可以是负数,改变方向(从尾部开始向左走):
1 | list1[::-2] |
8. 可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?
千万不可以!
1 | 1, 3, 2, 9, 7, 8] list1 = [ |
如果对list1进行排序,list1变为[1,2,3,7,8,9]
list2不变,而输出list3会发现,它也被排序了
9.列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
copy() 方法跟使用切片拷贝是一样的:
1
2
3
4
5
6
7
8
9
10
11
12 >>> list2 = list1.copy()
>>> list2
>>> [1, [1, 2, ['小甲鱼']], 3, 5, 8, 13, 18]
**clear() 方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表。**
list2.clear()
list2
[]
### 10.列表推导式/列表解析[i*i for i in range(10)]
输出 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
1 |
|
15.file1 = open(‘C:\windows\temp\readme.txt’, ‘r’) 表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?
会报错是因为在字符串中,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”(详见:http://bbs.fishc.com/thread-92997-1-1.html),因此并不会按照我们计划的路径去打开文件。
Python 为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:
file1 = open(r’C:\windows\temp\readme.txt’, ‘r’)
16.写一个检查密码安全性的代码
1 | symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>''' |
17.字符串常用方法
capitalize() | 把字符串的第一个字母修改为大写 |
---|---|
casefold() | 把整个字符串的内容转为小写 |
center(width) | 把字符串居中并用空格填充至长度width的新字符串 |
count(sub,start,end) | 统计字符串sub在索引start到end(不包括end)中出现了几次 |
find(sub,start,end) | 检查sub字符串是否被包含,有则返回索引值,否则返回-1 |
index(sub,start,end) | 和find方法一致,但是如果sub不在指定字符串中会返回异常 |
isalnum() | 如果字符串至少有一个字符且字符都是数字或字母则返回True,否则返回false |
isalpha() | 如果字符串至少有一个字符且字符都是字母则返回True,否则返回false |
isdigit() | 如果字符串中只包含数字则返回true,否则false |
isdemical() | 十进制数 |
islower() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False。 |
isupper() | 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False。 |
join(sub) | 以字符串作为分隔符,插入到sub的所有字符间 |
ljuest(width) | 返回一个左对齐的字符串,并使用空格填充 |
lower() | 把大写字符转为小写 |
lstrip() | 去掉字符串左边所有空格 |
replace(“old”,”new”,count) | 把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。 |
translate(table) | 根据 table 的规则(可以由 str.maketrans(‘a’, ‘b’) 定制)转换字符串中的字符。 |
zfill(width) | 返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。 |
strip(chars) | 删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。 |
swapcase() | 翻转大小写 |