Python - 列表
-
list
列表的数据项不需要具有相同的类型
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
两个数组一模一样也是两个数组,不能比较,只能比较内容
-
列表取值
列表用 [ ] 标识,是 python 最通用的复合数据类型。
列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
加号 + 是列表连接运算符,星号 * 是重复操作。
list=[1,3,5,7,9,11] print list # 输出完整列表 print list[:] print list[0] # 输出列表的第一个元素 print list[-1] # 输出列表的最后一个元素 print list[1:3] # 输出第二个至第三个元素 print list[2:] # 输出从第三个开始至列表末尾的所有元素 print list[:5] print tinylist * 2 # 输出列表两次 print list + tinylist # 打印组合的列表 for item in range(len(arr)): print(arr(item)) for item in arr: #遍历数组 print(item)
分页流程demo
page_count=2#每页几个 page_index=1#当前页 m=len(books)/page_count n=len(books)//page_count#向下取整 pages=n if m==n else n+1 #总页面 books_index=books[(page_index-1)*page_count:page_index*page_count]#显示第一页 print(books_index)
-
list 操作
fruits = ['orange', 'apple', 'pear', 'banana'] # 统计 # print (fruits.count('apple')) # 判断是否存在 # print (fruits.index('apple')) # 从第三个位置开始寻找 # print (fruits.index('apple',3)) # 反转,反的是自己,不能赋给别人 # fruits.reverse() # f=fruits[::-1]#反转之后给别人,切片没有操作数据的能力 # fruits.sort()#排序
-
列表方法
fruits = ['orange', 'apple', 'pear', 'banana'] # 增加元素(从后面加入) # fruits.append('kiwi') # 增加集合 # fruits.extend(['kiwi','water']) # 合并两个列表(可以在前面加,也可以在后面加) # new_fruits=fruits+['kiwi','water'] # new_fruits=['kiwi','water']+fruits # 插入元素(第一个是索引,这种方法开销很大,插入后若空间不够要移到其它空间) # fruits.insert(0,'pick'); # 删除元素(若apple没有会报错) # fruits.remove('apple') # del fruits[1] # fruits[2:4]=[] # 删除列表末尾的元素 # fruit表s.pop() # 替换元素 # fruits[0:3]=['橙子','苹果','梨'] # 清空元素 # fruits.clear() # del fruits[:] #不同于del fruits # fruits[ : ]=[] # 判断是否存在 # print('apple' in fruits) # 最大最小值 # print(max(fruits)) # print(min(fruits))
-
栈和队列
# -*- coding: UTF-8 -*- from collections import deque fruits = ['orange', 'apple', 'pear', 'banana'] from collections import deque queue = deque(fruits) # 先进先出:队列 queue.append('haha') queue.popleft() # 先进后出 queue.append('') queue.pop() print(list(queue))
模糊查询图书demo
books=['三国演义','西游记','三国志','三国杀','水浒传'] result_book = [] display=','.join(books) print(display) while True: con = input('请搜索\n') if con=='exit': break else: result_book.clear() for book in books: if con in book: result_book.append(book) print(result_book)
二维数组:图书按价格排序demo
books=[ ['三国演义','罗贯中',160,'三国出版社',120], ['西游记','吴承恩',80,'西天出版社',10], ['三国志','陈寿',130,'三国出版社',20], ['三国杀','腾讯',500,'企鹅出版社',120], ['王者荣耀','腾讯',200,'企鹅出版社',20], ['水浒传','施耐庵',100,'梁山出版社',10] ] arr=[] #用于存放价格排序和索引 for i in range(len(books)): li=[books[i][2],i] arr.append(li) arr.sort() print(arr) result_list=[] for item in arr: #item->[80,1] i=item[1] result_list.append(books[i]) print(result_list)
-
列表初始化
squares=[] squares=[x**2 for x in range(10)] vec = [-4, -2, 0, 2, 4] vec2=[x*2 for x in vec] vec3=[x for x in vec if x >= 0] vec4=[abs(x) for x in vec] print ([(x, x**2) for x in range(6)])
补充:map()
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
arr=[1,2,3,4] mm=map(lambda x:x ** 2,arr) print(next(mm)) for res in mm: print(res)
去掉列表元素单词左右空格
freshfruit = [' banana', ' loganberry ', 'passion fruit '] # 去掉单词左右空格 freshfruit=[weapon.strip() for weapon in freshfruit]
-
排序
- 冒泡法
list01=[6,9,3,4,2,7,5] i=0 length=len(list01) while i<length-1: #剩一个的时候不用再来一轮,所以是长度减一 j=0 while j<length-1-i: #每一次都把最大值放在最后,所以在下一轮去掉已经在后面排好的数据个数 if list01[j]>list01[j+1]: #每一个数据和下一个比较 t=list01[j] list01[j]=list01[j+1] list01[j+1]=t j=j+1 i=i+1 print(list01)
- 选择法
list02=[2,1,7,4,3,9,5] length=len(list02) i=0 while i<length-1: #除去最后一个 j=i+1 #与下一个比较 min_position=i #用于记录最小值的位置 while j<length: if list02[min_position]>list02[j]: min_position=j#如果找到较小值就记下位置 j=j+1 t=list02[i] list02[i]=list02[min_position] list02[min_position]=t i=i+1 print(list02)