xuất hiện sau trong 2,6 mã Python tôi:Ugly kết hợp của biểu thức máy phát điện với vòng lặp for
for src, dst in ([s,d] for s in universe for d in universe if s != d):
Tôi có thể làm tốt hơn nhiều? Những gì tôi đặc biệt không thích là tôi đang có hiệu lực xác định cùng một cặp hai lần, một lần cho vòng lặp for và một lần nữa cho biểu thức máy phát điện. Tôi không chắc chắn liệu tôi có muốn:
for src, dst in itertools.product(universe, universe):
if src != dst:
Có cách nào để thể hiện vòng lặp này chính xác không?
universe
là một danh sách, nếu có bất kỳ sự khác biệt nào. Thứ tự lặp lại không quan trọng.
Loại thói quen nào yêu cầu/cho phép một sản phẩm chéo như thế này? –
Tôi nghĩ rằng mã của bạn là tốt đẹp, ví dụ đầu tiên là rõ ràng hơn để hiểu hơn khác. – dalloliogm
@Ignacio: Tôi đang xây dựng biểu đồ 2 chiều có các nút là các phần tử của 'vũ trụ' và sẽ được xử lý bởi một số phần mềm khác ở nơi khác mong đợi một tập hợp các cạnh. Tôi có mã để tính toán sự tồn tại và trọng lượng của mỗi cạnh: nếu nó giúp bạn có thể giả định đây là một hàm 'make_edge (src, dst)', trả về một mô tả. Các giải pháp sử dụng 'map' hoặc các hàm liên quan khác để gọi' make_edge' là hợp lý, và có lẽ là điều đúng đắn cần làm, nhưng việc xoay vòng lặp for thành hàm không ít lặp lại so với tôi đã có, vì vậy không sửa chữa niggle AFAIK. –