序列:字符串、元组、列表。可以使用切片、顺序存储、使用坐标。
1.列表
>>> a=list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a[5:8]
[5, 6, 7]
>>>
>>>
>>>
>>> a[1::2]
[1, 3, 5, 7, 9]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a[::-2]
[9, 7, 5, 3, 1]
>>> a[8::-2]
[8, 6, 4, 2, 0]
>>> a[-1:-4:-2]
[9, 7]
#切片可以越界,坐标不可以
>>> a[90:100]
[]
练习:将奇数坐标值累加
a=[1,3,5,6,3,2,4,5,2,2,5,8,4,2,1,4,8,9]
print(a[1::2])
print(sum(a[1::2]))
#方法二
result=0
for i in range(1,len(a),2):
print(i)
result+=a[i]
print(result)
*list删除
>>> a=[1,2,3,4,5,6,7,8,9]
>>> a.remove(1) #根据内容删除
>>> a
[2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[1:4] #根据位置删除,可以用切片
>>> a
[2, 6, 7, 8, 9]
练习:生成一个新的list,只保留每个单词的首尾字母。
word_list=["hello","world","good","morning"]
new_word_list=[]
for i in word_list:
#new_word_list.append(i[0]+i[-1])
new_word_list.append(i[0::len(i)-1])
print(new_word_list)
>>> word_list=["hello","world","good","morning"]
>>> "".join(word_list)
'helloworldgoodmorning'
>>> a=list(range(0,10))
>>> "".join(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected str instance, int found
>>> "".join(map(str,a))
'0123456789'
*列表运算
>>> a
[1, 2, 3, 4]
>>> b=a+[2,3]
>>> b
[1, 2, 3, 4, 2, 3]
>>> c=a*4
>>> c
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
>>> 5 in a
False
>>> 4 in a
True
>>> max(c)
4
>>> min(c)
1
练习:三个数,找最大的
l=[1,2,3]
a,b,c=l[0],l[1],l[2]
max=l[0]
if a>b:
max=a
else:
max=b
if max<c:
max=c
l.remove(max)
if l[0]>l[1]:
second=l[0]
last=l[1]
else:
second=l[1]
last=l[0]
print(max,second,last)
#方法2:
l=[1,2,3]
a,b,c=l[0],l[1],l[2]
if a>b and a>c:
if b>c:
print(a,b,c)
else:
print(a,c,b)
elif a>b and a<c:
print(c,a,b)
elif a<b and a<c:
if b<c:
print(c,b,a)
else:
print(b,c,a)
else:
print(b,a,c)
*操作符函数operator
*列表操作函数
>>> a
['1', '2', '3']
>>> a.append(1)
>>> a
['1', '2', '3', 1]
>>> a.insert(2,100)
>>> a
['1', '2', 100, '3', 1]
>>> b=["a","b"]
>>> a.append(b)
>>> a
['1', '2', 100, '3', 1, ['a', 'b']]
>>> a.extend(b)
>>> a
['1', '2', 100, '3', 1, ['a', 'b'], 'a', 'b']
>>> a.reverse() #原地反转,不具备排序功能
>>> a
['b', 'a', ['a', 'b'], 1, '3', 100, '2', '1']
>>> a.pop()
'1'
>>> a
['b', 'a', ['a', 'b'], 1, '3', 100, '2']
>>> a.index(1)
3
>>> a=[1,1,2,3,3,3]
>>> a.count(1)
2
>>> a=[1,5,6,8,2,3]
>>> a.sort() #原地排序,返回None
>>> a
[1, 2, 3, 5, 6, 8]
>>> a=[1,5,6,8,2,3]
>>> sorted(a) #返回排序后序列
[1, 2, 3, 5, 6, 8]
>>> a
[1, 5, 6, 8, 2, 3]
练习:写一个count函数,统计某个值在列表中出现的次数并返回
def count(l,element):
"""练习:写一个count函数,统计某个值在列表中出现的次数并返回"""
if not isinstance(l,(str,list,tuple,dict)):
return 0
result=0
for i in l:
if i==element:
result+=1
return result
a=[1,2,3,4,5,6,6,6]
print(count(a,6))
*sort函数
>>> help(list.sort)
Help on method_descriptor:
sort(self, /, *, key=None, reverse=False)
Stable sort *IN PLACE*.
#对原序列进行排序,也就是直接在原序列上操作,没有返回值
#key:也是一个函数,默认值为None
#reverse:表示是否逆序,默认为False。如设置True,表示逆序
def func(n):
return n%10
a=[100,33,85,75,91,52]
a.sort(key=func) #按照个位数字进行排序
print(a)
#结果:
[100, 91, 52, 33, 85, 75]
#按照序列的长度倒序排序
list1 = [(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
def L(tup) :
return len(tup)
list1.sort(key = L,reverse = True)
print (list1)
#用最后一个元素比较大小,倒排
list1 = [(1,5,3),(1,3,6,3),(1,1,2,4,5,6),(1,9)]
def L(tup) :
return tup[-1]
list1.sort(key = L,reverse = True)
print (list1)
练习:按照单词的长度排序
a=["teachers","hello","windows","i"]
def lens(n):
return len(n)
a.sort(key=lens)
print(a)
#结果:
#['i', 'hello', 'windows', 'teachers']
练习:按照小写字母顺序排序
a=["teachers","B","am","hello","Windows","i"]
a.sort(key=lambda x:x.lower())
print(a)
#结果:
#['am', 'B', 'hello', 'i', 'teachers', 'Windows']
*列表复制:
- 引用复制:内存地址相同,导致修改任何一个list,另一个list也会随之改变 #list1=list2
- 非引用复制: 非引用list,它们的内存地址不一样,所以修改任何一个list都不会影响另一个list。 #list1=list2[:]
*推导列表
>>> [i*10+n for i in range(1,10) for n in range(0,10)]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
98, 99]
#二维矩阵的转置
>>> a=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
>>> print ([ [j[i] for j in a] for i in range(3)])
[[1, 4, 7, 10], [2, 5, 8, 11], [3, 6, 9, 12]]