首页 > 试题广场 >

执行下列选项中的程序,输出结果为False的是()

[单选题]

执行下列选项中的程序,输出结果为False的是()

  • t1 = (1,2,3)

    t2 = t1[:]

    print(t1 is t2)

  • lis1 = [1,2,3]

    lis2 = lis1[:]

    print(id(lis1)==id(lis2))

  • s1 = '123'

    s2 = '123'

    print(s1 is s2)

  • a = 123

    b = 123

    print(id(a) == id(b))

==判断两个对象的值是否相等
is判断两个变量引用的对象是否相同
ps:
值相同的不可变对象,不会创建新的地址储存(较大型不可变对象除外,也会重新开辟空间)
值相同的可变对象,会重新开辟空间
发表于 2022-01-18 17:05:19 回复(0)
Python出于对性能的考虑,但凡是不可变对象,在同一个代码块中的对象,只有是值相同的对象,就不会重复创建,而是直接引用已经存在的对象
发表于 2022-01-17 17:27:18 回复(0)
补充一下D的解释,python中对于创建范围在[-5,257)之间的整数对象,不会新建对象,而是直接从小整数对象池中选取,因此:
a = 123
b = 123
id(a)  # 140724184635376
id(a)  # 140724184635376

#####

a = 257
b = 257
id(a)  # 2514411609360
id(b)  # 2514411609904


编辑于 2022-03-08 12:27:48 回复(7)
这里面只有list是可变类型
发表于 2022-01-05 19:11:04 回复(0)
1. 全切片相当于浅拷贝;
2. 在浅拷贝中,若被拷贝的对象是可变类型,如列表和字典,则拷贝对象的内存地址与原来的不一样;
3. 在浅拷贝中,若被拷贝的对象是不可变类型,如元组和字符串,则浅拷贝相当于引用,即仍然指向原来的被拷贝对象的内存地址;
4. ==判断的是数值是否相同;
5. is判断的是内存地址是否相同。
发表于 2023-10-04 20:05:15 回复(0)
list可变,tuple不可变
发表于 2022-02-13 20:42:45 回复(0)
列表与元组的切片:
    列表的切片是产生新的内存地址;元组在[:]时是赋值,其余切片是产生新的内存地址

python编辑器在开启之初是设置了一些简单值的内存地址的,在变量赋值时不会产生新的内存地址
比如下面的代码就返回True
a = 1 b = 1 print(a is b)

发表于 2022-05-31 17:11:27 回复(1)
列表的切片操作会创建副本
发表于 2022-04-02 09:41:23 回复(0)
==判断两个对象的值是否相等
is判断两个变量引用的对象是否相同
ps:
值相同的不可变对象,不会创建新的地址储存(较大型不可变对象除外,也会重新开辟空间)
值相同的可变对象,会重新开辟空间

发表于 2022-03-18 09:48:43 回复(0)

发表于 2023-10-31 17:48:29 回复(0)
A  元组为不可变类型所以t1t2的id是一样的 is就是根据id来判断的
B 列表为可变类型 id不同了
C 字符串为不可变类型同A
D ==就是根据值来判断的


发表于 2023-09-05 22:04:40 回复(0)
id() 函数返回对象的唯一标识符,标识符是一个整数。 CPython 中 id() 函数用于获取对象的内存地址。
发表于 2023-03-17 08:35:30 回复(0)
B选项详解:

编辑于 2023-03-02 02:26:23 回复(0)
元组能切片?他妈瞎搞的吧
发表于 2023-02-20 18:09:52 回复(0)
切片操作相当于浅拷贝吧
发表于 2023-01-22 16:46:39 回复(0)
元祖能做切片吗,奇怪
发表于 2022-11-22 18:59:20 回复(0)
切片会在其他内存地址创建新的列表,故id(a)!=id(b)
发表于 2022-09-03 15:42:37 回复(0)
list是可变得,所以不相等
发表于 2022-08-18 14:42:40 回复(0)
b选项相当于copy
发表于 2022-08-16 23:33:18 回复(0)
什么是内存驻留
发表于 2022-06-27 12:56:57 回复(0)