python:可迭代对象的索引

本文详细介绍了Python中字符串、列表、元组等数据结构的遍历方法,以及集合和字典的迭代特性,强调了不同数据类型支持的索引和迭代方式的区别。

关于 python的range的用法: 注意是[ 开始,结束)的半开区间,不包括结束

http://www.runoob.com/python/python-func-range.html

 

import collections
from collections import Iterable
字符串 = "一二三四五六七八九十"
for i in range(-1, -11, -1):
    print('第', i, '个是:', 字符串[i], end=' ')
print()
for i in range(0, 10, 1):
    print(字符串[i], end=' ')
print()
列表 = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十']
for i in range(-1, -11, -1):
    print(列表[i], end=' ')
print()
for i in range(0, 10, 1):
    print(列表[i], end=' ')
print()
元组 = ('一', '二', '三', '四', '五', '六', '七', '八', '九', '十')
for i in range(-1, -11, -1):
    print(元组[i], end=' ')
print()
for i in range(0, 10, 1):
    print(元组[i], end=' ')
print()

集合 = set()
字典 = dict()
集合.add('1')
集合.add(1)
字典['Key0'] = '0000'
字典['Key1'] = '1111'
print(isinstance(字符串, Iterable), type(字符串))
print(isinstance(列表, Iterable), type(列表))
print(isinstance(元组, Iterable), type(元组))

print(isinstance(集合, Iterable), type(集合))
print(isinstance(字典, Iterable), type(字典))

#然而......
try:
    for i in range(0, len(集合)):
        print(集合[i], end=' ')
    print()
except Exception as e:
    print(e)

try:
    for i in range(0, len(字典)):
        print(字典[i], end=' ') #注意,字典[]方括号里面是键值,不是indexing!
    print()
except Exception as e:
    print(e)

有序字典 = collections.OrderedDict()
有序字典['0'] = '0' #注意不要把key设置成int的0,会混淆下面的输出,让你误认为字典的[key]取value是indexing
有序字典['1'] = '1'
有序字典['2'] = '2'
有序字典['3'] = '3'
print(有序字典)
try:
    for i in range(len(有序字典)):
        print(有序字典[i])
except Exception as e:
    print(e)

结果是:

所以,字符串,元组,列表这些有序可迭代对象是支持index的,而集合和字典是不支持index的.

第 -1 个是: 十 第 -2 个是: 九 第 -3 个是: 八 第 -4 个是: 七 第 -5 个是: 六 第 -6 个是: 五 第 -7 个是: 四 第 -8 个是: 三 第 -9 个是: 二 第 -10 个是: 一 
一 二 三 四 五 六 七 八 九 十 
十 九 八 七 六 五 四 三 二 一 
一 二 三 四 五 六 七 八 九 十 
十 九 八 七 六 五 四 三 二 一 
一 二 三 四 五 六 七 八 九 十 
True <class 'str'>
True <class 'list'>
True <class 'tuple'>
True <class 'set'>
True <class 'dict'>
'set' object does not support indexing
0
OrderedDict([('0', '0'), ('1', '1'), ('2', '2'), ('3', '3')])
0

Process finished with exit code 0

 

转载于:https://my.oschina.net/avatus/blog/2206858

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值