Python3基础-列表、元组操作

 Q:什么是列表 

-----【有序列表】列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

Tips:定义一个列表

names = ['Roman',"Tenglan",'Eric','Ronny']

通过指针可以访问到指定的元素,从左到右 0 开始计数

>>> names[0]
'Roman'
>>> names[2]
'Eric'
>>> names[-1]
'Ronny'
>>> names[-2] #还可以倒着取
'Eric'
  •  切片:

获取列表中多个元素

>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names[1:3]#取索引1到3之间的元素,不包括索引为3的元素
['Tenglan', 'Eric']
>>>names[-1]#取最后一个元素
'Ronny'
>>>names[:3]#取0到3之间的元素,不包括索引为3的元素
['Roman', 'Tenglan', 'Eric']
>>>names[0:3]#同上,效果一样
['Roman', 'Tenglan', 'Eric']
>>>names[3:]#取3到结尾的所有元素
['Ronny']
>>>names[0::2]从0开始到结尾,每隔一个元素取值
['Roman', 'Eric']
>>>names[::2]#同上,效果一样
['Roman', 'Eric']
  •  追加:

语法:list.append(obj) 在末尾追加新的对象

>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.append('新加入Tom')
>>>names
['Roman', 'Tenglan', 'Eric', 'Ronny', '新加入Tom']
  •  插入:

语法:list.insert(index.obj) 在index位置追加新的对象

>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.insert(1,'插入的bin')
>>>names
['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny']
  •  修改:

语法:list[index]=obj  在index位置把原来的对象修改为obj

>>>names=['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny']
>>>names[1]='替换的Tonny'
>>>names
['Roman', '替换的Tonny', 'Tenglan', 'Eric', 'Ronny']
  •  删除:

语法【1】:list.pop(index)  删除index的对象---通过索引删除--pop()删除末尾最后一个对象

语法【2】:del list[index]  删除index的对象---通过索引删除--del系统方法

语法【3】:list.remove[obj]  删除obj对象---通过对象删除

>>>names=['Roman', '插入的bin', 'Tenglan', 'Eric', 'Ronny']
>>>names.pop()
'Ronny'
>>>names
['Roman', '插入的bin', 'Tenglan', 'Eric']
>>>names.pop(0)
'Roman'
>>>names
['插入的bin', 'Tenglan', 'Eric']
>>>del names[0]
>>>names
['Tenglan', 'Eric']
>>>names.remove('Tenglan')
>>>names
['Eric']
  •  清空:

语法:list.clear()  清空列表,此时列表还在,为空列表

>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.clear()
>>>names
[]
  •  查找:

语法:list.index(obj)  从列表中找出某个值第一个匹配项的索引位置

>>>names = ['Roman',"Tenglan",'Eric','Ronny']
>>>names.index('Ronny')
3
  •  统计:

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

>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny']
>>>names.count('Ronny')
2
  •  追加列表:

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

>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny']
>>>names1=['Tonny','Kim']
>>>names.extend(names1)
>>>names
['Roman', 'Tenglan', 'Ronny', 'Eric', 'Ronny', 'Tonny', 'Kim']
  •  拷贝:

语法【1】:list1=list1.copy( )  

>>>names = ['Roman',"Tenglan",'Ronny','Eric','Ronny']
>>>names_1=names.copy()
>>>names_1
['Roman', 'Tenglan', 'Ronny', 'Eric', 'Ronny']

Q:如果copy的列表存在多层嵌套,修改原list的耳机列表对象值,copy的列表值有何变化?

  • copy()只能做到潜复制,只能复制第一层列表对象,二层或多层列表的对象内存不会改变
>>>names = ['Roman',"Tenglan",'Ronny',['Eric','Ronny']]
>>>names_1=names.copy()
>>>names_1
['Roman', 'Tenglan', 'Ronny', ['Eric', 'Ronny']]
>>>names[0]='修改的Roman'#修改第一层列表的值
>>>names
['修改的Roman', 'Tenglan', 'Ronny', ['Eric', 'Ronny']]#已经变化
>>>names_1
['Roman', 'Tenglan', 'Ronny', ['Erici', 'Ronny']]#未改变
>>>names[3][0]='修改的Tonny'#修改第二层列表的值
>>>names
['Roman', 'Tenglan', 'Ronny', ['修改的Tonny', 'Ronny']]#已经变化
>>>names_1
['Roman', 'Tenglan', 'Ronny', ['修改的Tonny', 'Ronny']]#已经变化

names_1中嵌套的列表内存地址和names内存地址同一个

 


语法【2】:list=list1[:]    切片复制

>>>person=['name',['存款',100]]
>>>person1=person[:]
>>>person2=person[:]
>>>person1[0]='Ronny'
>>>person2[0]='Angel'
>>>person1[1][1]=1000
>>>person1
['Ronny', ['存款', 1000]] 
>>>person2
['Angel', ['存款', 1000]]
  •  排序&翻转:
>>> names
['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
>>> names.sort()
>>> names
['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']

>>> names.reverse() #反转
>>> names
['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']
  • 遍历 
方法一:遍历列表的值
for i in range(11):
    print(i)

方法一:遍历列表的键和值
使用enumerate 方法
for key,v in enumerate(range(11)):
    print(key,v)
  •  列表操作符号 

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。

如下所示:

Python 表达式结果描述
len([1, 2, 3]) 3 长度
[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] 组合
['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代

#遍历列表, 打印索引和元素

#遍历列表, 打印索引和元素
names = ['Tom', 'Jerry', 'Marry']
for index, name in enumerate(names):
                print('names[{}] = {}'.format(index, name))
 
 
打印结果:
names[0] = Tom
names[1] = Jerry
names[2] = Marry

 Q:什么是元祖

-----【只读列表】tuple元祖和列表类似,只是不能修改和追加

Tips:定义一个tuple

>>>names = ('Roman',"Tenglan",'Ronny','Eric','Ronny')

len(tuple)可以获取列表的长度

tuple只有count(obj) 和 index(obj) 方法 

 

posted @ 2017-08-01 10:30  Ronny_bin  阅读(114)  评论(0)    收藏  举报