在for循环中重置数组位置

时间:2014-08-21 11:25:19

标签: python arrays for-loop

我希望在到达python中的For循环中的最后一个索引后重置数组索引位置。

实施例

# Array 1
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]
# string
string1 = "hello world here i am bla bla bla bla bla"
b = []

# --------------------------------------------------------------------
# Here I'm adding to a new array the odd of each letter in the string:

for each in string1:
    pass
    b.append(ord(each))

# --------------------------------------------------------------------
# Now I'm trying to subtract to each odd the number in the `b` array, 
# the value of the number in the same position of the `a` array.

c = []
x = 0
for number in b:
    pass
    c.append(b.index[x] - a.index[x])
    x = x + 1

这里的问题是,我会收到indexError 'a' list is out of range的说法。

追加,因为列表有23个对象,b列表有41个。 当到达最后一个项目时,如何将索引计数重置为0,因此第24个字母将再次为1,第25个字母为2,依此类推。

我不想继续数组索引,我想将其重置为第一个索引。

2 个答案:

答案 0 :(得分:2)

您可以使用x23x % 23之间的区分提醒作为索引:

print 1 % 23     # 1
print 22 % 23    # 22
print 23 % 23    # 0

因此,例如,当a[x % 23]a的倍数时,0将返回x的第一个元素(索引为23的元素)。< / p>

答案 1 :(得分:0)

您的for循环中无需pass,您也可以使用list compmap

for each in string1:
    pass # not needed
    b.append(ord(each))

使用map

 b = map(ord,string1)

使用列表comp:

[ord(x) for x in string1]

a.index[x]的语法无效a.index(x)

但最好使用enumerate来获取索引:

c = [b[ind % 23] - ele for ind, ele in enumerate(a)]