<!DOCTYPE html>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS_HTML"></script>
<!-- MathJax configuration -->
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true,
processEnvironments: true
},
// Center justify equations in code and markdown cells. Elsewhere
// we use CSS to left justify single line equations in code cells.
displayAlign: 'center',
"HTML-CSS": {
styles: {'.MathJax_Display': {"margin": 0}},
linebreaks: { automatic: true }
}
});
</script>
<!-- End of mathjax configuration --></head>
1.通过列表间接修改字符串¶
data = "hello"
list(data)
data = list(data)
data
赋值
data[1]='改变'
data
拼接修改后的字符串
''.join(data)
lis = [1,2,3,4]
2. 列表数据增加的几种方式¶
(1)在尾部追加一个元素¶
lis.append(5)
lis
(2)根据下标插入一个元素¶
lis.insert(1,'插入')
lis
也可以使用切片进行这种效果,但是可读性不是很高,且插入的元素必须在列表中
lis[2:2]=1
lis
lis[2:2]=[1]
print(lis)
del lis[2]
lis
(3)使用extend方法,列表形式插入多个元素¶
将两个列表进行扩展,和直接使用+拼接所不同的是,这种方式是直接修改旧的列表,+是返回拼接后的一个新列表,不会更改旧的列表
lis+['常规','增加']
lis
lis.extend(['常规','增加'])
lis
lis[0]='索引的方式插入第一个元素'
lis
3. 列表元素的删除方式¶
(1)pop方法:通过元素下标进行删除,未填写下标时,默认从列表末尾删除,并返回这个元素¶
tmp = [1,2,3,4,5]
print(tmp.pop())
print(tmp)
tmp.pop(0)
tmp
(2)remove方法:通过具体的元素名字进行删除¶
x = ['please', 'input','your','name']
x.remove('input')
x
(3)del方法: 使用系统的内置函数进行删除¶
删除列表元素:指定下标进行删除
del x[0]
x
还能够删除整个的列表
del x
x # 删除完成,所以报错
4.列表排序¶
(1)sort方法:从小到大排序,对原来的列表进行修改,然后进行排序输出
lst = [4,6,2,1,7,9]
lst.sort()
print(lst)
(2)sortd方法:从小到大排序,在不改变原列表的情况下,返回一个已经排序好了的列表副本
lt =[1,3,2,4]
lt.sorted()
注意:这种调用方式与sort()不一样,sort list类中的一个实例方法,而sorted()是文件中的一个普通方法
sorted(lt)
lt
sorted('wordld') # 实际上,这个函数可以用于所有的可迭代序列,但是返回值永远是列表而已
如果我们想从大到小排序,可以在从小到大排序之后使用切片直接进行输出
c = sorted(lt)
print(c)
print(c[::-1]) # 逆序输出
列表的两个逆序输出方法,除了上面讲述的切片还有一个
(1)reverse:逆序输出列表中的元素
u=[1,2,3]
u.reverse()
print(u)
有一个类似于reverse的反转序列方法,reversed(),反转序列后生成迭代器
5.列表查询¶
(1)count:通过元素名,统计指定的元素在列表中出现了多少次
c = ['to','to','ccc']
c.count('to')
(2)index:通过索引,查询列表中该值第一次出现的索引
c.index('to')
c.index('to')
c.index('toooo') # 如果找不到就会报异常,可以用异常捕获进行处理
6.列表取值¶
p = [1,2,3,4,6,7,8]
p[0] # 单元素取值
【序列】切片取值¶
序列【首索引:尾索引:顺序+步长】
格式:字符串[开始下标:结束下标:步长] #字符串[开始下标:结束下标]确定范围时不包括结束下标本身的值
(左闭右开区间,包含左侧索引值对应的元素,但不包含右侧索引值对应的元素)
"不加步长的情况"
a[0:4] #注意:这里面的结果不是hello,而是hell。这里面的不取尾数值
a[:] #如果前面和后面都不写,表示从头取到尾
a[:5] #表示从头取到下标为4的字符,因为不取尾数值
a[-4:] #表示从-4的下标取,取到末尾的数
"加步长的情况"
a[::2] #hlowrd,表示从前往后开始,步长为2个距离长度取值
helloworld
a[::-2] #drwolh,步长为负数,表示从后往前开始,步长为2个距离长度取值
a[:-5:-2] #dr :首先确定步长为负数,就是从后往前方向取(每隔2个),然后开始下标变成了结尾下标,直到-5的位置
ab="xiaoxingyun"
ab[-2:1:-1]
可以通过切片实现一些小题目¶
print(list(range(1,101)[::2])) # 输出1-100中的所有奇数
利用range函数生成1-100的数,然后我们取3的倍数,并且取最后十个。
list(range(1,100)[2::3]) # 最小的数数3,下标为2
list(range(1,100)[2::3])[:-11:-1] # 逆序取10个
列表+集合+sort高级排序¶
a={'1':1,'2':2}
name = ['张三','李四','王五','王五']
tmp = list(set(name)) # 使用集合进行去重,转换成集合后会默认去重
tmp
可以看到去重后,列表的顺序变了,在需要使用到zip()聚合函数,需要对姓名和身份证号进行聚合时,一旦顺序错了,会引发bug
tmp.sort(key=name.index) # 按照原来的元素顺序排列
tmp