【发布时间】:2012-06-06 22:42:52
【问题描述】:
假设我有一个列表,我已经对其进行了编辑,因此它不再只是称为“列表”
my_list = ['a b', 'b c d e', 'c', 'd e f g h', 'e f g h i j', 'f g h', 'g h']
我正在尝试检查列表中的特定元素,并查看其中一个元素是否包含某个字符串。我一直在使用下面代码中的一些东西:
for i in range(len(my_list)):
splitList = my_list[i].split(' ')
if splitList[3] == "c":
print "True"
else:
print "False"
但我真正想做的是检查 splitList[3] 是否存在,如果存在,如果它 == "c" 或简单地打印元素中的第三个 "thing"。 (我的问题很笼统,但我的实际数据正在寻找一个特定的 3 个字符串)我确信正则表达式可以解决我所有的问题,但我已经寻找完美的正则表达式解决方案好几天了,不知所措并且没有解决方案。我的数据非常可预测,我只需要检查列表元素中的第二个单词是否存在。
是否有一种简单的 Pythonic 方法来检查 a 列表是否甚至在特定索引处有某些内容,以及是否可以从那里继续?
如果您想提出正则表达式解决方案,
我列表中的第 24 个元素总是
"G# Abc" '#' 可以是 1-12 (含)
那么第25个元素也可能是
"G# Abc" 与 '#' 作为 1-12
如果第 25 个元素不是格式“G# Abc”,则该元素和任何其他元素不相关。如果是“G# Abc”格式,我需要将号码添加到新列表中。
【问题讨论】:
-
您知道,您可以直接遍历列表。无需获取其长度,构建范围,然后通过索引访问每个列表。
-
关于第三个元素的检查以及所有这些,我不太清楚你在问什么,但循环本身可以简化:for i in l: splitList = i.split( )
-
@wagras 不要使用
list作为变量名,因为它已经是您将隐藏的内置函数 -
澄清@jdi,你(几乎)从不做
for i in range(len(my_list))。要么做for elt in my_list,要么——如果你需要索引——for i, elt in enumerate(my_list)。 -
感谢大家的cmets。我不会再使用“列表”作为我的列表名称了。