SQL
还在研究
Python基础
1、请不要运行代码,直接回答出以下代码运行结果
- False
- True
- True
- True
- False
- 报错
- True
- False
(1)请总结bool(x),x为什么时出值为False
如果是字符串,非空是True,空为False;如果是数字,非0为True,0为False。
(2) 第7问的字符串之间比较的是什么?
比较的是字母的先后顺序,字母顺序靠后的比字母靠前的顺序大。如果第一个字母相同,则比较第二个字母,直到不同为止。
(3) 第6问存在什么问题?
存在直接将字符串转为浮点数的问题,会报错。
2、请自己造数据 用append分别对 list、pd.Series 、 pd.DataFrame进行操作。(变量名分别为a/b/c)
(1) 现在要求不同类型的append都需成功加入新数据到对应变量当中。
(2)问:他们之间有什么区别?
list通过append添加的时候,会直接修改原来的列表添加数据。并且对添加数据的类型没有太多要求。
series通过append添加的时候,不会直接修改原来的series添加新数据,需要重新赋值才行。并且对添加的数据要求也是series或者装有series的元组才行。
dataframe通过append添加的时候,不会直接修改原来的dataframe添加新数据,需要重新赋值。
Python进阶
3、如何用append实现DataFrame的拼接(有两种方式),请举例说明。
df1=pd.DataFrame(np.ones(16).reshape(4,4))
df2=pd.DataFrame(np.zeros(16).reshape(4,4))
df1.append(df2)
不是很明白第二种方式指的是什么。
4、如何查看python的变量内存地址(或id)?比如 a = “123456”,此时 a的变量内存地址是什么?
使用id()
5、多个变量如何引用同一个内存地址?
还是刚刚的代码,通过把a赋值给b,引用相同的内存地址。
6、什么是可变对象?什么是不可变对象?哪些数据类型是可变对象,哪些是不可变对象?
可变对象:当有需要改变对象内部的值的时候,这个对象的id不发生变化。
不可变对象:当有需要改变对象内部的值的时候,这个对象的id会发生变化。
可变对象包括:字典(dict), 集合(set), 列表(list)
不可变对象包含 整型(int), 字符串(string), 浮点型(float), 元组(tuple)
7、结合上述知识点,请观察 题目2的内存地址变化情况,请输出打印到本题。
由上可知,对于列表的append,因为改变列表内部的值的时候,这个列表的id没有变化,所以列表是可变对象。
当对series进行append的时候,可见b.append()返回了一个新的内存地址,原来的内存地址仍然储存append操作前的b。如果此时不通过对变量赋值的方式来接收这个内存地址(指向内存地址)的话,那么b还是最开始的值,即append没有发生实际作用。
对dataframe的append也是同样的道理。
操作系统知识
1、什么是多进程?为什么要用进程?
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。我们自己在python文件中写了一些代码,这叫做程序,运行这个python文件的时候,这叫做进程。
狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
举例: 比如py1文件中有个变量a=1,py2文件中有个变量a=2,他们两个会冲突吗?不会的,是不是,因为两个文件运行起来后是两个进程,操作系统让他们在内存上隔离开,对吧。
作用:提高运行效率
2、什么是多线程?为什么要用线程?
线程被称作轻量级进程。
与进程类似,不过它们是在同一个进程下执行的,并且它们会共享相同的上下文。
作用:提高运行效率
3、它们之间区别是什么?
进程之间不能共享全局变量,线程之间共享全局变量,线程函数中的局部变量不是共享的。
一个进程可包含多个线程,其中有且只有一个主线程。
4、什么时候用多进程、什么时候用多线程?
1.多线程使用场景:IO密集型
2.多进程使用场景:CPU密集型