Python Data Science Toolbox

Iterable:此处对应的是指可以进行循环的变量类型,例如array, dictionary等等。
Iterator:当重复对其使用next()函数时,产生新的值并且更新iterator至新状态(该串中的下一个元素)
对某个iterable使用iter()函数,即可得到其iterator,对新的iterator使用next(), 每一次的结果为iterable中的一个元素

a="123456"
ita=iter(a)
print(next(ita))
print(next(ita))
print(next(ita))

输出结果为1 2 3

enumerate()函数可以给iterable 加上序号,

a=['x','y','z']
a_enum=list(enumerate(a))
for ind,val in a_enum:
	print(a_enum)

输出结果为 1 x, 2 y, 3 z

zip()函数则可以合并多个tuple

mutant_data = list(zip(mutants,aliases,powers))
for value1,value2,value3 in mutant_data:
    print(value1, value2, value3)

或者可以利用*来进行结果打印,但是打印之后原zip中的值会消耗,想要再用需重新定义

print(*mutant_data)

是这么个模式,结果就不说了

也可以将zip中的东西直接给到不同的tuple中,

z1=zip(x,y)
result1, result2 = zip(*z1)

最终result1,result2分别存了x,y的信息

当遇到大量数据时,需要分批处理,此时要用到chunk功能。

for chunk in pd.read_csv('tweets.csv', chunksize=10):

注意要设置chunksize,确定好每次搬运的数量

List Comprehension
简而言之就是通过一句话来完成一个需要循环操作的iterable。
以下是一个用来获得一组0到9的平方的序列的代码

squares = [i**2 for i in range(10)]

用此方法还可以进行嵌套,例如想要创造一个5*5的矩阵,其每一行都为[0,1,2,3,4]

matrix=[[row for row in range(4)] for col in range(4)]

Advanced comprehension

在循环时,同样可以添加循环条件,筛选我们需要的元素写入新的数组/字符串
格式是[ output expression for iterator variable in iterable if predicate expression ].
例如

new_fellowship = [member for member in fellowship if len(member)>=7]

该操作是用来选出在fellowship中长度大于7的写进新的tuple。
或者也可以用if-else语句来完成同样的操作。
[output expression if condition else another output for variable in iterable]
用if-else来完成上一步的代码:

new_fellowship = [member if len(member)>=7 else "" for member in fellowship]

list comprehension也可以拿来操作字典,区别是要用花括号{},然后每个循环对应的内容是 key: value

new_fellowship = {member:len(member) for member in fellowship}

上面的代码就是用member 来当key,其长度作为value

generator expression
把list comprehension的[ ]替换为()后,就可以把输出值转化为generator的形式了。如果想转成list就用一下list()函数。
这么做的原因是有时候list的长度过长系统无法存储,用generator之后想要读取数据就用next()函数,只有需要的时候才出来结果,节省空间
也可以用generator函数来进行同样的操作,但是每一步的return改为使用yield操作

def genefunc(m):
	for i in m:
		yield i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值