你怎么知道python中的for循环何时迭代字母或索引?

时间:2017-02-22 00:55:39

标签: python for-loop indexing

我正在处理一些代码:

# Codecademy "9. Scrabble"
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
         "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
         "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
         "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
         "x": 8, "z": 10}

x = "DuVeT"
total = 0
for i in x:
    print score[i.lower()]
    total += score[i.lower()]    
print total

我的问题是: 我怎么知道for循环中的“i”实际上是一个索引号与实际字符的关系?在这种情况下,当我第一次经历循环时,i =“D”。我以为我会为索引= 0。你能帮我理解你怎么知道for循环何时用索引号和字母操作?

2 个答案:

答案 0 :(得分:0)

你看看“for i in”之后的东西:这是一个可迭代的对象。在您出现的情况下, x 是一个字符串;它的元素是字符。

如果要迭代索引位置,则必须获取对象的长度并对其进行迭代,例如:

for i in range(len(x)):
    print score[x[i].lower()]

你看到它是如何工作的吗?使用索引时,可以将其用作字符串中的下标来获取所需的一个字符。

答案 1 :(得分:0)

简短版本:

  1. 对于映射类型(dict,来自collections的相关类),迭代是映射的关键
  2. 对于大多数不是映射的内容,例如tupleliststrbytesset等,迭代超过了值。
  3. 如果您需要序列的索引以及值,您几乎总是需要enumerate函数,例如

    for i, x in enumerate(someseq):
    

    同样,要从映射中获取键和值,您需要items方法(Py2上的iteritems):

    for k, v in mymapping.items():