python基本数据类型之列表list
list的基本功能
- 结果类型 中括号括起来
- 逗号(,)分割每一个元素
- 列表中的元素可以是数字,字符串,列表,布尔值所有的都能放
- 索引,切片
1
2
3
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ] print (li[ 1 ]) # 索引取值 print (li[ 2 : 4 ]) # 切片取值(切片的结果也是列表) |
- 支持for循环
1
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ]<br> for item in li: # for循环列表<br> print(item) |
- 支持while循环
- 索引删除,切片删除
1
2
3
4
5
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ] del li[ 0 ] # 索引删除 print (li) del li[ 0 : 3 ] # 切片删除 print (li) |
- 索引修改,切片修改
1
2
3
4
5
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ] li[ 0 ] = 88 # 索引修改 print (li) li[ 0 : 3 ] = 7 , 8 , 9 # 切片修改 print (li) |
- in操作
1
2
3
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ] v = 3 in (li) # in操作 print (v) |
- 索引找值
1
2
3
|
li = [ 1 , 3 , 5 , "jianer" , [ "病毒尖儿" , 18 ], "cat" ] v = li[ 4 ][ 0 ][ 2 ] # 索引找并打印 print (v) |
转换
- 列表转换成字符串
- 需要自己写for循环一个一个处理:既有数字又有字符串
- 直接使用字符串join方法:只有字符串
list的方法(魔法)
-
需要记忆的魔法有:append(追加),extend(扩展),insert(插入)
append 原来值最后追加,数字,字符,列表都可以进行追加
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.append( 2 ) # 追加再最后 原来值再后面追加,因此不用赋予新的值 print (li) |
clear 清空列表
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.clear() # 清空列表 print (li) |
copy 拷贝(浅拷贝)
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] v = li.copy() # 拷贝,浅拷贝 print (li) |
count 计数(计算元素出现的次数)
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] v = li.count( 8 ) # 计算元素出现的次数 print (v) |
extend 扩展原列表,参数可迭代对象(数字不能扩展,数字不可迭代)
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.extend( "b" ) # 扩展追加。 print (li) |
index 根据值获取值的指引位置
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] v = li.index( 8 ) # 根据值获取值的索引位置 print (v)<br><br> 1 重复字符,获取最左边位置,便不再寻找 |
insert 插入,也可以根据指引位置插入元素
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.insert( 2 , "b" ) # 前面参数指定索引,逗号分隔,加要插入的元素 print (li) |
pop 可索引删除某个值,无索引则默认删除最后一个值,赋予一个值也可以获得被删除的值
1
2
3
4
|
li = [ 6 , 8 , 7 , 5 , 8 ] v = li.pop( 2 ) # 指定索引删除,无索引则默认删除最后一个值,也可以获取删除的值 print (li) print (v) |
remove 删除列表指定值,左边优先
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.remove( 8 ) # 删除列表指定值,从左优先 print (li) |
reverse 将当前列表进行反转
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.reverse() # 将当前列表进行反转 print (li) |
sort 排序,有秩序的排序。
1
2
3
|
li = [ 6 , 8 , 7 , 5 , 8 ] li.sort(reverse = True ) # 当反转正确,则从大到小排序 print (li) |
列表推导式
列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。
每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。
1 vec = [2,4,6] 2 go = [3*x for x in vec] 3 print(go) 4 5 [6, 12, 18] # 这里我们将每个数据乘以三,获取一个新列表
1 freshfruit = [' banana', ' loganberry ', 'passion fruit '] 2 go = [weapon.strip() for weapon in freshfruit] 3 print(go) 4 5 ['banana', 'loganberry', 'passion fruit'] #对序列每个元素逐个调用方法
也可以用if子句作过滤
1 vec = [2,4,6] 2 go = [x for x in vec if x >3] 3 print(go) 4 5 [4, 6]
其它一些示例
1 >>> vec1 = [2, 4, 6] 2 >>> vec2 = [4, 3, -9] 3 >>> [x*y for x in vec1 for y in vec2] 4 [8, 6, -18, 16, 12, -36, 24, 18, -54] 5 >>> [x+y for x in vec1 for y in vec2] 6 [6, 5, -7, 8, 7, -5, 10, 9, -3] 7 >>> [vec1[i]*vec2[i] for i in range(len(vec1))] 8 [8, 12, -54]