机器学习——Python(四)

                                                            机器学习——Python(四)

此处主要练习的是:Python的高级特性:切片、列表生成公式、迭代、生成器

#coding:utf-8
print "-------------切片----------------------"
# 定义一个数组
L=[1,2,3,4,5,5]
# 访问数组的指定区间的元素
print "访问数组的第2个到第4个元素",L[1:3]#注意此处返回 [2, 3],但是我的原意是访问包含第四个元素,但是并没有第四个元素
# 此处需要注意的是,L[m,n] 访问的元素不包含下标为n的元素,所以要想访问下标为 n的元素,需要将末尾元素+1
print "访问数组的第2个到第4个元素",L[1:4]
print "起始值缺省为0",L[:4]

print "-------------range函数的使用----------------------"
L=range(100)
print "range(100)函数   ",L
print "取倒数前十个元素 ",L[-10:]
print "取前90个元素",L[:-10]
#由上面的表达式我们可以看出 对于数组的范围[-99,99],
#取全部元素的方式有:[-99:0] [0:99] 这样两种表达方式

#这里非常要注意的是:每5个取一个的情况,这恰好也是5 的等差数列
print "每5个取值一个",L[::5]
print "前十个数字每两个取一个",L[:10:2]



# 迭代数据可以是:数组、字符串、字典(字典的key、value、key-value都可以迭代)
print "--------------迭代数据练习----------------------"
print "--------------迭代字典----------------------"
dic = {"name: ":"caiqiang","age: ":"13","city:":"beijing"}
# for x in dic.keys():
# for x in dic:\
for x in dic.iterkeys():
    print "字典key的迭代 ",x
# for x in dic.values():\
# for x in dic.itervalues():
# for x in dic: 在迭代value时,只能用value实现
for x in dic.itervalues():
    print "字典value的迭代: ",x
for x in dic.iteritems():
    print "字典key-value的迭代: ",x



print "---------------迭代字符串-----------------------"
str = "abcdef"
for x in str:
    print "迭代字符串中字符   ",x
print "---------------判定数据类型是否可迭代-----------------------"
from collections import Iterable
print "整型数据是否可迭代  ",isinstance(2,Iterable)
print "字符串是否可迭代  ",isinstance("asdf",Iterable)

print "---------------带有下标的迭代列表,类似Java中的遍历方式-----------------------"
for i,value in enumerate([1,3,2,3,4]):
    print "索引值  ",i," 数组中的元素值 ",value

print "--------------对两个变量同时迭代-----------------------"
for x,y in [(1,2),(3,4)]:
    print "对两个变量同时访问  ",x,y


print "--------------列表生成器-----------------------"
print range(1,11)
# 使用循环生成
L = []
for n in range(1,11):
    L.append(n*n)
print "使用循环生成 ",L

# for x*x in range(1,11):
L=[x*x for x in range(1,11)]#公式是 [列表内元素(可以是表达式) for x(构成元素的单位元素) in range(m,n)(元素的集合)]
print "使用列表生成式  ",L
#对元素进行筛选,可在 上面的生成式后面添加 if表达式
L=[x*x for x in range(1,11) if x%2==0]
print "带有筛选的列表生成式  ",L
#使用双层循环 可以生成全排列 公式=[列表中的元素 for 构成元素因子1 in 因子1所在的集合 for 构成元素因子2 in 因子2所在集合]
L=[m+n for m in 'ABC' for n in 'XYZ']
print L

print "--------------将字典转化为键值对的数组-----------------------"
dic = {"name: ":"caiqiang","age: ":"12","city: ":"beijing"}
L = [k+'='+v for k,v in dic.iteritems()]
print L

print "--------------将字典转化为键值对的数组-----------------------"
s="HELLOWORLDMYNAME"
L=["HELLO","WORLD","MY","NAME",2,3]
L1=[s1.lower() for s1 in s]
L2=[s2.lower() for s2 in L if isinstance(s2,Iterable)]
print L1,L2

print "--------------生成器-----------------------"
# 主要是针对,一次性生成较大的列表,会使内存占用过多,所以可以考虑在使用的时候,逻辑生成,这就是生成器的作用
L=[x*x for x in range(1,11)]
g=(x*x for x in range(1,11))
print "列表生成式 ",L,"生成器 ",g
# for n in range(1,11):
#     while n > 1:
#         n= n - 1
#         print "依然使用for循环  ",g.next()
for n in g:
    print "n in g 的方式迭代  ",g.next()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值