在for循环中重置数组位置

2021-05-13 13:51:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在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个对象。 当a索引计数达到最后一个项目时,如何将其重置为0,这样第24个字母将再次为1,第25个字母将为2,依此类推。在

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

2条回答
网友
1楼 ·

您可以使用x % 23x和{}之间划分的提示用作索引:

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

例如,a[x % 23]将返回a的第一个元素(索引为0的元素),当{}是{}的倍数时。在

网友
2楼 ·

在for循环中不需要有pass,也可以使用list comp或{a2}:

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

使用map

^{pr2}$

使用列表组件:

[ord(x) for x in string1]

a.index[x]不是有效语法,它是a.index(x)

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

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

相关问题