标签:斐波那契数 字符 参数 变量 condition star default str type
性质
构造列表
[,]
list()
不带参数进行调用时将返回一个空列表,带一个list参数时,返回该参数的浅拷贝;对任意其他参数,则尝试将给定的 对象转换为列表。该函数只接受一个参数的情况。
[expression for item in iterable if condition]
leaps = [y for y in range(1900, 1940)
if (y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)]
方法
L.append(x)
L.extend(m)
L.index(x, start, end)
L.insert(i, x)
L.pop()
L.pop(i)
L.remove(x)
L.reverse()
L.sort(...)
L.clear()
性质
构造元组
(,)
tuple( )
不指定参数时将返回一个 空元组,使用tuple作为参数时将返回该参数的浅拷贝,对其他任意参数,将尝试把给 定的对象转换为tuple类型。该函数最多只能接受一个参数。
命名的元组
collections.namedtuple(typename,field_names)
Sale = collections.namedtuple("Sale","productid customend date quantity price")
sale=Sale(432, 921, "2008-09-14", 3, 7.99)
#sale.date与sale[2]等价
方法
in,not in:成员关系测试
del:删除项 del seq[start : end]
<、<=、==、!=、>=、>:逐项比较
+,+=:连接、扩展序列
,=:二元操作符,复制序列
*:一元操作符,拆分操作
传递参数
def sum(a, b, c):
return a+b+c
L=[5,6,7]
sum1=sum(*L)
dic1={"a":2,"b":3,"c":4}
sum2=sum(**dic1)
print(‘{}+{}+{}={}‘.format(*L,sum1))#5+6+7=18
print(‘{a}+{b}+{c}={和}‘.format(**dic1,和=sum2))#2+3+4=9
提取多个数据项
first, *mid, last = "Charles Philip Arthur George Winds".split()
print(‘first={},mid={},last={}‘.format(first,mid,last))
#first=Charles,mid=[‘Philip‘, ‘Arthur‘, ‘George‘],last=Winds
[]:分片操作符
取值
修改
插入
可哈希
无序
不重复
可修改
{,}
{expression for item in iterable if condition}
set( )
不带参数进行调用时将返回一个空 集合;带一个set参数时返回该参数的浅拷贝;对任意其他参数,则尝试将给定的对 象转换为集合。该函数只接受一个参数的情况。
frozenset( )
不带参数调用时,将返回一个空的固定集合,带 一个frozenset参数时,将返回该参数的浅拷贝,对任何其他类型的参数,都尝试将给 定的对象转换为一个frozenset。该函数只能接受一个参数。
如果将二元运算符应用于集合与固定集合,那么产生结果的数据类型与左边操作 数的数据类型一致。
s|t
s&t
s-t
s^t
s==t
s!=t
s<t
s>t
s.add(x)
s.cIear()
s.copy()
s.discard(x)
s.remove(x)
s.pop()
s.union(t) s|t
s.update(t) s |= t
s.intersection(t) s s&t
s.intersection_update(t) s &= t
s.difference(t) s-t
s.difference_update(t) s-=t
s.symmetric_difference(t) s^ t
s.symmetric_difEerence_update(t) s^= t
s.issubset(t) s<=t
s.issuperset(t) s >=t
s.isdiyoint(t)
可以看做是键值对的集合,即数学上的映射函数,keys存储自变量,values存储应变量
可以看做是对事物多维度的描述,一个dict对象就是一条记录,字段名即key值,字段值即value值
键-值映射
键必须可哈希
布尔值(1,0)、列表、字典不能作为字典的key,以下数据类型可以float、frozenset、int、str、tuple
键不重复
可修改
无序
有序字典
collections.OrderedDict
{:,}
空的花括号{}会创建空字典,非空的花括号必须包含一个或多个逗号分隔的项, 其中每一项都包含一个键、一个冒号以及一个值。
d1= {"id":1948,"name":"Washer","size":3}
dict()
不带参数调用该函数时,将返回一个空
字典;带一个映射类型参数时,将返回以该参数为基础的字典。比如,该参数本身为 字典,则返回该参数的浅拷贝。使用序列型参数也是可能的,前提是序列中的每个数 据项本身是一个包含两个对象的序列,其中第一个用作键,第二个用作值。还可以使用关键字参数,其中键作为关键字,值作为键的值。
d2 = dict(id=1948, name="Washer", size=3)
d3 = dict([("id",1948), ("name","Washer"), ("fsize", 3)])
d4 = dict(zip(("id", "name", "size"),(1948, "Washer", 3)))
有序字典
collections.OrderedDict()
默认字典
collections.defaultdict
默认字典defoultdicts是diet的子类
读取默认字典的项目时,若该项不存在,会先按默认值插入该项,再返回默认值,而不会报错
import collections
words = collections.defaultdict(str)
参数应为函数名或空,访问缺失的键时,将用该函数为其创建一个默认值
{keyexpression: valueexpression for key, value in iterable if condition}
[]
in,not in
del
d.items()
d.keys()
d.values()
返回dietd中所有(key,value)对的视图、键的视图、值的视图
通常,我们可以简单地将视图看做iterables,不过,视图与通常的iterates有两个不同点;第一,如果该视图引用的字典发生变化,那么视图将反映该变化:第二,键视图与项视图支持一些类似于集合的操作。给定字典视图V与set (或字典视图〉X, 支持的操作包括:
V&X # 交集
V |X # 并集
V-X # 差集
V^X #对称差集
d.get(k,V)
d.setdefault(k,v)
d.fromkeys(s,v)
d.clear()
d.copy()
d.pop(k,V)
d.popitem()
d.update(a)
Iteration
可迭代类型
Iterable
任意包含_iter_()方法的对象或任
意序列(也即包含_getitem_()方法的对象,该方法接受从0开始的整数参数)都是
一个iterable。
迭代器
Iterator
迭代器是一个对象,该对象可以提供_next_( ) 方法,该方法依次返回每个相继的数据项,并在没有数据项时产生Stopiteration异常。 可以通过collection模块的Iterator类的isinstance()方法来判断。
迭代原理
迭代组合类型示例
显式迭代
iterator=iter([1,2,3,4]) #iter()获取数据的迭代器
print(iterator)
while True:
try:
i=next(iterator)#next()返回迭代器的下一个值
except StopIteration:#当迭代器没有数据时退出
break
print(i)
for 循环迭代
使用for item in iterable循环时,Python在效果上是调用iter(iterable)来获取一个迭
代器。之后在每次循环迭代时,将调用该迭代子的_next_()方法以获取下一个数据项, 在产生Stopiteration异常时,将捕获这一异常,循环终止。
for i in [1,2,3,4]:
print(i)
自定义迭代类示例
序列类型
import re
import reprlib
RE_WORD = re.compile(‘\w+‘)
#将句子按单词存储的类,类似于序列类型
class Sentence:
def __init__(self,text):
self.text =text
self.words = RE_WORD.findall(text)
def __getitem__(self, item):#此方法支持[]切片式访问对象
return self.words[item]
#已定义__getitem__,不定义__iter__程序也可以
def __iter__(self):
for word in self.words:
yield word
#yield 返回值以后函数不会释放,再次调用时从yield的下一句开始,直到再次遇到yeild。使用yield 相当于实现了__next__()方法
sen=Sentence(‘we are the world‘)#创建此句子时,单词列表已经生成
for i in sen:
print(i)
迭代器类型
#可以无限迭代的斐波那契数列,不是一次性产生数列,而是在迭代过程中产生数列
class Fibonacci:
def __init__(self,max=1000):
self.a = 0
self.b = 1
self.max=max
def __next__(self): #计算数列值,a存放当前值,b存放下个值
self.a,self.b = self.b ,self.a+self.b
if self.a <self.max:
return self.a
else:
raise StopIteration
def __iter__(self):
return self
fibs=Fibonacci(2000)#创建此数列时并不生成数列,数列是在迭代过程中生成的
for fib in fibs:
print(fib,end=‘ ‘)
操作符
s + t
s*n
X in i
函数
all(i)
any(i)
enumerate(i,start)
len(x)
max(i, key)
min(i,key)
range(start, stop, step)
reversed(i)
sorted(i, key, reverse)
sum(i, start)
zip(i1..., iN)
直接赋值(=)
浅拷贝
复制的是对象引用,而不是对象。对固定类型而言,与复制对象效果相同且更高效;对可变数据类型而言,这意味着相关对 象同时被原来的组合与复制得来的组合引用。
深拷贝
复制的是对象,原来的与复制的两个对象相互独立
标签:斐波那契数 字符 参数 变量 condition star default str type
原文地址:https://www.cnblogs.com/sichengxin/p/14710037.html