リストに特定の要素のシーケンスがあるかどうかチェックしたいと思います。私は7つの要素を含むリストをソートしました、私は今最初の4つのチェックは互いに同じで、最後の3つは互いに同じであることを確認したいと思います。私はリストの真のことを達成したい何のためシーケンスのリストを確認する
は次のようになります:
list = ['1','1','1','1','2','2','2']
私はこれは私が明確に達成したいものを作る願っています。
リストに特定の要素のシーケンスがあるかどうかチェックしたいと思います。私は7つの要素を含むリストをソートしました、私は今最初の4つのチェックは互いに同じで、最後の3つは互いに同じであることを確認したいと思います。私はリストの真のことを達成したい何のためシーケンスのリストを確認する
は次のようになります:
list = ['1','1','1','1','2','2','2']
私はこれは私が明確に達成したいものを作る願っています。
リストをスライスすることができます。
>>> L = ['1','1','1','1','2','2','2']
>>> L[:4]
['1', '1', '1', '1']
と最後の3:最初の4つの要素を取り
>>> L[-3:]
['2', '2', '2']
setが重複することはできません。従って:
>>> set(L[:4])
{1}
つまり、このセットの長さが1の場合、スライスされたリストのすべての要素は同じです。
すべて一緒にこれを置く:
>>> len(set(L[:4])) == 1 and len(set(L[-3:])) == 1
True
はあなたの条件が満たされていることを示します。あなたは、文字列の中にあなたのリストを変換することができた場合は
@Hugh Bothwellが質問にコメントした内容を正確に書き換えてください。 – SIslam
質問に余分な詳細に基づいて、これが問題を解決することができますが:
def check_group_equal(inputList):
ref = inputList[0]
for e in inputList[1:]:
if e != ref:
return False
return True
list = some_random_list(length=7)
# Check first group
check_group_equal(list[0:3])
# Check second group
check_group_equal(list[4:7])
これだけの機能にあなたのサブリストのそれぞれを通過し、動作するはずです:
def all_same(items):
return all(x == items[0] for x in items)
上記をされました次の投稿から:Python: determine if all items of a list are the same item
、re
が行います。
re.match(r'^(.)\1{3}(.)\2{2}$', ''.join(['1','1','1','1','2','2','2']))
を使用すると、リストには一つの要素の3つの項目、および他の4つの項目が含まれているかどうかを確認したい場合は、使用してソートを省略することができますcollections.Counter
:
content = Counter(['1', '2', '2', '1', '1', '2', '1']).most_common()
print(content) # => [('1', 4), ('2', 3)]
if len(content) == 2 and content[0][1] == 4 and content[1][1] == 3 or
len(content) == 1 and content[0][1] == 7:
pass # Your list have desired structure
'場合LEN(セット(LSTの[3]))== 1とlen(セット(LST [3]))== 1:HTTPの' –
可能重複:// stackoverflowの.com/questions/3787908/python-if-all-items-of-the-same-items-same-same-item – SIslam
[Hの可能な複製あなたはリストをPythonの均等なサイズのチャンクに分割しますか?](http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized-chunks-in-python ) –