一些Python的面试题(一)

本文探讨了Python的基础面试题目,包括列表和元组的区别,'is'与'=='的用法,range函数的使用,列表连接,字符串插值,reverse函数的应用,字符串与列表乘法,以及赋值、浅拷贝和深拷贝的概念。同时解释了func与func()的差异,展示了如何在Python中操作和理解这些基本概念。

1.列表和元组

列表(list):可变类型,创建后可以对表内元素进行修改;列表表示的顺序,通常是同一类型的对象,如

a = [1, 2, 3]

元组(tuple):不可变类型,一旦创建就不能进行更改;元组表示结构,可以用来存储不同类型的元素,如

b = (1, "2", [3, 4], {"5":"five"})

注意,虽然元组内不可改变,但是元组内列表可以改变,如

b = (1, "2", [3, 4], {"5":"five"})
print(b)
print(id(b))
b[2][1]=7
b[3]["5"] = "six"
print("=============")
print(b)
print(id(b))

执行代码后结果

(1, '2', [3, 4], {'5': 'five'})
1742819838776
=============
(1, '2', [3, 7], {'5': 'six'})
1742819838776

2.“is”和“==”区别

“is”用来检查对象的标识(id),“==”用来检查两个对象是否相等。

a = [1, 2, 3]
b = a 
c = [1, 2, 3]
print(a == b)
print(a == c)
print("="*10)
print(a is b)
print(a is c)
print("="*10)
print(id(a))
print(id(b))
print(id(c))

输出结果为:

True
True
==========
True
False
==========
1391052375368
1391052375368
1391052335496

3.range函数

range函数可以用来创建一个整数列表,有三种用法

# range 函数的第一种用法
a = [i for i in range(10)]
print(a)
print("="*30)
# range 函数的第二种用法
b = [i for i in range(0,10)]
print(b)
print("="*30)
# range 函数的第三种用法
c = [i for i in range(0,10,2)]
print(c)

输出结果为

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

4.Python中连接列表

a = [1, 2, 3]
b = [4, 5]
c = a + b
print(c)

输出结果:

[1, 2, 3, 4, 5]

5.字符串插值

name  = "xiaoming"
# 1.
print("hello %s" %name)
print("="*20)
# 2.
print("my name is {}".format(name))
print("="*20)
# 3.只能在3.6之后的版本中执行
print(f"hello {name}")

输出结果为:

hello xiaoming
====================
my name is xiaoming
====================
hello xiaoming

6.使用reverse函数反转一个列表

alist = [i for i in range(10)]
print(alist)
print("="*30)
alist.reverse()
print(alist)

输出结果为:

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

reverse的另一种用法,在sort()函数中使用。

li = [7,2,5,4,1]
li.sort(reverse=True)
print(li)

输出结果为:

[7, 5, 4, 2, 1]

7.字符串乘法与列表乘法

a = "world"
print(a*3)
print("="*20)
b = [1, 2, 3]
print(b*3)

输出结果为:

worldworldworld
====================
[1, 2, 3, 1, 2, 3, 1, 2, 3]

8.赋值,浅拷贝与深拷贝

直接赋值操作:a怎么变,b就怎么变(结婚了,组成一个家庭?)

浅拷贝:m内可变元素改变,n内可变元素随之改变,但是n不随m而改变(离婚了但是有孩子?)

深拷贝:随便x怎么改变,y也不改变,x和y没有关系(离婚了没孩子,各过各的?)。

import copy


# 直接赋值
a = [1, 2, [3, 4, 5]]
b = a
a.append(6)
a[2][0] = 9
print(b)
print("="*20)

# 浅拷贝
m = [1, 2, [3, 4, 5]]
n = m.copy()
m.append(6)
m[2][0] = 9
print(n)
print("="*20)

# 深拷贝
x = [1, 2, [3, 4, 5]]
y = copy.deepcopy(x)
x.append(6)
x[2][0] = 9
print(y)

输出结果为:

[1, 2, [9, 4, 5], 6]
====================
[1, 2, [9, 4, 5]]
====================
[1, 2, [3, 4, 5]]

9.func和func()

def func():
	print("hello world!")

print(func)
print("="*20)
func()

输出结果为:

<function func at 0x00000164C6DF7F28>
====================
hello world!

func是表示对象的函数,它可以被分配给变量或传递给另一个函数。

func()是直接调用该函数并返回其输出值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值