python list 列表
文章目录
python list 列表
1. 查对象(切片)
2. 查索引(index)
3. 插入(append)
4. 增添(extend)
5. 删除 (remove pop del)
5.1 remove
5.2 pop
5.3 del
6. 修改
7. 计数(count)
8. 颠倒(reverse)
9. 排序(sort)
9.1 数字排序
9.2 字母排序
9.2 key 值排序
9.3 按部分字符串排序
9.4 按长度排序
10. 不改变源列表排序(sorted)
10.1 按照字符串中的数字排序
11. 列表脚本操作符
12. 列表函数
13. 列表推导式
14. 列表常用场景
14.1 遍历
14.2 遍历加索引
14.3 多列表遍历
14.3.1 zip
14.3.2 笨办法多列表遍历
14.4 检查列表是否为空
14.5 拷贝一个列表对象
14.6 获取列表中的最后一个元素
14.7 随机获取列表中的某个元素
14.8 list与string的转换
14.8.1 list转换string
14.8.2 string转换list
14.9 list(列表)添加dict(字典)
14.20 txt文件内容转换成列表
1. 查对象(切片)
$ vim list0.py a=['wuhao','jinxing','xiaohu','sanpang','ligang'] print(a[0]) #取第一个 print “a[1]:”,a[1] #取第一个 print(a[1]) #取第二个 print(a[-1]) #取最后一个 print(a[1:4]) #取第二个到第四个 print(a[1:]) #取第二个到最后个 print(a[1:-1]) #取第二个到最后个 print(a[1:-1:1]) #从左到右一个一个取 print(a[1::2]) #从左到右隔一个一个取 b=a[3::-1] #从右到左一个一个取 print(b) print(a[-2::-1])#从右到左一个一个取 print(a[1:-1:-2])#从右到左隔一个一个取 $ python list1.py wuhao a[1]: jinxing jinxing ligang ['jinxing', 'xiaohu', 'sanpang'] ['jinxing', 'xiaohu', 'sanpang', 'ligang'] ['jinxing', 'xiaohu', 'sanpang'] ['jinxing', 'xiaohu', 'sanpang'] ['jinxing', 'sanpang'] ['sanpang', 'xiaohu', 'jinxing', 'wuhao'] ['sanpang', 'xiaohu', 'jinxing', 'wuhao'] []
特色版
first_two = [1, 2, 3, 4, 5][0:2] print(first_two) # [1, 2] steps = [1, 2, 3, 4, 5][0:5:2] print(steps) # [1, 3, 5] mystring = "abcdefdn nimt"[::2] print(mystring) # 'aced it'
2. 查索引(index)
$ cat list1.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxin','xiaohu','ligang','sanpang','ligang'] print(a.index('jinxin')) first_lg_index = a.index("ligang") print("first_lg_index",first_lg_index) little_list = a[first_lg_index+1:] #切片 second_lg_index = little_list.index("ligang") print("second_lg_index",second_lg_index) second_lg_index_in_bgg_list = second_lg_index + second_lg_index + 1 print("second_lg_index_in_bgg_list",second_lg_index_in_bgg_list) print("sedcond lg:",a[second_lg_index_in_bgg_list]) $ python list9.py 1 ('first_lg_index', 3) ('second_lg_index', 1) ('second_lg_index_in_bgg_list', 3) ('sedcond lg:', 'ligang')
3. 插入(append)
$ cat list2.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxing','xiaohu','sanpang','ligang'] list = [] ## 空列表 a.append('xuepeng') #将数据插入到最后一个位置 print(a) a.insert(1,"liming") #将数据插入到任意一个位置(有一个查询动作,效率高) print(a) numbers = [12,37,5,42,8,3] even = [] odd = [] while len(numbers) > 0: number = numbers.pop() if(number % 2) == 0: even.append(number) else: odd.append(number) print even print odd $ python list2.py ['wuhao', 'jinxing', 'xiaohu', 'sanpang', 'ligang', 'xuepeng'] ['wuhao', 'liming', 'jinxing', 'xiaohu', 'sanpang', 'ligang', 'xuepeng'] [8, 42, 12] [3, 5, 37]
4. 增添(extend)
第一种增添
$ cat list3.py #!/usr/bin/python #!---coding:utf-8---- a = [1,2,3] b = [4,5,6] a.extend(b) print a $ python list3.py [1, 2, 3, 4, 5, 6]
第二种增添
listone = [1, 2, 3] listtwo = [4, 5, 6] mergedlist = listone + listtwo print(mergelist) >>> [1, 2, 3, 4, 5, 6]
增添" + "的扩展(class)
class User(object): def __init__(self, age): self.age = age def __repr__(self): return 'User(%d)' % self.age def __add__(self, other): age = self.age + other.age return User(age) user_a = User(10) user_b = User(20) c = user_a + user_b print(c) >>> User(30)
5. 删除 (remove pop del)
5.1 remove
$ cat list4.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxing','xiaohu','sanpang','ligang'] a.remove(a[0]) print(a) a.remove('jinxing') print(a) $ python list4.py ['jinxing', 'xiaohu', 'sanpang', 'ligang'] ['xiaohu', 'sanpang', 'ligang']
5.2 pop
$ cat list5.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxing','xiaohu','sanpang','ligang'] a.pop(1) #pop删除时会返回被删除的元素 b=a.pop(1) print(b) print(a) $ python list5.py xiaohu ['wuhao', 'sanpang', 'ligang']
5.3 del
$ cat list6.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxing','xiaohu','sanpang','ligang'] del a[0] print(a) del a[2:4] #删除从第2个元素开始,到第4个为止的元素(但是不包括尾部元素) print(a) $ python list6.py ['jinxing', 'xiaohu', 'sanpang', 'ligang'] ['jinxing', 'xiaohu']
6. 修改
$ cat list7.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxing','xiaohu','sanpang','ligang'] a[1]='haidilao' print(a) a[1:3]=['a','b'] print(a) $ python list7.py ['wuhao', 'haidilao', 'xiaohu', 'sanpang', 'ligang'] ['wuhao', 'a', 'b', 'sanpang', 'ligang']
7. 计数(count)
$ cat list8.py #!/usr/bin/python #!---coding:utf-8---- print ['to','be','or','not','to','be'].count('to') x = [[1, 2],1,1,[1,2],3] print x.count(1) print x.count([1,2]) $ python list8.py 2 2 2
8. 颠倒(reverse)
$ cat list10.py #!/usr/bin/python #!---coding:utf-8---- a=['wuhao','jinxin','xiaohu','ligang','sanpang','ligang'] a.reverse() print(a) $ python list10.py ['ligang', 'sanpang', 'ligang', 'xiaohu', 'jinxin', 'wuhao']
9. 排序(sort)
9.1 数字排序
- 数字递增排序
- 数字递减排序
- 首字母排序
$ cat list11.py #!/usr/bin/python #!---coding:utf-8---- x = [4,6,1,7,9] x.sort() print(x) x.sort(reverse=True) print(x) $ python list11.py [1, 4, 6, 7, 9] [9, 7, 6, 4, 1]
默认是按升序排列,指定 reverse=True
按降序排列
9.2 字母排序
# vowels list vowels = ['e', 'a', 'u', 'o', 'i'] # sort the vowels vowels.sort() print('Sorted list:', vowels) vowels.sort(reverse=True) print('Sorted list (in Descending):', vowels)
输出:
Sorted list: ['a', 'e', 'i', 'o', 'u'] Sorted list (in Descending): ['u', 'o', 'i', 'e', 'a']
9.2 key 值排序
第一例:按照第二个值排序
# take second element for sort def takeSecond(elem): return elem[1] # random list random = [(2, 2), (3, 4), (4, 1), (1, 3)] # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)
输出:
Sorted list: [(4, 1), (2, 2), (1, 3), (3, 4)]
当把elem[1]
改成elem[0]
,就会按照第一个值排序。
第二例
items = [{'name': 'Homer', 'age': 39}, {'name': 'Bart', 'age': 10}, {"name": 'cater', 'age': 20}] items.sort(key=lambda item: item.get("age")) print(items) >>> [{'age': 10, 'name': 'Bart'}, {'age': 20, 'name': 'cater'}, {'age': 39, 'name': 'Homer'}]
9.3 按部分字符串排序
split()
按空格分离字符串, [-1]
则取出每组里的最后一部分
>>> a = ["John Smith", "Alice Young", "John Scott Brown"] >>> a.sort(key=lambda x:x.split()[-1]) >>> a ['John Scott Brown', 'John Smith', 'Alice Young']
9.4 按长度排序
>>> a = ["John Smith", "Alice Young", "John Scott Brown"] >>> a.sort(key=len) >>> a ['John Smith', 'Alice Young', 'John Scott Brown'] >>> a.sort(key=len, reverse=True) >>> a ['John Scott Brown', 'Alice Young', 'John Smith']