python题目集合1
大约 4 分钟
python题目集合1
列表推导式应用
- 将a = [ [1,2],[3,4], ] 输出 [1,2,3,4] 一行完成
print([y for x in a for y in x])进阶一点: 一行代码实现1-100之和
print(sum([x for x in range(1, 101)]))- 列表生成式,产生一个公差为11的等差数列
print([x for x in range(1, 100, 11)])变种: 求出列表所有奇数并构造新列表
a = [1,2,3,4,5,6,7,8,9,10]
res = [ i for i in a if i%2==1]
print(res) # [1, 3, 5, 7, 9]变种: 该函数的输入是一个仅包含数字的list,输出一个新的list,其中每一个元素要满足以下条件:
- 该元素是偶数
- 该元素在原list中是在偶数的位置(index是偶数)
a = [1,2,3,4,5,6,7,8,9,10]
res = [ i for i in a if i%2==0 and a.index(i)%2==0]
print(res) # [2, 4, 6, 8, 10]变种: 用一行代码生成[1,4,9,16,25,36,49,64,81,100]
print([x*x for x in range(1, 11)])变种: 请用一行代码 实现将1-N 的整数列表以3为单位分组
n= 100
print ([[x for x in range(1,n)] [i:i+3] for i in range(0,100,3)])解析 分成两部分看:
- 第一部分:
[x for x in range(1,n)]是一个列表生成式,生成一个1-N的列表 生成的列表是:[1, 2, 3, 4, 5, 6, 7, 8, 9...n] - 第二部分:
[第一部分的列表][i:i+3]是一个切片操作,将列表分成3个一组for i in range(0,100,3)是一个for循环,从0开始,每次加3,直到100 这部分相当于切片操作的外层循环 所以这部分相当于将列表分成3个一组的列表[[1, 2, 3], [4, 5, 6], [7, 8, 9]...]
字符串join函数
x = 'abc',y='def',z=['d','e','f'],求x.join(y),x.join(z)的结果
x = 'abc'
y = 'def'
z = ['d', 'e', 'f']
print(x.join(y))
print(x.join(z))结果:
dabceabcf
dabceabcfprint 交换两个值
a = 1, b = 2, 交换a和b的值
a = 1
b = 2
a, b = b, a
print(a, b)结果:
2 1encode和decode
encode 和 decode 是字符串的两个方法,分别是编码和解码 举例: a = '中文',将a编码为utf-8
a = '中文'
print(a.encode('utf-8'))结果:
b'\xe4\xb8\xad\xe6\x96\x87'将b'\xe4\xb8\xad\xe6\x96\x87'解码为utf-8
a = b'\xe4\xb8\xad\xe6\x96\x87'
print(a.decode('utf-8'))结果:
中文列表相加
a = [1,2,3], b = [4,5,6], 求a+b的结果
a = [1, 2, 3]
b = [4, 5, 6]
print(a + b)结果:
[1, 2, 3, 4, 5, 6]
## 写一个单例模式
```python
class SingleClass(object):
_instance = None
def __new__(cls, *args, **kwargs):
if cls._instance is None:
# cls._instance = object.__new__(cls,*args,**kwargs)
cls._instance = super().__new__(cls,*args,**kwargs)
return cls._instance
else:
return cls._instance
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
pass验证单例模式:
my_class = SingleClass()
my_class2 = SingleClass()
print(my_class is my_class2)结果:
True去除字符串中的空格
以下有两种办法: replace方法:
a = ' 1 2 3 4 5 6 7 8 9 0 '
print(a.replace(' ', ''))结果:
1234567890strip方法:
a = ' 1 2 3 4 5 6 7 8 9 0 '
print(a.strip())结果:
1234567890字符串转整数
a = '123',将a转换为整数
a = '123'
print(int(a))结果:
123字符串转浮点数
a = '123.456',将a转换为浮点数
a = '123.456'
print(float(a))结果:
123.456递归求和 完成1+2+3+4+5+6+7+8+9+10
def sum(n):
if n == 1:
return 1
else:
return n + sum(n - 1)
print(sum(10)) # 55递归求阶乘 完成5!
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) # 120排列数
什么是排列数? 从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个不同元素中取出m个元素的一个排列;从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元素的排列数,用符号A(n,m)表示。
def permutation(n, m):
if n == m:
return 1
else:
return n * permutation(n - 1, m)
print(permutation(5, 3)) # 60组合数
什么是组合数? 从n个不同元素中取出m(m≤n)个元素,不考虑顺序,叫做从n个不同元素中取出m个元素的一个组合;从n个不同元素中取出m(m≤n)个元素的所有组合的个数,叫做从n个不同元素中取出m个元素的组合数,用符号C(n,m)表示。
def combination(n, m):
if n == m:
return 1
else:
return combination(n - 1, m) + combination(n - 1, m - 1)
print(combination(5, 3)) # 10求两个列表的交集,并集,差集
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
print(list(set(a) & set(b))) # [3, 4, 5]
print(list(set(a) | set(b))) # [1, 2, 3, 4, 5, 6, 7]
print(list(set(a) - set(b))) # [1, 2]
print(list(set(b) - set(a))) # [6, 7]应用: 给定两个列表,怎么找出他们相同的元素和不同的元素?
a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
print(list(set(a) & set(b))) # [3, 4, 5]
print(list(set(a) ^ set(b))) # [1, 2, 6, 7]请写出一段python代码实现删除list里面的重复元素?
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(set(a)))生成0-100的随机数
import random
print(random.randint(0, 100))