本节的本质:清楚每一种数据结构(list)的意义是什么,返回什么类型;大多为None?
Python的list、元组、字典、字符串常用方法操作
1. 列表
list模型是一个线性结构,可迭代,可索引(正负),内存上连续的空间;是可变的;
内存模型的了解;

2. 列表操作
1.列表查询 index和count
index()有内部方向性;
index和count效率很低;都是O(n)问题
时间复杂度:O(n) n所有元素个数;随着规模增大,效率降低(遍历问题);
list.Index(x)
从列表中找出某个值第一个(注意是第一个)匹配项的索引位置
匹配到第一个就立即返回索引;
匹配不到,跑出异常ValueError
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.index('t') ##第一个字母t的索引位置是3
>>> name.index('a')
Traceback (most recent call last):
File "", line 1, in ?
ValueError: list.index(x): x not in list
>>> 'a' in name
False
>>> 'a' not in name
True
list.count(value)
统计某个元素在列表中出现的次数
>>> name = list("scott")
>>> name
['s', 'c', 'o', 't', 't']
>>> name.count('s')
>>> name.count("t")
>>> name.count("A")
>>> name.append(list("Python"))
>>> name
['s', 'c', 'o', 't', 't', ['P', 'y', 't', 'h', 'o', 'n']]
>>> name.count(['P', 'y', 't', 'h', 'o', 'n'])
2.列表的增、删、改
stus='诸葛亮,刘备,关羽,张飞'
new_stus=['诸葛亮','刘备','张飞','曹操','孙权']
#列表、list、数组、array指的都是一样的
#下标、索引、角标、编号都是同一个意思
#根据编号去取值
print(new_stus[-1])
#最前面一个元素的下标是0,最后一个元素的下标是-1
2)
cities=[]
增加append、insert、
list.append (object) ->None #O(1)
append没有效率问题;结尾加个值,与N无关;
insert时间复杂度为O(n)问题;尽量少用
extend(iteratable) -> None
尾部就地修改与不改变原列表;
extend()迭代+追加,就地修改;
本质上调用是一个魔术方法;
列表相加
list(range(5))+[100] #列表相加
[0, 1, 2, 3, 4, 100]
cities.append('北京')#在列表末尾增加一个元素
cities.insert(0,'上海')# 不要写负数,在指定位置增加元素 返回None
cities.append('广州')
print(cities)
print(cities.append('广州')) | None 不返回任何东西;
删除pop、remove、clear、del
cities.pop(0)#删除指定位置的元素
cities.remove('北京')#删除指定的元素
cities.clear()#清空list
del cities[-1]#删除指定位置的元素
print(cities)
修改=赋值
print (cities)
cities[3]='南京' #修改的时候如果指定的下标不存在,会报错
print(cities)
#IndexError: list assignment index out of range,没有的下标是不能修改的
3.排序
nums=[213,3,54,5423,7567567,3453,6,4,657]
nums=['f','a','u','d']
nums.sort()#升序排序,字符串、字母都可以排序
nums.sort(reverse=True)#降序排序
print(nums)
4. 复制
cities2=['深圳','厦门','成都']
print(cities2*3)#复制几次
网友评论