Python查找列表中的订单元素

时间:2015-12-19 19:12:12

标签: python list python-2.7

我有一个程序会询问用户一个句子,获取每个单词,并将其存储在一个名为单词的列表中。

text = raw_input("")
    words = map(lambda x:x.lower(), re.sub("[^\w]", " ",  text).split())

喜欢这个。

现在,我想看看哪个单词有“name”这个词。我写了:

for listelement in words:
        if listelement == "name":
            name = listelement[This is what I want to find]

我该如何找到它? 速度并不是真正的问题,尽管它越快越好。

编辑:我试图通过输入句子“我的名字是*”来获取用户的名字,用文字分隔,检测列表中“名字”这个词的位置,添加2到“name”的位置并将其保存为变量uname。

4 个答案:

答案 0 :(得分:3)

使用In [1]: string = 'this is a test' In [2]: words = string.split(' ') In [3]: words.index('is') Out[3]: 1 In [4]: words.index('test') Out[4]: 3 In [5]: words.index('foo') --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-5-7345c027ead9> in <module>() ----> 1 words.index('foo') ValueError: 'foo' is not in list 方法。它将返回序列中项的第一个出现位置:

{{1}}

答案 1 :(得分:2)

我认为,你可以通过

轻松完成这项工作
[0, 3]

这将打印text = "My name is Alice and his name is Bob" words = text.split(' ') indices = [i+2 for i, word in enumerate(words) if word == 'name'] names = [words[i] for i in indices if i < len(words)]

修改

此解决方案适用于多种情况。

在OP重新提出他的问题后,我会建议像

.row {
      position: relative;
  }

 .bottom-align-text {
    position: absolute;
    bottom: 0;
    right: 0;
  }

答案 2 :(得分:1)

您可以使用list.index(value)

获取排名
try:
   pos = listelement.index("name")
except:
   print("name not in the list")

答案 3 :(得分:0)

要查找第一次出现'name'的索引,请考虑此生成器,

next(i for i,w in enumerate(words) if w == 'name')

在大多数情况下,这证明比迭代整个列表理解更快。