-2

假设我有一个看起来像这样的列表:

MyList = [1,2,3,4,5,"z","x","c","v","b"]

现在用户输入:“5z1b3”。您将如何将每个 int/str 替换为其在列表中的位置。我正在考虑使用这样的东西:

for x in MyList.... if located in list, replace with letter/number with its location.

不完全确定如何做到这一点。帮助将不胜感激。

编辑::::: 这是我正在做的事情,我必须在列表中同时使用 ints 和 strs。我也对我需要的输出撒了谎。感谢您提及它。输出中每个字母/数字之间的逗号将使它对我有用。任何想法如何做到这一点?

4

2 回答 2

3

使用列表推导:

[MyList.index(c) for c in inputstring]

这必须扫描MyList每个条目;您可以通过使用从字符到位置的字典索引来优化它;这具有额外的优势,我们可以确保我们也只有字符串:

index = {str(c): i for i, c in enumerate(MyList)}
[index[c] for c in inputstring]

如果您需要格式化字符串,请将索引转换为字符串并加入最终输出:

index = {str(c): str(i) for i, c in enumerate(MyList)}
','.join([index[c] for c in inputstring])
于 2013-09-16T21:36:45.113 回答
0

我会使用 list.index() 方法。请参见下面的示例:

MyList = [MyList.index(chr) for chr in user_input]

编辑:然而,这假设用户输入的每个字符都将在 MyList 中找到,并且 MyList 中的每个字符只会出现一次。

于 2013-09-16T21:39:37.467 回答