我有这些点
[(3, 4), (3, 6), (3, 8), (4, 5), (4, 7), (5, 1), (5, 5), (7, 3), (7, 5), (8, 5)]
我对它们进行了一些操作,最终得到了这份列表
[(6.0, 3.605551275463989), (6.324555320336759, 5.385164807134504), (7.211102550927978, 7.280109889280518), (5.0990195135927845, 5.0), (5.830951894845301, 6.708203932499369), (5.0, 4.0), (4.123105625617661, 5.656854249492381), (2.23606797749979, 6.324555320336759), (2.23606797749979, 7.211102550927978), (1.4142135623730951, 8.06225774829855)]
列表中的第一个项目(例如(6.0, 3.605551275463989)
(对应于第一个点(例如(3,4
(。我在列表的第一个项目中找到了两个项目之间的最小值,并得出了这个:
[3.605551275463989, 5.385164807134504, 7.211102550927978, 5.0, 5.830951894845301, 4.0, 4.123105625617661, 2.23606797749979, 2.23606797749979, 1.4142135623730951]
我现在想做的是,例如,如果最小值是第二项,就像在第一种情况下一样,我想把它写如下:(3,4) M2
,M2,这意味着它是第二个项。我该怎么做?我甚至不知道从哪里开始解决这个问题,因为我还没有遇到过类似的事情。
使用zip()
并行循环所有3个列表。然后,只需将第二个列表中项目的选择值与第三个列表中的相应值进行比较,就可以知道是打印M1
还是打印M2
。
l1 = [(3, 4), (3, 6), (3, 8), (4, 5), (4, 7), (5, 1), (5, 5), (7, 3), (7, 5), (8, 5)]
l2 = [(6.0, 3.605551275463989), (6.324555320336759, 5.385164807134504), (7.211102550927978, 7.280109889280518), (5.0990195135927845, 5.0), (5.830951894845301, 6.708203932499369), (5.0, 4.0), (4.123105625617661, 5.656854249492381), (2.23606797749979, 6.324555320336759), (2.23606797749979, 7.211102550927978), (1.4142135623730951, 8.06225774829855)]
l3 = [3.605551275463989, 5.385164807134504, 7.211102550927978, 5.0, 5.830951894845301, 4.0, 4.123105625617661, 2.23606797749979, 2.23606797749979, 1.4142135623730951]
for i1, (m1, m2), selected in zip(l1, l2, l3):
if selected == m1:
which = "M1"
else:
which = "M2"
print(i1, which)
你的意思是这样的吗?
points = [(3, 4), (3, 6), (3, 8), (4, 5),
(4, 7), (5, 1), (5, 5), (7, 3), (7, 5), (8, 5)]
results = [(6.0, 3.605551275463989), (6.324555320336759, 5.385164807134504), (7.211102550927978, 7.280109889280518), (5.0990195135927845, 5.0), (5.830951894845301, 6.708203932499369), (5.0, 4.0), (4.123105625617661, 5.656854249492381), (2.23606797749979, 6.324555320336759),
(2.23606797749979, 7.211102550927978), (1.4142135623730951, 8.06225774829855)]
assert(len(points) == len(results))
for i, r in enumerate(results):
if r[1] < r[0]:
num = 2
else:
num = 1
print(f'{points[i]}, M{num}')
这个怎么样
lst1 = [(3, 4), (3, 6), (3, 8), (4, 5), (4, 7), (5, 1), (5, 5), (7, 3), (7, 5), (8, 5)]
lst2 = [(6.0, 3.605551275463989), (6.324555320336759, 5.385164807134504), (7.211102550927978, 7.280109889280518), (5.0990195135927845, 5.0), (5.830951894845301, 6.708203932499369), (5.0, 4.0), (4.123105625617661, 5.656854249492381), (2.23606797749979, 6.324555320336759), (2.23606797749979, 7.211102550927978), (1.4142135623730951, 8.06225774829855)]
for i, pt in enumerate(lst2):
argmin = pt.index(min(pt))
print(lst1[i], 'M{}'.format(argmin + 1))
输出:
(3, 4) M2
(3, 6) M2
(3, 8) M1
(4, 5) M2
(4, 7) M1
(5, 1) M2
(5, 5) M1
(7, 3) M1
(7, 5) M1
(8, 5) M1
a = [(6.0, 3.605551275463989), (6.324555320336759, 5.385164807134504), (7.211102550927978, 7.280109889280518), (5.0990195135927845, 5.0), (5.830951894845301, 6.708203932499369), (5.0, 4.0), (4.123105625617661, 5.656854249492381), (2.23606797749979, 6.324555320336759), (2.23606797749979, 7.211102550927978), (1.4142135623730951, 8.06225774829855)]
b = [(3, 4), (3, 6), (3, 8), (4, 5), (4, 7), (5, 1), (5, 5), (7, 3), (7, 5), (8, 5)]
for i in range(len(a)):
j = list(a[i])
print(f'{b[i]}-->{max(j)},M{j.index(max(j))+1}')
我将每个元组转换为列表,并使用列表方法。。。
输出
(3, 4)-->6.0,M1
(3, 6)-->6.324555320336759,M1
(3, 8)-->7.280109889280518,M2
(4, 5)-->5.0990195135927845,M1
(4, 7)-->6.708203932499369,M2
(5, 1)-->5.0,M1
(5, 5)-->5.656854249492381,M2
(7, 3)-->6.324555320336759,M2
(7, 5)-->7.211102550927978,M2
(8, 5)-->8.06225774829855,M2