本文实例讲述了python学习笔记基本数据结构之序列类型list tuple range用法。分享给大家供大家参考,具体如下:
list 和 tuple
- list:列表,由 [] 标识; 有序;可改变列表元素
- tuple:元组,由 () 标识; 有序;不可改变元组元素(和list的主要区别)
list 和 tuple 的创建:
1
2
3
4
5
6
7
8
9
|
print ([]) # 空list
print ([ "a" , 1 ,true]) # 元素类型不限
print ([x for x in range ( 0 , 6 )]) # 列表推导式
print ( list ( "a" ), type ( list ( "a" ))) # 强制转化
print (()) # 空tuple
print (( 1 )) # 不是tuple
print (( 1 ,)) # 单一元素tuple 一定要加,
print (( "a" , 1 ,true)) # 元素类型不限
print ( tuple ( "a" ), type ( tuple ( "a" ))) # 强制转化
|
空list l = []
list 用一对方括号,用','隔开里面的元素 l = [a]
l = ["a",1,true]
元素类型不限
列表推导式,如:[x for x in range(0,6)]
(下方会详细介绍 range
及 列表推导式)
类型转换 list()
空tuple t = ()
tuple 若只有一个元素时,注意表示为 t = (1,)
一定要有逗号
tuple 用一对圆括号,用','隔开里面多个的元素 t = ("a",1,true)
元素类型不限
类型转换 tuple()
range
range 可方便的生成一个等差的序列,有两种表示 range(stop) 、range(start, stop[, step]) ; 通常用在 for循环语句中
range(stop) 表示 0 到 stop(不包含stop) 等差为1 的数,如 range(4) 表示 0 1 2 3
range(start, stop[, step]) 表示 从 start 到 stop(不包含stop) 等差为step的数;step缺省为1,可设置为负数
1
2
3
4
5
6
7
8
9
10
11
|
print ( type ( range ( 4 ))) # range本身就是一个type
for i in range ( 4 ):
print (i) # 0 1 2 3
for i in range ( - 1 ): # 从0计数,无值
print (i)
for i in range ( 4 , 7 ): # 4 5 6
print (i)
for i in range ( 2 , 7 , 2 ): # 2 4 6
print (i)
for i in range ( 5 , 2 , - 1 ): # 5 4 3
print (i)
|
序列操作
一般操作,不改变list本身
operation | result |
---|---|
x in s | true if an item of s is equal to x, else false |
x not in s | false if an item of s is equal to x, else true |
s + t | the concatenation of s and t |
s * n or n * s | n shallow copies of s concatenated |
s[i] | ith item of s, origin 0 |
s[i:j] | slice of s from i to j |
s[i:j:k] | slice of s from i to j with step k |
len(s) | length of s |
min(s) | smallest item of s |
max(s) | largest item of s |
s.index(x[, i[, j]]) | index of the first occurrence of x in s (at or after index i and before index j) |
s.count(x) | total number of occurrences of x in s |
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
|
s = [ "a" , 1 ,true,[ "b" ], 2 ]
print ( "a" in s) # 判断元素存在于s
print ( "a" not in s) # 判断元素不存在于s
print ( "b" in s)
print ( 1.0 in s) # 这边不判断int float类型不同
print ( "1" in s) # 这边的1为字符串
a = [ 1 , 2 ]
b = [ 2 , 1 , 0 ]
print (a + b) # 序列相加
print (a * 3 ) # 序列乘法
s = [ 0 , 1.0 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
print (s[ 0 ],s[ 2 ],s[ 3 ]) # 通过下标来取出对应的元素
print ( type (s[ 0 ]))
print ( type (s[ 1 ]))
print (s[ 2 : 4 ]) # 取出一段list
print (s[ 2 : 7 : 2 ]) # 根据步长取出一段list
print ( len (s)) # list长度,即包含几个元素
sum = 0 for i in range ( 0 , len (s)): # 使用for循环来取出list的每个元素
print (s[i])
sum + = i # 赋值的简单表达式,相当于 sum = sum + i
print ( sum ) # 总和
print ( min (s), max (s)) # 取最小/最大;注意元素类型间若不可比较,会报错
s = [ 2 , 3 , 1 , 2 , 2 , 3 ]
print (s.index( 2 )) # 查找对应元素第一次出现的下标
# print(s.index(4)) # 不存在该元素会报错
print (s.index( 2 , 3 )) # 从下标为3的开始找起
print (s.index( 2 , 3 , 4 )) # 从下标为3到下标4的阶段内找
print (s.count( 2 )) # 输出为2的元素的个数
print (s.count( "2" )) # 找不到匹配元素,返回0
|
上方列出的操作方法对 tuple 也都适用,因为并不改变序列本身的元素,如
1
2
|
s = ( 2 , 3 , 1 , 2 , 2 , 3 )
print (s[ 2 ],s[ 2 : 4 ], len (s),s.count( 2 )) # 对tuple均适用
|
改变序列的操作:仅对 list 适用;若对 tuple 操作,会报错;clear()
和 copy()
是 python 3.3 才新增的方法
operation | result |
---|---|
s[i] = x | item i of s is replaced by x |
s[i:j] = t | slice of s from i to j is replaced by the contents of the iterable t |
s[i:j:k] = t | the elements of s[i:j:k] are replaced by those of t |
del s[i:j] | same as s[i:j] = [] |
del s[i:j:k] | removes the elements of s[i:j:k] from the list |
s.pop([i]) | retrieves the item at i and also removes it from s |
s.remove(x) | remove the first item from s where s[i] == x |
s.clear() | removes all items from s (same as del s[:]) |
s.append(x) | appends x to the end of the sequence (same as s[len(s):len(s)] = [x]) |
s.extend(t) | extends s with the contents of t (same as s[len(s):len(s)] = t) |
s.insert(i, x) | inserts x into s at the index given by i (same as s[i:i] = [x]) |
s.copy() | creates a shallow copy of s (same as s[:]) |
s.reverse() | reverses the items of s in place |
list的增、删、改的操作实际都比较实用,需要熟练掌握
list元素更改
可对 list 不同的下标表示法做以下操作,一般 list 下标的操作仅作对单一元素的更改赋值,如 s[0]=1 ;对多个元素的操作见下方示例(仅供参考)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
s = [ 0 , 1 , 2 , 3 ]
s[ 0 ] = "1"
print (s) # 对list的某一元素赋另外的值,类型也跟随改变
s[ 4 ] = 1 # 不可超过原list的长度,会报错
s[ 0 : 3 ] = [ 2 , 3 , 4 ] # 可对一段元素赋另外的值
print (s)
s[ 0 : 3 ] = [ "x" , "x" ] # 可缺少,元素个数也就相应的减少了
print (s)
s[ 0 : 2 ] = [ "x" , "x" , "x" , "x" ] # 可增加,元素个数也就相应的减加了
print (s)
s[ 0 ] = [ 0 , 0 ] # 单个元素注意,相当于赋值,把序列赋予该元素
print (s)
s[ 1 : 2 ] = [ 0 , 0 ]
print (s)
s = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
s[ 1 : 8 : 2 ] = [ "x" ] * 4 # s[1:8:2] = ["x"]*3 # 这种表示方式元素个数一定需要相同,不然会报错
print (s)
|
list元素删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
s = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
del s[ 0 : 4 ] # 删除对应的元素
print (s)
s = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
del s[ 1 : 8 : 2 ] # 做删除
print (s)
s = [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
s.pop( 3 )
print (s.pop( 3 ),s) # 做删除,并且返回该元素的值
print (s.pop(),s) # 默认删除最后一个
s = [ 2 , "1" , 1.0 , 1 , 2 , 1 ]
s.remove( 1 ) # 删除第一个值为 1 的元素
print (s)
s.clear() # 置空,python3.3引入
print (s)
|
list元素增加
1
2
3
4
5
6
7
8
9
|
s = [ 0 , 1 , 2 , 3 , 4 ]
s.append( 5 ) # list 最后加一个元素
print (s)
s.extend([ 6 , 7 ]) # list 最后拼接序列
print (s)
s.extend( range ( 3 ))
print (s)
s.insert( 1 ,[ "x" ]) # 在1的位置插入["x"]
print (s)
|
其他操作,reverse
、copy
等
1
2
3
4
5
6
7
8
9
10
11
12
|
s = [ 1 , 2 , 3 ]
c = s.copy() # 相当于 c = s
print (c)
c.reverse()
print (c)
s = [ 2 , 3 , 1 , 4 ]
s.sort() # 排序
print (s)
# s = ["b",1,"a",true] # 报错,必须是可比较的类型
s = [ "b" , "a" ]
s.sort()
print (s)
|
希望本文所述对大家python程序设计有所帮助。
原文链接:https://www.cnblogs.com/feeland/p/4364013.html