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

โปรแกรมที่จะแพ็คองค์ประกอบที่ต่อเนื่องกันในรายการย่อยใน Python


สมมติว่าเรามีรายการตัวเลข nums เราจะแพ็คองค์ประกอบที่ต่อเนื่องกันของค่าเดียวกันลงในรายการย่อย เราต้องจำไว้ว่ามีเพียงเหตุการณ์เดียวในรายการที่ควรจะยังคงอยู่ในรายการย่อยของตัวเอง

ดังนั้น หากอินพุตเป็น nums =[5, 5, 2, 7, 7, 7, 2, 2, 2, 2] ผลลัพธ์จะเป็น [[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ถ้า nums ว่างเปล่าก็
    • คืนรายการใหม่
  • ผลลัพธ์ :=รายการที่มีรายการอื่นที่มี nums[0]
  • j :=0
  • สำหรับ i ในช่วง 1 ถึงขนาดของ nums ให้ทำ
    • ถ้า nums[i] ไม่เหมือนกับ nums[i - 1] แล้ว
      • แทรกรายการใหม่ที่ท้ายผลลัพธ์
      • j :=j + 1
    • ใส่ nums[i] ที่ท้ายผลลัพธ์[j]
  • ผลตอบแทน

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, nums):
      if not nums:
         return []
      result = [[nums[0]]]
      j = 0
      for i in range(1, len(nums)):
         if nums[i] != nums[i - 1]:
            result.append([])
            j += 1
            result[j].append(nums[i])
      return result
ob = Solution()
nums = [5, 5, 2, 7, 7, 7, 2, 2, 2, 2]
print(ob.solve(nums))

อินพุต

[5, 5, 2, 7, 7, 7, 2, 2, 2, 2]

ผลลัพธ์

[[5, 5], [2], [7, 7, 7], [2, 2, 2, 2]]