2016-03-11 69 views
0

尝试获取用户输入,在“字母”变量中查找这些元素的索引,存储它们,在“键”变量中查找相同索引的元素,以及打印出来。以下是我迄今为止,但不能从“钥匙”变量,以获得元素...从Python列表中选择元素

key = "XPMGTDHLYONZBWEARKJUFSCIQV" 
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
plain = input("Type something: ").upper() 
result = [alphabet.index(i) for i in plain] 
print (result) 
coded = [result.?(i) for i in key] 
print (coded) 
+0

这不是一种方法。使用'result [i]'。好吧,从技术上来说,它只是'result .__ getitem __(i)'的快捷方式,但无论如何... – zondo

+0

您有3个解决方案,0个投票,0个接受的答案和0个评论。他们有没有为你工作? – MANA624

回答

0

一旦你的指标(在你的result列表)简直是在key列表相同指数打印出的元素的问题。你只要简单地写这行

coded = [result.?(i) for i in key] 

coded = [key[i] for i in result] 
+0

这个伎俩!非常感谢!在“i for i”函数中使用括号和方括号之间有什么区别? – cparks10

+0

方括号用于列表索引(在本例中),而括号用于其他事物,例如方法参数,元组创建等。 – Selcuk

0

我不是100%肯定我理解正确的问题,但如果我这样做,那么这段代码会工作

key = "XPMGTDHLYONZBWEARKJUFSCIQV" 
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
plain = input("Type something: ").upper() 
result = [] 
for letter in plain: 
    if letter in alphabet: result.append(letter) 
print (result) 
coded = [] 
for i in range(len(result)): 
    if result[i] == key[i]: coded.append(result[i]) 
print (coded) 
0

一种选择是operator.itemgetter。它用于创建一个函数,它将通过索引从其参数中获取一个或多个项目。

from operator import itemgetter 

key = "XPMGTDHLYONZBWEARKJUFSCIQV" 
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
plain = input("Type something: ").upper() 
result = [alphabet.index(i) for i in plain] 
print (result) 
coded = itemgetter(*result)(key) # Returns a tuple 
# coded = ''.join(coded)   # Make a string from the tuple 
print (coded)