我在用python编写函数时遇到了一些问题。它是用一个整数列表(度量值)调用的,它需要检查每个整数的有效度量值(与下一个元素相比,增量为0.1)。它需要将它们存储在新的列表中,在相同的索引上使用true/false。你知道吗
def mark_veljavne(s):
b = []
a = 0
for f in s:
if len(s) == 1:
b.append(True)
break
if a == 0:
if abs(s[0] - s[1]) > 0.1:
b.append(True)
a += 1
else:
b.append(False)
a += 1
if a == (len(s) - 1):
if abs(s[a] - s[a - 1]) > 0.1:
b.append(True)
break
else:
b.append(False)
break
if abs(s[a] - s[a - 1]) > 0.1 and abs(s[a] - s[a + 1]) > 0.1 and a != 0:
b.append(True)
a += 1
elif a != 0:
b.append(False)
a += 1
return b
Link to test in pastebin, since they get shown in one line
def test_oznaci_veljavne(self): self.assertEqual(oznaci_veljavne([5.18, 5.907, 6.632, 7.215]), [True] * 4) self.assertEqual(oznaci_veljavne([132.3, 132.94]), [True] * 2) self.assertEqual(oznaci_veljavne([183.12]), [True]) self.assertEqual(oznaci_veljavne([205.134, 205.182, 205.190, 205.207]), [False] * 4) self.assertEqual(oznaci_veljavne([308.412, 308.416]), [False] * 2) self.assertEqual(oznaci_veljavne([205.134, 205.182, 205.190, 205.207, 250.13, 250.83, 251.6, 308.412, 308.416]), [False] * 4 + [True] * 3 + [False] * 2) self.assertEqual(oznaci_veljavne([205.134, 205.182, 308.416]), [False] * 2 + [True]) self.assertEqual(oznaci_veljavne([205.134, 205.182, 308.416, 308.999]), [False] * 2 + [True] * 2) self.assertEqual(oznaci_veljavne([100, 100.8, 205.134, 205.182, 308.416, 308.999]), [True] * 2 + [False] * 2 + [True] * 2) self.assertEqual(oznaci_veljavne([100, 100.8, 205.134, 205.182]), [True] * 2 + [False] * 2) self.assertEqual(oznaci_veljavne([100, 205.134, 205.182, 205.190, 205.207, 250.13, 250.83, 251.6, 308.412, 308.416]), [True] + [False] * 4 + [True] * 3 + [False] * 2) self.assertEqual(oznaci_veljavne([100, 205.134, 205.182, 205.190, 205.207, 250.13, 250.83, 251.6, 308.412, 308.416, 500]), [True] + [False] * 4 + [True] * 3 + [False] * 2 + [True]) self.assertSequenceEqual(oznaci_veljavne([ 5.18, 5.907, 6.632, 7.215, 132.3, 132.94, 183.12, 205.134, 205.182, 205.190, 205.207, 308.412, 308.416, 512.73, 513.20, 513.65, 918.2, 918.73]), [True] * 4 + [True] * 2 + [True] + [False] * 4 + [False] * 2 + [True] * 3 + [True] * 2)
您可以将列表理解表达式编写为:
这将创建新列表,其值为:
True
如果两个连续元素之间的差值小于0.1False
如果差值大于或等于0.1运行示例:
相关问题 更多 >
编程相关推荐