1.可以用“==”比较两个列表是否相同
2.Python的列表可以嵌套,形成二维列表
3.“+”号可以用来拼接两个列表
4.不能创建一个字典的语句是( ) dict2={[1,2,3]:'uestc'}
列表可变,元组不可变
5.
alist=[1,3,5,7,9,11,13,15,17,19]
alist[3:7]#不到第七个
>>>[7, 9, 11, 13]
6.深浅拷贝
在 Python 中,对象赋值实际上是对象的引用。当创建一个对象,然后把它赋给另一个变量的时候,Python 并没有拷贝这个对象,而只是拷贝了这个对象的引用,我们称之为浅拷贝。
在 Python 中,为了使当进行赋值操作时,两个变量互补影响,可以使用 copy 模块中的 deepcopy 方法,称之为深拷贝。
append() 函数
当 list 类型的对象进行 append 操作时,实际上追加的是该对象的引用。
id() 函数:返回对象的唯一标识,可以类比成该对象在内存中的地址。
>>>alist = [] >>> num = [2] >>> alist.append( num ) >>> id( num ) == id( alist[0] ) True
如上例所示,当 num 发生变化时(前提是 id(num) 不发生变化),alist 的内容随之会发生变化。往往会带来意想不到的后果,想避免这种情况,可以采用深拷贝解决:
alist.append( copy.deepcopy( num ) )
7.
L = [1, 2, 3]*3
L
Out[31]:
[1, 2, 3, 1, 2, 3, 1, 2, 3]
8.
t=("cat","dog","tiger","human")
t[::-1]
>>>>('human', 'tiger', 'dog', 'cat')
9.
Python list列表添加元素的3种方法
实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。本节先来学习如何向列表中添加元素。
《Python序列》一节告诉我们,使用+
运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+
进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。
请看下面的演示:
纯文本复制
- language = ["Python", "C++", "Java"]
- birthday = [1991, 1998, 1995]
- info = language + birthday
- print("language =", language)
- print("birthday =", birthday)
- print("info =", info)
运行结果:
language = ['Python', 'C++', 'Java']
birthday = [1991, 1998, 1995]
info = ['Python', 'C++', 'Java', 1991, 1998, 1995]
从运行结果可以发现,使用+
会生成一个新的列表,原有的列表不会被改变。+
更多的是用来拼接列表,而且执行效率并不高,如果想在列表中插入元素,应该使用下面几个专门的方法。
Python append()方法添加元素
/append()时间效率优于另外其他三个方法//
append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:
listname.append(obj)
其中,listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
请看下面的演示:
- l = ['Python', 'C++', 'Java']
- #追加元素
- l.append('PHP')
- print(l)
- #追加元组,整个元组被当成一个元素
- t = ('JavaScript', 'C#', 'Go')
- l.append(t)
- print(l)
- #追加列表,整个列表也被当成一个元素
- l.append(['Ruby', 'SQL'])
- print(l)
运行结果为:
['Python', 'C++', 'Java', 'PHP']
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]
可以看到,当给 append() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。
Python extend()方法添加元素
extend() 和 append() 的不同之处在于:extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。
extend() 方法的语法格式如下:
listname.extend(obj)
其中,listname 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。
请看下面的演示:
- l = ['Python', 'C++', 'Java']
- #追加元素
- l.extend('C')
- print(l)
- #追加元组,元祖被拆分成多个元素
- t = ('JavaScript', 'C#', 'Go')
- l.extend(t)
- print(l)
- #追加列表,列表也被拆分成多个元素
- l.extend(['Ruby', 'SQL'])
- print(l)
运行结果:
['Python', 'C++', 'Java', 'C']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go']
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']
Python insert()方法插入元素
append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。
insert() 的语法格式如下:
listname.insert(index , obj)
其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。
当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。
请看下面的演示代码:
- l = ['Python', 'C++', 'Java']
- #插入元素
- l.insert(1, 'C')
- print(l)
- #插入元组,整个元祖被当成一个元素
- t = ('C#', 'Go')
- l.insert(2, t)
- print(l)
- #插入列表,整个列表被当成一个元素
- l.insert(3, ['Ruby', 'SQL'])
- print(l)
- #插入字符串,整个字符串被当成一个元素
- l.insert(0, "http://c.biancheng.net")
- print(l)
输出结果为:
['Python', 'C', 'C++', 'Java']
['Python', 'C', ('C#', 'Go'), 'C++', 'Java']
['Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java']
['http://c.biancheng.net', 'Python', 'C', ('C#', 'Go'), ['Ruby', 'SQL'], 'C++', 'Java']
提示,insert() 主要用来在列表的中间位置插入元素,如果你仅仅希望在列表的末尾追加元素,那我更建议使用 append() 和 extend()。
10.参数reverse默认值为False,表示正序,reverse=True表示倒序
L2 = [[1,2,3,4],[5,6,7,8]]
L2.sort(reverse = True)
print( L2)
>>>>>>[5, 6, 7, 8], [1, 2, 3, 4]
11.字典与列表的转化
d = dict([('spring',1),('summer',2),('autumn',3),('winter',4)]) print(list(d)) print(d) >>>['spring', 'summer', 'autumn', 'winter'] >>>{'spring': 1, 'summer': 2, 'autumn': 3, 'winter': 4}