我正在尝试通过将我的字符串的每个字符与我的" alpha_list"的字符进行比较来创建与字符串相关的值列表。这是用于编码过程,以便稍后可以添加数值。
我一直试图通过多种不同方式获得多个错误。
import string
alpha_list = " ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ints = "HELLO WORLD"
myotherlist = []
for idx, val in enumerate(ints):
myotherlist[idx] = alpha_list.index(val)
print(myotherlist)
现在这是我目前的错误读数
Traceback (most recent call last):
File "C:/Users/Derek/Desktop/Python/test2.py", line 11, in <module>
myotherlist[idx] = alpha_list.index(val)
IndexError: list assignment index out of range
我对python很新,所以如果我犯了一个可笑的明显错误,请随意批评。
我正在寻找的print(myotherlist)输出应该是这样的:
[8,5,12,12,15,0,23,15,18,12,4]
答案 0 :(得分:4)
只需使用追加:
for val in ints:
myotherlist.append(alpha_list.index(val))
print(myotherlist)
myotherlist
是一个空列表,因此您无法使用myotherlist[idx]
进行访问,因为没有元素0等。
或者只使用list comprehension:
my_other_list = [alpha_list.index(val) for val in ints]
使用map的功能方法:
map(alpha_list.index,ints))
两个输出:
In [7]: [alpha_list.index(val) for val in ints]
Out[7]: [8, 5, 12, 12, 15, 0, 23, 15, 18, 12, 4]
In [8]: map(alpha_list.index,ints)
Out[8]: [8, 5, 12, 12, 15, 0, 23, 15, 18, 12, 4]
答案 1 :(得分:0)
import string
- 不要使用一堆书说它更好地使用内置的str
myotherlist[idx] = alpha_list.index(val)
是您收到错误的原因。这是说&#39;转到idx
索引并将alpha_list.index(val)
放在那里,但由于列表为空,因此无法执行此操作。
所以如果你替换
for idx, val in enumerate(ints):
myotherlist[idx] = alpha_list.index(val)
与
for letter in ints: #iterates over the 'HELLO WORLD' string
index_to_append = alpha_list.index(letter)
myotherlist.append(index_to_append)
您将获得预期的结果! 如果有不清楚的地方请告诉我!