【发布时间】:2014-08-23 03:10:21
【问题描述】:
我有一个子列表列表,我想查看第一个子列表中的任何整数值加一个是否包含在第二个子列表中。对于所有这些值,我想查看该值加一是否包含在第三个子列表中,依此类推,以这种方式在所有子列表中进行。如果有办法以这种方式从第一个子列表到最后一个子列表,我希望返回 True;否则我希望返回 False。对于第一个子列表中的每个值,我想看看是否可以在从左到右读取的每个子列表中找到该值加上 n,其中 n 是该子列表在较大列表中的索引值..(抱歉措辞笨拙- -我不确定如何在不使用更多单词的情况下清理我的语言。)
编辑:(所需输出的先前表述不明确。)对于第一个子列表中的每个值,我想看看是否可以在从左到右读取的每个子列表中找到该值加上 n,其中 n 是索引值较大列表中的子列表。
这是我写的。
a = [ [1,3],[2,4],[3,5],[6],[7] ]
def find_list_traversing_walk(l):
for i in l[0]:
index_position = 0
first_pass = 1
walking_current_path = 1
while walking_current_path == 1:
if first_pass == 1:
first_pass = 0
walking_value = i
if walking_value+1 in l[index_position + 1]:
index_position += 1
walking_value += 1
if index_position+1 == len(l):
print "There is a walk across the sublists for initial value ", walking_value - index_position
return True
else:
walking_current_path = 0
return False
print find_list_traversing_walk(a)
我的问题是:我是否在这里忽略了一些简单的事情,或者这个函数会为所有真阳性返回 True,而对于所有真阴性返回 False?是否有更简单的方法来完成预期任务?如果其他人可以提供任何反馈,我将不胜感激!
【问题讨论】:
-
在你的例子中,
find_list_traversing_walk(a)会返回 False 吗? -
我的示例应该评估为 True。我想我在对@alfasin 的回答的评论中更接近于更好的语言:对于第一个子列表中的每个值,我想看看是否可以在从左到右阅读的每个子列表中找到该值加上 n,其中 n 是索引值较大列表中的该子列表。这有意义吗?
-
每个子列表中的项目数量是否受到限制,或者子列表可以包含三个或四个或任意数量的项目?
-
理论上,一个子列表中可能有任何有限数量的值,尽管任何子列表包含三个以上的值的可能性极小。看看下面@Warren 的回答——真是天才。
-
是的,当我读到它时,我赞成它。
标签: python algorithm function loops