Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python – จัดกลุ่มสมาชิกติดกันตามเครื่องหมาย (Sign)

เมื่อต้องการจัดกลุ่มสมาชิกติดกันในลิสต์ตามเครื่องหมาย (บวก/ลบ) สามารถใช้ตัวดำเนินการ 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)

  • แสดงผลลัพธ์กลุ่มตามเครื่องหมาย