按顺序打印点

时间:2017-09-12 16:54:39

标签: python

我有以下几点

 (4, 7),(5, 2),(4, 6),(4, 8)

我希望它们按照下面的顺序打印而不使用sort

(4, 6)
(4, 7)
(4, 8)
(5, 2)

在原始问题中,它说使用内置函数对值进行排序 但是没有被"排序"执行。 我的代码是 -

l=set({})
m=set({})
n=set({})
o=set({})
o1=set({})
o2=set({})
x=set({})
x1=set({})
x2=set({})
y=set({})
a=int(input())
b=int(input())
i=1
while i<=8:
    d=[i,b]
    l.add(tuple(d))
    e=[a,i]
    m.add(tuple(e))
    i=i+1
n=l|m
p=int(input())
q=int(input())
i=1
while i<=8:
    ab=[i,q]
    o.add(tuple(ab))
    cd=[p,i]
    o1.add(tuple(cd))
    i=i+1
i=0
while i<=8:
    de=[p+i,q+i]
    if de[0]>8 or de[1]>8:
        break
    else:
        o2.add(tuple(de))
    i=i+1
i=0
while i<=8:
    ef=[p-i,q-i]
    if ef[0]<1 or ef[1]<1:
        break
    else:
        x.add(tuple(ef))
    i=i+1
i=0
while i<=8:
    gh=[p-i,q+i]
    if gh[0]<1 or gh[1]>8:
        break
    else:
        x1.add(tuple(gh))
    i=i+1
i=0
while i<=8:
    hg=[p+i,q-i]
    if hg[0]>8 or hg[1]<1:
        break
    else:
        x2.add(tuple(hg))
    i=i+1
y=o|o1|o2|x|x1|x2
cs=n&y
from pprint import pprint
final=list(cs)
for i in range(len(final)):
    pprint(final[i])

我知道它太大了。 我正在使用pprint仍未获得所提及的输出。 输入值是a = 4,b = 2,p = 5,q = 7

1 个答案:

答案 0 :(得分:1)

内置插件sortedsort可用,并且按我理解的方式排序,首先是第一个元素,然后是第二个元素。

您可以使用sort修改积分列表:

points = [(4, 7),(5, 2),(4, 6),(4, 8)]
points.sort()  # Modifies points
print(points)
# outputs [(4, 6), (4, 7), (4, 8), (5, 2)]

或者使用sorted,它会输出一个新的有序列表:

points = [(4, 7),(5, 2),(4, 6),(4, 8)]
points_sorted = sorted(points)  # Creates a new list and saves it as points_sorted
print(points_sorted)
# outputs [(4, 6), (4, 7), (4, 8), (5, 2)]

如果您需要另一个订购逻辑,则必须向sort / sorted添加一个参数,我可以为您提供帮助。