首页 > 技术知识 > 正文

什么是切片?使用场景是什么?

使用[startIndex:endIndex]来获取list或trulp的部分元素 使用场景是,不需要遍历,就可以取得list或tuple中的连续多个元素 由于tuple的不变性,切片后依然是tuple类型,切片后都不会影响原有的数据,是新的数据,也可以用于复制list或tuple

A=[1,2,3,4,5,6,7] B=(2,3,4,5,6,7,8) print(A[2:5]) print(A[:3]) print(A[:]) print(A[-2:]) print(B[3:5]) print(A) print(B) for in 可以用于哪些数据类型?

for…in 可以遍历list、tuple、dict、set、str等多种可迭代的类型, 我们可以使用collections的Iterable类型来判断,改对象是否是可迭代对象。

from collections import Iterable isinstance(abc, Iterable) # True str是可迭代

在for…in中可以同时引用二个变量

for x, y in [(1, 1), (2, 4), (3, 9)]: print(x, y) 介绍一下生成器,语法,优点,以及使用场景

Python中内置了列表生成器,使用range()函数,要生成1到10 的一个数组可以使用list(range(1,11)),也可以这样用 [x*x for x in range(1,11)] 得到数组 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表元素使用某种算法推算得出,这种生成列表的方式叫做生成器。

g = (x * x for x in range(10))

这种使用生成器生成的数组,不能直接打印,因为类型为generator, 必须使用next(g) 或者遍历的方式。

说一下map,reduce,filter,sorted 这几个函数

map()函数接受两个参数,第一个是函数,第二个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,简单理解就是,可以将一个数组转化为另一个数组, 将内部元素通过一个函数处理成新的元素。

def c(x): return x*x b = map(c, [1,2,3,4,5]) print(list(b))

reduce()函数也是接受两个参数,一个是函数,另一个是数组或Iterator 长常用于数组的元素叠加, 如将数组[1,2,3,4,5]的元素求和,使用reduce必须要先从库中引入

from functools import reduce def add(x, y): return x + y print(reduce((add), [1,2,3,4,5]))

filter()函数用于筛选,过滤一些符合条件的元素.

def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

sorted()函数可用于数组排序

sorted([36, 5, -12, 9, -21]) 编写一个模块,自运行一个函数,并在外部调用一个内部函数

创建模块cc

def getName(): print(123) if __name__==__main__: getName()

模块index

import cc cc.getName()

if __name__==__main__: 这句代码表示,如果当前运行的是cc模块,那就会运行getName()这个函数,命令行运行cc模块是,Python解释器把一个特殊变量__name__置为__main__

说一下模块的作用域

模块中的函数与变量,它们如果要变成私有的,只在内部进行访问,只需要在变量或者函数名前加上_或__ 如

def _setName(name): print(name)

函数_setName对外界是访问不到的,只能在模块内部使用

创建一个Animal类,并接受三个初始参数 class Animal(object): def __init__(self, name, score, age): self.name = name self.score = score self.age = age def print_name(self): print(Name:+self.name) dog = Animal(fugui, 90, 12) dog.print_name() 类的私有属性与方法如何设置?

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。

说一下继承与多态

子类集成集成父类,只需要在定义类时将父类传入即可,不需要使用关键字

class childeClass(parentClass): pass

子类会集成父类的属性和方法,但也可以在子类中重新定义同名的属性和方法来覆盖父类的。这叫做多态。 在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类。但是,反过来就不行

有哪些方法识别数据类型? type() 判断基本数据类型 它返回对应的Class类型 isinstance() 优先使用这种 判断class的类型 dir() 要获得一个对象的所有属性和方法 可以使用dir()函数 说一下类的属性与实例的属性有什么区别

Python是动态语言,根据类创建的实例可以任意绑定属性。直接在class中定义属性,这种属性是类属性,归类所有。 当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到

猜你喜欢