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

โปรแกรมที่จะบีบองค์ประกอบรายการจากซ้ายหรือขวาเพื่อให้เป็นองค์ประกอบเดียวในPython


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums เราต้องบีบจากทั้งด้านซ้ายและด้านขวาจนกว่าจะมีองค์ประกอบเหลืออยู่หนึ่งรายการ เราจะคืนสถานะในแต่ละขั้นตอน

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[10,20,30,40,50,60] ผลลัพธ์จะเป็น

<ก่อน>[ [10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]

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

  • ret :=รายการที่มี nums เพียงองค์ประกอบเดียว
  • ในขณะที่ขนาดของ nums> 1 ทำ
    • ถ้าขนาดของ nums เท่ากับ 2 แล้ว
      • nums :=สร้างรายการด้วยองค์ประกอบ (nums[0] + nums[1])
    • มิฉะนั้น เมื่อขนาดของ nums เท่ากับ 3 แล้ว
      • nums :=สร้างรายการด้วยองค์ประกอบ (nums[0] + nums[1] + nums[2])
    • มิฉะนั้น
      • nums :=สร้างรายการด้วยองค์ประกอบ (nums[0] + nums[1]) จากนั้นแทรกรายการอื่นจาก nums จากดัชนี 2 ถึงองค์ประกอบสุดท้ายที่สามของ nums จากนั้นเพิ่มรายการอื่นที่มีองค์ประกอบ (องค์ประกอบสุดท้ายที่สองของ nums + องค์ประกอบสุดท้ายของ num)
    • ใส่ nums ที่ท้าย ret
  • คืนสินค้า

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

ตัวอย่าง

คลาสโซลูชัน:def แก้ปัญหา(ตัวเอง, nums):ret =[nums] ในขณะที่ len(nums)> 1:if len(nums) ==2:nums =[nums[0] + nums[1]] elif len(nums) ==3:nums =[nums[0] + nums[1] + nums[2]] อื่นๆ:nums =[nums[0] + nums[1]] + nums[2:-2] + [nums[-2] + nums[-1]] ret.append(nums) return retob =Solution() print(ob.solve([10,20,30,40,50,60]))

อินพุต

[10,20,30,40,50,60]

ผลลัพธ์

[[10, 20, 30, 40, 50, 60], [30, 30, 40, 110], [60, 150], [210]]