好吧,我想我第一次发帖时没有意义。但是我想知道是否有一种方法与索引方法的作用相反。例如,假设我在 python shell >>> l = 'hello' 中输入,我知道如果我输入索引 l[2],结果将是 'l'。但是我想知道是否有任何简单的方法可以使用,如果我输入 l['h'] 它将返回 0,即字符串中的索引值/位置。我需要它,以便我可以将它放入一个函数中。
问问题
1007 次
3 回答
2
如果我正确理解了您的问题,那么我认为您正在寻找enumerate()
:
>>> for ind, char in enumerate("mystring"):
... print ind,char
...
0 m
1 y
2 s
3 t
4 r
5 i
6 n
7 g
帮助enumerate
:_
>>> enumerate?
Docstring:
enumerate(iterable[, start]) -> iterator for index, value of iterable
Return an enumerate object. iterable must be another object that supports
iteration. The enumerate object yields pairs containing a count (from
start, which defaults to zero) and a value yielded by the iterable argument.
enumerate is useful for obtaining an indexed list:
(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
编辑:
要获取任何子字符串的第一个匹配项的索引,您可以使用str.index
或str.find
。
str.index
ValueError
如果未找到该项目将引发并str.find
返回 -1:
>>> strs = "hello"
>>> strs.index("h")
0
>>> strs.find("h")
0
>>> strs.find("m")
-1
>>> strs.index("m")
Traceback (most recent call last):
File "<ipython-input-9-5f19ab4b0632>", line 1, in <module>
strs.index("m")
ValueError: substring not found
于 2013-05-12T16:14:12.563 回答
1
您可能正在寻找以下index
方法:
>>> s = 'hello'
>>> s.index('h')
0
于 2013-05-12T17:22:54.670 回答
0
您的问题不是很清楚 - 提供一组输入和预期输出通常会有所帮助。无论如何,如果我理解正确,你想要的是:
def fun(index, bstr):
try:
return int(bstr[index])
except IndexError, e:
# should handle the error here - don't know what
# behaviour you expect
raise
def encrypt(text, bstr):
for index, char in enumerate(text):
flag = fun(index, bstr)
if flag: # iow : 'if flag == 1'
do_something()
else: # iow : 'if flag == 0'
do_something_else()
encrypt("allo", "0001")
作为旁注,考虑到您的代码片段,我认为您应该首先学习用 Python 编程 - 第一个for
循环除了吃 cpu 周期之外什么都不做,第二个循环的第一行创建一个立即丢弃的列表
于 2013-05-12T16:32:17.160 回答