记录博客 ZH-BLOG

python 列表

时间:2018-07-16 16:50:18分类:python

'列表' 是一个值, 它包含多个字构成的序列,看起来像这样: ['cat', 'bat', 'rat', 'elephant']。

>>> spam=['a','b',1,1.2,True]
>>> spam
['a', 'b', 1, 1.2, True]
>>> spam[0]
'a'

>>> for i in range(0,len(spam)):
	print(spam[i])

a
b
1
1.2
True

>>> for i in range(0,len(spam)):
	print('Hello,'+str(spam[i]))

Hello,a
Hello,b
Hello,1
Hello,1.2
Hello,True

负数下标:整数值−1 指的是列表中的最后一个下标, −2 指的是列表中倒数第二个下标, 以此类推。

>>> spam
['Z', 'z', 'A', 'a']
>>> spam[0]
'Z'
>>> spam[-1]
'a'
>>> spam[-2]
'A'

利用切片取得子列表

就像下标可以从列表中取得单个值一样,“切片” 可以从列表中取得多个值,结果是一个新列表。在一个切片中,第一个整数是切片开始处的下标。第二个整数是切片结束处的Python 下标。切片向上增长,直至第二个下标的值,但不包括它。切片求值为一个新的列表值。作为快捷方法, 你可以省略切片中冒号两边的一个下标或两个下标。省略第一个下标相当于使用 0, 或列表的开始。省略第二个下标相当于使用列表的长度, 意味着分片直至列表的末尾。

>>> spam=['a','b','c',1,1.2,False]
>>> spam[0]
'a'
>>> spam[1:-1]
['b', 'c', 1, 1.2]
>>> spam[1:0]
[]
>>> spam[1:len(spam)]
['b', 'c', 1, 1.2, False]
>>> ['b', 'c', 1, 1.2, False]
['b', 'c', 1, 1.2, False]
>>> spam[:2]
['a', 'b']
>>> spam[0:]
['a', 'b', 'c', 1, 1.2, False]
>>> spam[:]
['a', 'b', 'c', 1, 1.2, False]

用下标改变列表中的值

>>> spam[:]
['a', 'b', 'c', 1, 1.2, False]
>>> spam[3]='d'
>>> spam[4]='e'
>>> spam[-1]='f'
>>> spam
['a', 'b', 'c', 'd', 'e', 'f']

列表连接和列表复制

+操作符可以连接两个列表, 得到一个新列表, 就像它将两个字符串合并成一个新字符串一样。 *操作符可以用于一个列表和一个整数,实现列表的复制。

>>> spam
['a', 'b', 'c', 'd', 'e', 'f']
>>> ns=['1','2','3']
>>> spam+ns
['a', 'b', 'c', 'd', 'e', 'f', '1', '2', '3']
>>> ns*3
['1', '2', '3', '1', '2', '3', '1', '2', '3']

用 del 语句从列表中删除值

del 语句将删除列表中下标处的值, 表中被删除值后面的所有值, 都将向前移动一个下标。

>>> spam=['a','c','e','w']
>>> spam[1]
'c'
>>> del spam[1]
>>> spam
['a', 'e', 'w']
>>> spam[1]
'e'

使用列表例子

def clist():
	print('请输入你最喜欢的三种颜色')
	result=[]
	for i in range(0,3):
		print('第'+str(i+1)+'种:')
		color=input()
		result[i]=color
	return result
		
print(clist())  

请输入你最喜欢的三种颜色
第1种:
blue
IndexError: list assignment index out of range	

##修改
def clist():
	print('请输入你最喜欢的三种颜色')
	result=[]
	for i in range(0,3):
		print('第'+str(i+1)+'种:')
		color=input()
		result+=[color]
	return result
		
print(clist())

请输入你最喜欢的三种颜色
第1种:
blue
第2种:
green
第3种:
yellow
['blue', 'green', 'yellow']	

in 和 not in 操作符

利用 in 和 not in 操作符, 可以确定一个值否在列表中。

>>> spam=['a','c','d','e',1,2.3,True]
>>> 'a' in spam
True
>>> 1 in spam
True
>>> 'b' in spam
False
>>> True in spam
True
>>> 'b' not in spam
True

多重赋值技巧

变量的数目和列表的长度必须严格相等, 否则 Python 将给出 ValueError。

>>> spam=[1,2,3]
>>> wi,he=spam
Traceback (most recent call last):
  File "", line 1, in 
	wi,he=spam
ValueError: too many values to unpack (expected 2)
>>> a,b,c=spam
>>> a
1
>>> c
3
>>> b
2

增强的赋值操作

针对+、 -、 *、 /、//和%操作符, 都有增强的赋值操作符

>>> spam=12
>>> spam+=2
>>> spam
14
>>> spam-=2
>>> spam
12
>>> spam*=2
>>> spam
24
>>> spam/=2
>>> spam
12.0
>>> spam//=2
>>> spam
6.0
>>> spam//=4
>>> spam
1.0
>>> spam%=2
>>> spam
1.0

>>> spam=['a','b','c']
>>> spam+=['a','b','c']
>>> spam
['a', 'b', 'c', 'a', 'b', 'c']
>>> spam*=2
>>> spam
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

list 常用方法

## 例一
>>> spam=['a','b','c']
>>> spam.index('a')
0
>>> spam.index('b')
1
>>> spam*=2
>>> spam
['a', 'b', 'c', 'a', 'b', 'c']
>>> spam.count('b')
2
>>> spam
['a', 'b', 'c', 'a', 'b', 'c']
>>> spam.pop(1)
'b'
>>> spam
['a', 'c', 'a', 'b', 'c']

## 例二
>>> spam
['a', 'c', 'a', 'b', 'c']
>>> spam.append('w')
>>> spam
['a', 'c', 'a', 'b', 'c', 'w']
>>> spam.insert(0,-1)
>>> spam
[-1, 'a', 'c', 'a', 'b', 'c', 'w']
>>> del spam[0]
>>> spam
['a', 'c', 'a', 'b', 'c', 'w']
>>> spam.remove('a')
>>> spam
['c', 'a', 'b', 'c', 'w']
>>> spam.sort()
>>> spam
['a', 'b', 'c', 'c', 'w']

## 例三
>>> spam=['a','z','A','Z']
>>> spam.sort()
>>> spam
['A', 'Z', 'a', 'z']
>>> spam.sort(reverse=True,key=str.lower)
>>> spam
['Z', 'z', 'A', 'a']

sort()方法对字符串排序时, 使用“ASCII字符顺序”, 而不是实际的字典顺序。这意味着大写字母排在小写字母之前。因此在排序时, 小写的 a 在大写的 Z 之后。

python 中缩进规则的例外

在大多数情况下, 代码行的缩进告诉 Python 它属于哪一个代码块。但是,这个规则有几个例外。列表实际上可以跨越几行。这些行的缩进并不重要。 Python 知道,没有看到结束方括号,列表就没有结束。

>>> spam=[
	'a',
	'b',
	'c'
	]
>>> spam
['a', 'b', 'c']

也可以在行末使用续行字符 \, 将一条指令写成多行。可以把\看成是“这条指令在下一行继续”。 \ 续行字符之后的一行中,缩进并不重要。

>>> print('This is'+\
  "python")
This ispython