我试图比较同一索引中同一元素的两个列表。其思想是验证两个列表是否在同一索引中包含相同的元素。如果是的话,我想统计一下这样的事件。这是我的密码:
count = 0
a = ['.ps2\n >|<4 *|*.ps2xml', '.c\n >|<2 *|*.wsc', '.h\n >|<2 *|*.wsh', '.c\n >|<2 *|*.chm', '.h\n >|<2 *|*.hta' ]
b = ['.ps2xml', '.chm', '.hta']
for x in a:
for y in b:
if y==x[x.index(" *|*")+4:]:
print "match"
count += 1
print count
我数到3了。我期望的是1,因为只有b的第一个元素与a的第一个元素匹配。两个列表的第二个元素不同。第三个要素也不同。列表a中的其余元素不应计算在内,因为b中没有此类索引
希望有道理。谢谢
使用min()函数的短解(获得比较序列的极限大小):
输出:
在这种情况下,您应该不使用嵌套循环(因为这意味着您将对
a
中的每一行在b
上重复搜索);而使用zip(..)
:zip
接受一些迭代器并生成元组。在这种情况下,可以说i-th元组是(a[i],b[i])
。你知道吗匹配是否必须限定为如下
'*|*'
?你知道吗如果不是,那么真正简单的是:
或者在python的更高版本中,迭代器参数会自动解包:
如果这场比赛只是你能分的最后一点
虽然
sum()
更“有意”,但len()
可以用于速度优势,因为它不必遍历列表相关问题 更多 >
编程相关推荐