这是一个程序,其中必须按列表中的位置将数字列表转换为单词列表。例如:
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)
这只是我程序的摘录,需要完成一些工作才能使变量正确。
答案 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