Day 16, Python知识点走起~
1
编程题
【剑指Offer】从1到n整数中1的个数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
思路: 只写一个思路简单而暴力,我们首先使用一个函数去统计每一个数中1的个数,然后,我们遍历1到n的每个数,然后将所有1的统计数量相加,即可得到结果!其他思路都太绕了,也有人将这些数变成字符串统计的,不太好理解!
class Solution {
public:
int getNum(int num){
int res = ;
while(num != ){
if(num % == ){
res++;
}
num /= ;
}
return res;
}
int NumberOf1Between1AndN_Solution(int n)
{
if(n < )
return ;
int count = ;
for(int i = ;i != n+; i++){
count += getNum(i);
}
return count;
}
};
【剑指Offer】把数组排成最小的数
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路: 使用STL库中的sort函数,但是需要重载比较器,由于传递的参数为int类型,因此需要使用to_string将int类型变成string类型,然后进行比较,返回一个布尔值!有lambda和彷函数两种写法!
lambda版本
class Solution {
public:
string PrintMinNumber(vector<int> numbers) {
auto cmp = [](const int& a, const int& b){
return to_string(a) + to_string(b) < to_string(b)+to_string(a);
};
sort(numbers.begin(), numbers.end(), cmp);
string res;
for(auto c: numbers){
res += to_string(c);
}
return res;
}
};
彷函数版本(重载小括号运算符)
class Solution {
public:
struct{
bool operator()(const int& a, const int& b){
return to_string(a) + to_string(b) < to_string(b)+to_string(a);
}
}cmp;
string PrintMinNumber(vector<int> numbers) {
sort(numbers.begin(), numbers.end(), cmp);
string res;
for(auto c: numbers){
res += to_string(c);
}
return res;
}
};
2
概念题
【Python】python中tuple和list区别?
Python的元组与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
注意:(1)为int类型,如果表示一个tuple中有一个元素,那么应该写成(1,),加一个逗号用于区分
【Python】python中main__和__ name的区别?
1. __name__这个系统变量显示了当前模块执行过程中的名称,如果当前程序运行在这个模块中,__name__的名称就是__main__如果不是,则为这个模块的名称。
2. __main__一般作为函数的入口,类似于C语言,尤其在大型工程中,常常有if __name__ == "__main__":来表明整个工程开始运行的入口。
【Python】1/2在python2和python3中区别
在python2中等于0,相当于向下取整操作,为int类型。 在Python3中等于0.5,保留小数为,默认为float类型。
【Python】map函数的用法整理
函数语法: map(function, [iterable, …]),第一个参数为一个函数,第二个参数为一个或多个可迭代对象,并返回迭代器!
def square(x) : # 计算平方数
return x **
map(square, [,,,,]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25]
map(lambda x: x ** , [, , , , ]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25]
【Python】zip()函数的用法整理
函数语法:zip([iterable, …])函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
a = [,,]
b = [,,]
c = [,,,,]
d = zip(a, b) # [(1,4),(2,5),(3,6)]
d = zip(a, c) # 当元素个数不一致时,按照最小的列表个数来打包[(1,4),(2,5),(3,6)]
e = zip(*d) # 打包的反向操作过程
# 数组的转置
array = [[,],[,],[,]]
map(list, zip(*array)) # 结果为 [[1,2,3], [4,5,6]]