Python
 Computer >> コンピューター >  >> プログラミング >> Python

リスト要素を左また​​は右からスクイーズしてPythonで単一要素にするプログラム


numsと呼ばれる数値のリストがあるとすると、残りの要素が1つになるまで、左と右の両方からそれを絞る必要があります。各ステップで状態を返します。

したがって、入力がnums =[10,20,30,40,50,60]の場合、出力は

になります。
[ [10, 20, 30, 40, 50, 60],
   [30, 30, 40, 110],
   [60, 150],
   [210]
]

これを解決するには、次の手順に従います-

  • ret:=1つの要素番号のみを含むリスト
  • numsのサイズが1より大きい場合は
    • numsのサイズが2と同じ場合、
      • nums:=要素(nums [0] + nums [1])を使用してリストを作成します
    • それ以外の場合、numsのサイズが3と同じ場合、
      • nums:=要素(nums [0] + nums [1] + nums [2])でリストを作成します
    • それ以外の場合、
      • nums:=要素(nums [0] + nums [1])でリストを作成し、インデックス2のnumsからnumsの最後から3番目の要素まで別のリストを挿入し、要素(numsの最後から2番目の要素+ numsの最後の要素)
    • retの最後に数字を挿入
  • return ret

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, nums):
      ret = [nums]
      while len(nums) > 1:
         if len(nums) == 2:
            nums = [nums[0] + nums[1]]
         elif len(nums) == 3:
            nums = [nums[0] + nums[1] + nums[2]]
         else:
            nums = [nums[0] + nums[1]] + nums[2:-2] + [nums[-2] + nums[-1]]
            ret.append(nums)
      return ret
ob = 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]
]

  1. 要素がタプルになるまでリスト内の要素をカウントするPythonプログラム?

    Aは与えられたリストです。このリストにはネストされたタプルがあります。私たちのタスクは、要素がタプルになるまでリスト内の要素をカウントすることです。ここでは、isinstance()関数を使用します。この関数には2つのパラメーターobjectがあり、classinfo.objectがチェックされ、classinfoはクラス、タイプ、またはクラスとタイプのタプルです。この関数は、オブジェクトがas classのインスタンスまたはサブクラスである場合はtrueを返し、それ以外の場合はタプルの任意の要素を返します。 Input : A=[4, 5, 6, 10,22,33, (1, 2, 3),

  2. リストから重複要素を削除するPythonプログラム?

    1つのリストには重複要素が含まれています。私たちのタスクは、重複なしの要素を含む別のリストを作成することです。 例 A::[2,3,4,3,4,6,78,90] Output::[2,3,4,6,78,90] アルゴリズム Step 1: create a list. Step 2: create a new list which is empty. Step 3: traverse every element in list. Step 4: if element is not present in the list return true. Step 5: append in the