Tôi gặp một số sự cố khi cố kiểm tra các phần tử chồng chéo trong danh sách.
Điều này có nghĩa là tôi phải kiểm tra các phần tử chung giữa hai danh sách.
Cách chương trình của tôi hoạt động là người chơi nhập tọa độ của cả hai đầu của một con tàu nhất định và sau đó tạo danh sách dựa trên tất cả tọa độ của con tàu (tức là nếu họ nhập (1,1 )
Và (1,5)
, nó sẽ tạo ra [(1,1),(1,2),(1,3),(1,4), (1,5)]
我也试过使用下面的代码,但它不能按照我想要的方式工作:
ListA = [(1,1),(1,2),(1,3),(1,4),(1,5)]
ListB = [(1,1),(2,1),(3,1)]
for i in ListB:
if i in ListA:
print("There is an overlap")
#choose coordinates again
khác:
print("There is no overlap")
#add to ListA and next ship's coordinate chosen
我希望程序通过整体考虑它们来检查 A 中的任何元素是否在 B 中,而不是单独检查它们。
set.intersection将找到任何共同元素:
ListA = [(1,1),(1,2),(1,3),(1,4),(1,5)]
ListB = [(1,1),(2,1),(3,1)]
print(set(ListA).intersection(ListB))
set([(1, 1)])
除非顺序很重要,否则最好将元组存储在集合中:
st_a = {(1, 1), (1, 2), (1, 3), (1, 4), (1, 5)}
st_b = {(1, 1), (2, 1), (3, 1)}
print(st.intersection(st_b))
将其添加到您的代码中:
if st_a.intersection(st_b):
print("There is an overlap")
khác:
print("There is no overlap")
Tôi là một lập trình viên xuất sắc, rất giỏi!