list

list, 列表

1. 列表特性

  • 可修改对象(mutable)
  • 可包含的元素:任何py里的数据结构
  • 属于sequence,可以使用任何sequence的方法和函数

1.1 mutable特性验证

  • 同一个变量,改变它的对象内容,id仍然为一个,说明对象id没有变化,修改的是同一个对象
  1. list1 = ['a',(7,9),8]
  2. print list1
  3. print id(list1)
  4. list1[2] = (88,'listA')
  5. print list1
  6. print id(list1)
  7. '''
  8. ['a', (7, 9), 8]
  9. 39312960
  10. ['a', (7, 9), (88, 'listA')]
  11. 39312960
  12. '''

2. 列表元素读取

  1. list1 = ['a',(7,9),8]
  2. print list1[1]
  3. print type(list1[1])
  4. '''
  5. (7, 9)
  6. <type 'tuple'>
  7. '''

3. 列表元素修改

  1. list1 = ['a',(7,9),8]
  2. list1[1] = 'sxq'
  3. print list1
  4. '''
  5. ['a', 'sxq', 8]
  6. '''

4. 列表元素删除

  1. list1 = ['a',(7,9),8]
  2. del list1[1]
  3. print list1
  4. '''
  5. ['a', 8]
  6. '''

5. 列表删除

  1. list1 = ['a',(7,9),8]
  2. del list1
  3. print list1
  4. '''
  5. NameError: name 'list1' is not defined
  6. '''

6. 列表计算

6.1 长度

len([1,2,6,’sxq’])

6.2 组合

print [1,2,22] + [22,33,44] # [1,2,22,22,33,44]

6.3 重复

x = [5]5 #[5, 5, 5, 5, 5]
y = [[1,’sxq’]]
5 #[[1, ‘sxq’], [1, ‘sxq’], [1, ‘sxq’], [1, ‘sxq’], [1, ‘sxq’]]
y[0] = [‘pp’] #变量——重新指针到其他list, [[‘pp’], [1, ‘sxq’], [1, ‘sxq’], [1, ‘sxq’], [1, ‘sxq’]]
y[1].append(‘ppp’) #对象——修改对象,后四个为同一个对象,修改一个,其他都应该变化,[[‘pp’], [1, ‘sxq’, ‘ppp’], [1, ‘sxq’, ‘ppp’], [1, ‘sxq’, ‘ppp’], [1, ‘sxq’, ‘ppp’]]

6.3.1 列表内元素为mutable(可变)对象是,使用列表重复要千万小心,只是同一个对象的几次重复;

6.4 元素存在

x = [5]*5
5 in x #True
‘5’ in x #False

6.5 迭代

x = [‘1’,2,’hello’]
for index in x: print index

7. 列表函数

7.1 cmp(list1,list2)

  • 返回为一个int,-1(list1小于list2),0(list1等于list2),1(list1大于list2);
  • 先比较list1/list2的第一个元素,list1大于list2则返回1,小于则返回-1,再比较第二个元素,依次类推,全部都相同则返回0;
  • 如果比较的元素是同类型的,则比较其值,返回结果;
  • 如果两个元素,如果是数字,强制转换为数字比较,通过类型名字的字母顺序进行比较;

7.2 len(list)获取列表长度

7.3 max(list)获取列表最大值,返回值类型和list里最大值类型一致

7.4 min(list)获取列表最小值,返回值类型和list里最小值类型一致

7.5 list(seq)将其他sequence转换为list

8. 列表方法

8.1 list.append(obj) 在列表末尾添加新的对象

8.2 list.count(obj) 统计某个元素在列表中出现的次数

list1 = [1,1,1,1,1,1,’1’,’shit’];list1.count(1)

8.3 list.extend(list) 在列表末尾一次性追加另一个list中的多个值(用新列表扩展原来的列表)

list1,list2 = [1,1,1,1,1,1,’1’,’shit’],[‘a’,’b’]
list1.extend(list2)
print list1 #[1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’]

8.4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置,第一个很重要哦

[1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’].index(‘shit’) # 7

8.5 list.insert(index, obj) 将对象插入列表,插在index的前面,代替index;

list1 = [1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’]
list1.insert(7,’aaa’)
print list1 # [1, 1, 1, 1, 1, 1, ‘1’, ‘aaa’, ‘shit’, ‘a’, ‘b’]

8.6 list.pop(obj=list[-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

list1 = [1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’]
list1.pop() # 默认删除最后一个元素,并返回该值
list1.pop(7) #’shit’ #[1, 1, 1, 1, 1, 1, ‘1’, ‘a’, ‘b’]

8.7 list.remove(obj) 移除列表中某个值的第一个匹配项

list1 = [1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’]
list1.remove(‘shit’)
print list1 # [1, 1, 1, 1, 1, 1, ‘1’, ‘a’, ‘b’]

8.8 list.reverse() 反向列表中元素

list1 = [1, 1, 1, 1, 1, 1, ‘1’, ‘shit’, ‘a’, ‘b’]
list1.reverse()
print list1 # [‘b’, ‘a’, ‘shit’, ‘1’, 1, 1, 1, 1, 1, 1]

8.9 list.sort([func]) 对原列表进行排序

比较复杂,请看list.sort()详细解析

9. 列表分片

list1 = [10,9,8,7,6,5,4,3,2,1,0]

9.1 对于list[x:y],或者其他sequence,不仅仅list,x必须出现的比y早;否则会返回一个空[]list,空sequence;

list1[:]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0] #第0个到最后
list1[1:]
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0] #第一个到最后
list1[:1]
[10] #第0个到第一个
list1[:-1]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1] #第0个到第-1个
list1[2:1]
[] #2比1出现的晚,返回空list
list1 = range(11)
list1.reverse() #ABC
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
list1[::2] #分片加入+步长
[10, 8, 6, 4, 2, 0]
list1[::-2] #分片加入-步长,负数步长只是加入reverse功能,反转list

9.2 实战例子,把一个list变成dict

list1 = [‘one’, 1, ‘two’, 2, ‘three’, 3, ‘four’, 4, ‘five’, 5]
list1_key = list1[0::2]
list1_value = list1[1::2]
dict1 = dict(zip(list1_key,list1_value))
print dict1 # {‘four’: 4, ‘three’: 3, ‘five’: 5, ‘two’: 2, ‘one’: 1}





posted @ 2016-09-11 14:58  lshconfigure  阅读(170)  评论(0编辑  收藏  举报