第一种方法(双指针) class sum: # 本码用于查找有序列表,如果列表无序,用 表名.sort() 来排序 def sum_(self, lis, shu): # lis为列表, shu为两数之和 lis.sort() l = 0 # 左指针开始为0 r = len(lis) - 1 # 右指针开始在列表的最后的一个数上 while r > l: # 当右指针在所在位置的索引大于左指针 pp = lis[l] + lis[r] # 定义pp为左右指针的位置所对应的数的和 if pp == shu: print(lis[l], lis[r]) # pp和想要给定的和相等,则返回两个指针所对应的数,然后左指针向前移动1,右指针向后移动1,继续查找是否还有两数之和为给定的数值 l += 1 r -= 1 elif pp > shu: # 两指针所对应的和大于数的时候(有序),右指针向左走1 r -= 1 elif pp < shu: # 两指针所对应的和小于数的时候(有序),左指针向右走1 l += 1 # 以上两个elif的判断条件只为找出想要查找的值。 if __name__ == '__main__': # 输出 s = sum()