Python3 学习笔记15_高级特性(切片+迭代)_20180306

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 学习网站:www.liaoxuefeng.com

#****************************************************
#                   Python3 高级特性-切片+迭代          *
#****************************************************
print ("--------------------分割线------------------")

#============
# 切片
#============
# 取一个list或tuple的部分元素
list_a = ['a','b','c','d','e','f','g']

# 取前3个元素,笨办法:
print( list_a[0], list_a[1], list_a[2] )    # a b c

# 取前N个元素,笨办法:
n = 5
for i in range(n):
    print( list_a[i],end=' ' )              # a b c d e
print()

# 对这种经常取指定索引范围的操作,用循环十分繁琐,因此,python提供
# 了切片(slice)操作符,能大大简化这种操作。

# 取前3个元素
print( list_a[0:3] )                        # ['a', 'b', 'c']

# 如果第一个元素索引是0,还可以省略,取前3个元素
print( list_a[:3] )                         # ['a', 'b', 'c']

# 取倒数第一个元素的索引是-1
print( list_a[-1] )                         # g

# 取倒数两个元素
print( list_a[-2:] )                        # ['f', 'g']

# 取所有元素
print( list_a[:] )                          # ['a', 'b', 'c', 'd', 'e', 'f', 'g']

# 前6个元素,每两个取一个
print( list_a[:6:2] )                       # ['a', 'c', 'e']

# 所有元素,每三个取一个
print( list_a[::3] )                        # ['a', 'd', 'g']

'''
tuple也是一种list,唯一区别是tuple不可变,tuple也可以用切片操作,操作
结果仍是tuple, 字符换也可以用切片,操作结果仍是字符串
'''
print ("--------------------分割线------------------")

#============
#   迭代
#============
'''
给定一个list或tuple,可以通过for循环来遍历这个list或tuple,这种遍历
称为迭代(iteration),python中迭代是通过for...in来完成的。

for...in循环不仅可以用在list或tuple上,还可以作用在其他可迭代对象上。
只要是可迭代对象,无论有无下标,都可以迭代,比如dict。
'''
dict_a = {'name':'bugliu','gender':'M','age':30}

# dict的存储不是按照list的方式顺序排列,所以,迭代出的结果顺序可能
# 不一样

# 默认情况下, dict迭代的key
for key in dict_a:
    print( key, end=' ' )               # name gender age 
print()

# 按dict中的value进行迭代
for value in dict_a.values():
    print( value, end=' ' )             # bugliu M 30 
print() 

# 同时按key和value进行迭代
for key,value in dict_a.items():
    print(key,value, end=' ')           # name bugliu gender M age 30 
print()     

# 字符串迭代
for ch in 'bugliu':
    print( ch, end=' ' )                # b u g l i u 
print()
print ("--------------------分割线------------------")

# 判断一个对象是否为可迭代对象,通过collections模块的Iterable类型判断
from collections import Iterable

# 判断字符串是否可迭代
print( isinstance('abs', Iterable) )    # True

# 判断list是否可迭代
print( isinstance([1,2,3], Iterable) )  # True

# 判断tuple是否可迭代
print( isinstance((1,2,3), Iterable) )  # True

# 判断dict是否可迭代
print( isinstance({'age':30}, Iterable) )   # True

# 判断整数是否可迭代
print( isinstance(123, Iterable) )      # False
print ("--------------------分割线------------------")

# 对list实现下标循环,python内置的enumerate函数可以把一个list变成
# 索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
for i, value in enumerate(['a','b','c']):
    print( i, value, end=' ' )          # 0 a 1 b 2 c 
print()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值