基于现有字符串数组创建新的数字数组

时间:2014-11-02 22:13:02

标签: python

我正在尝试通过将我的字符串的每个字符与我的" 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]

2 个答案:

答案 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)

  1. import string - 不要使用一堆书说它更好地使用内置的str

  2. myotherlist[idx] = alpha_list.index(val)是您收到错误的原因。这是说&#39;转到idx索引并将alpha_list.index(val)放在那里,但由于列表为空,因此无法执行此操作。

  3. 所以如果你替换

    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)
    

    您将获得预期的结果! 如果有不清楚的地方请告诉我!