如何将数字转换为此程序中指定的单词?

时间:2017-01-21 21:47:23

标签: python python-3.x

这是一个程序,其中必须按列表中的位置将数字列表转换为单词列表。例如:

numbers = [1, 2, 1, 3, 2, 4, 1 ,5] #Input from user this is an example
words = ["apple", "pear", "lemon", "grape", "pineapple"] 

"数字中的数字" list是" words"中每个项目的索引。名单。 此方案的输出应为:

apple pear apple lemon pear grape apple pineapple

请记住,这只是一个例子;这些列表将从文本文件中获取。

以下是我被困的部分:

for i in numbers: #i for the loop
    match = re.match(words.index[i], numbers)
    if match:
        numbers = words #I have no clue here
print(numbers)

这只是我程序的摘录,需要完成一些工作才能使变量正确。

4 个答案:

答案 0 :(得分:4)

使用mapping代替不必要的正则表达式:

>>> numbers = [1, 2, 1, 3, 2, 4, 1 ,5] #Input from user this is an example
>>> words = ["apple", "pear", "lemon", "grape", "pineapple"]
>>> list(map(lambda x: words[x - 1], numbers))
['apple', 'pear', 'apple', 'lemon', 'pear', 'grape', 'apple', 'pineapple']

用人类的话来说,它表示map数组numbers中的每个数字words的索引- 1>>> [words[index - 1] for index in numbers] ['apple', 'pear', 'apple', 'lemon', 'pear', 'grape', 'apple', 'pineapple'] ,以获得基于0的索引。< / p>

您可以使用

获得相同的结果
#include

答案 1 :(得分:2)

您需要遍历数字列表。现在,使用 for 循环:

for index in numbers:

在该循环中,您需要找到与该索引匹配的单词:

    word = words[index-1]

...然后只需打印这个词。

高级

有办法把它放到一行;我确定其他人会列出如何列出理解和加入地图操作,例如下面的代码。现在选择自己的舒适度。

print ' '.join([words[index-1] for index in numbers])

这是更多&#34; Pythonic&#34; ......但要按照自己的节奏学习。

答案 2 :(得分:2)

非常先进,可能需要更强大的功能:

import numpy as np
words = np.array(["apple", "pear", "lemon", "grape", "pineapple"])
numbers = np.array([1, 2, 1, 3, 2, 4, 1 ,5])
words[numbers - 1].tolist()
# ['apple', 'pear', 'apple', 'lemon', 'pear', 'grape', 'apple', 'pineapple']

答案 3 :(得分:0)

  numbers = [1, 2, 1, 3, 2, 4, 1 ,5]  # Input from user. This is an example
  words = ["apple", "pear", "lemon", "grape", "pineapple"] 

  for i in range(len(numbers)):
      numbers[i] = words[numbers[i] - 1]

  print numbers