[python]组合数据类型,头歌选择题

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序列》一节告诉我们,使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。

请看下面的演示:

纯文本复制
 
  1. language = ["Python", "C++", "Java"]
  2. birthday = [1991, 1998, 1995]
  3. info = language + birthday
  4. print("language =", language)
  5. print("birthday =", birthday)
  6. 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 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。

请看下面的演示:

 
  1. l = ['Python', 'C++', 'Java']
  2. #追加元素
  3. l.append('PHP')
  4. print(l)
  5. #追加元组,整个元组被当成一个元素
  6. t = ('JavaScript', 'C#', 'Go')
  7. l.append(t)
  8. print(l)
  9. #追加列表,整个列表也被当成一个元素
  10. l.append(['Ruby', 'SQL'])
  11. 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 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。

请看下面的演示:

 
  1. l = ['Python', 'C++', 'Java']
  2. #追加元素
  3. l.extend('C')
  4. print(l)
  5. #追加元组,元祖被拆分成多个元素
  6. t = ('JavaScript', 'C#', 'Go')
  7. l.extend(t)
  8. print(l)
  9. #追加列表,列表也被拆分成多个元素
  10. l.extend(['Ruby', 'SQL'])
  11. 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() 是一样的。

请看下面的演示代码:

 
  1. l = ['Python', 'C++', 'Java']
  2. #插入元素
  3. l.insert(1, 'C')
  4. print(l)
  5. #插入元组,整个元祖被当成一个元素
  6. t = ('C#', 'Go')
  7. l.insert(2, t)
  8. print(l)
  9. #插入列表,整个列表被当成一个元素
  10. l.insert(3, ['Ruby', 'SQL'])
  11. print(l)
  12. #插入字符串,整个字符串被当成一个元素
  13. l.insert(0, "http://c.biancheng.net")
  14. 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表示倒序

 
  1. L2 = [[1,2,3,4],[5,6,7,8]]
  2. L2.sort(reverse = True)
  3. 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}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球原来是这个样子啊我去

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值