เมื่อต้องการจัดกลุ่มสมาชิกติดกันในลิสต์ตามเครื่องหมาย (บวก/ลบ) สามารถใช้ตัวดำเนินการ XOR ^ ร่วมกับ enumerate() ได้
ตัวอย่าง
my_list = [15, -33, 12, 64, 36, -12, -31, -17, -49, 12, 43, 30, -23, -35, 53]
print("The list is :")
print(my_list)
my_result = [[]]
for (index, element) in enumerate(my_list):
if element ^ my_list[index - 1] < 0:
my_result.append([element])
else:
my_result[-1].append(element)
print("The result is :")
print(my_result)
ผลลัพธ์
The list is : [15, -33, 12, 64, 36, -12, -31, -17, -49, 12, 43, 30, -23, -35, 53] The result is : [[15], [-33], [12, 64, 36], [-12, -31, -17, -49], [12, 43, 30], [-23, -35], [53]]
คำอธิบาย
กำหนดลิสต์ตัวเลขบวกลบสลับกันและแสดงผล
สร้างลิสต์ของลิสต์เริ่มต้น
[[]]ใช้
enumerate()วนลูปได้ดัชนีและค่าใช้ XOR
element ^ my_list[index-1] < 0ตรวจสอบว่าเครื่องหมายต่างกันหรือไม่ (XOR ของบวกและลบให้ค่าติดลบ)ถ้าเครื่องหมายเปลี่ยน เริ่มกลุ่มใหม่
append([element])ถ้าไม่เปลี่ยน เพิ่มในกลุ่มล่าสุดmy_result[-1].append(element)แสดงผลลัพธ์กลุ่มตามเครื่องหมาย