python- 请问如何在list中找出某一个item的所有对应值?

muench 发布于 2015年11月30日
无人欣赏。 1人反对。

python- 请问如何在list中找出某一个item的所有对应值?--- 用于“hangman”这个小练习中

共11条回复
tinyfool 回复于 2015年11月30日

啥意思?我听不懂你的问题

muench 回复于 2015年12月01日

1楼 @tinyfool 您好,本人想找出在一个list中某一个item的所有对应值(描述的意思可能不准确),例如l =['l','e','s','s'] 0=‘l’, 1=‘e’....如果本人想找出‘s’的所有对应值该如何找出?

hangman是一个猜单词的小游戏。具体玩法如下

如果本人要猜一个四个字母的单词, 原本屏幕显示的是 “----” 这样一串字符,当本人输入的字母是要猜的单词的一部分,‘-’就会被相应的字母给替换掉。

例如:本人要猜‘less’,原本屏幕显示‘----’,本人输入e,因为这个字母在这个单词中,所以其给出的显示是‘-e--’ 现在本人出现的问题是,本人如果要猜‘less’这个单词,本人输入s,其给出的显示是‘--s-’,而本人希望其显示‘--ss’

谢谢。

tinyfool 回复于 2015年12月01日

2楼 @muench 你有时间问问题没有时间看手册么?三秒钟就可以看到的东西,你为啥要写这么多字来问呢?

efyn 回复于 2015年12月01日

我还是回答一下吧,不一定是最好的方法,但是应该能解决问题,

python 中可以有 item in list 返回True or False.

你直接遍历一下这个数组,然后判断"s" in l, 然后输出数组中所有为True的值就可以了啊

muench 回复于 2015年12月01日

3楼 @tinyfool 您好,谢谢您的回答。问题已解决。请问看手册是指哪本手册,本人曾关于这个问题Google过,但看不懂,也许是关键词没有输对,本人问题愚昧,但还是谢谢您抽空追问关心。谢谢。

muench 回复于 2015年12月01日

4楼 @efyn 非常感谢您,根据您的方法,本人已成功解决了问题。真的十分感谢您的回答,因为明天就要上课了,所以能在今天完成真的帮了很大的忙。: D真的非常谢谢您!!

tinyfool 回复于 2015年12月01日

5楼 @muench 任何一本关于python的书都有

brambles 回复于 2015年12月01日

2楼 @muench

list(filter(lambda x: x[1] == 's', enumerate('less')))

# 如果只要结果,那么可以这样    
reduce((lambda l,x: l+[x[0]] if x[1]=='s' else l), enumerate("less"), [])

# python3加上下面这句
from functools import reduce

@efyn 不需要那么麻烦,一行就够了。

efyn 回复于 2015年12月01日

8楼 @brambles 嗯~ 确实高手,我python确实不是很熟,写的时候就知道循环遍历一定不是最好的方法。 感谢指教,看了你的代码我也把这几个方法的具体用法去查了一下,得到了进步也再次感谢。 希望大侠留下微信,以后可以赐教!

brambles 回复于 2015年12月01日

9楼 @efyn

这些东西不要求python熟,这些是基础的函数式编程的方法。

写的时候我也要查一下python中 zip / foldl / concat 这些函数的代替。

比如 enumerate("less") 就是 zip [0..] "less” 的代替。

reducefoldl 的代替。

list + listconcat list list 的代替。

现在常见的高级语言都能这样玩。

wangxl 回复于 2016年01月12日

10楼 @brambles 你这哪里是教人家东西,明明是在推广函数式编程。 不过我喜欢(用周星星的语气) :D :D :D

本帖有11个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]