python - كيفية الانضمام لمجموعتين في سطر واحد دون استخدام "|"




set (8)

افترض أن يتم تعيين S و T مجموعات. دون استخدام عامل الانضمام | كيف يمكنني العثور على اتحاد المجموعتين؟ هذا ، على سبيل المثال ، يجد التقاطع:

S = {1, 2, 3, 4}
T = {3, 4, 5, 6}
S_intersect_T = { i for i in S if i in T }

فكيف يمكن أن أجد الاتحاد من مجموعتين في سطر واحد دون استخدام | ؟


Answers

عذرًا ، لماذا لا يمكننا استخدام عامل تشغيل الصلة مرة أخرى؟

>>> set([1,2,3]) | set([4,5,6])
set([1, 2, 3, 4, 5, 6])

يمكنك استخدام or_ alias:

>>> from operator import or_
>>> reduce(or_, [{1, 2, 3, 4}, {3, 4, 5, 6}])
set([1, 2, 3, 4, 5, 6])

إذا كنت تقصد الاتحاد ، فجرّب ذلك:

set(list(s) + list(t))

إنه نوع من الاختراق ، لكن لا يمكنني التفكير في بطانة أفضل للقيام بذلك.


يمكنك استخدام طريقة الاتحاد للمجموعات: set.union(other_set)

لاحظ أنه يقوم بإرجاع مجموعة جديدة بمعنى أنه لا يعدل نفسه.


إذا كنت بخير مع تعديل المجموعة الأصلية (التي قد ترغب في القيام بها في بعض الحالات) ، فيمكنك استخدام set.update() :

S.update(T)

قيمة الإرجاع هي بلا ، ولكن سيتم تحديث S لتكون اتحاد S و T الأصليين.


يمكنك أن تفعل union أو قائمة بسيطة الفهم

[A.add(_) for _ in B]

سيكون لكل عناصر B


افترض أن لديك 2 قوائم

 A = [1,2,3,4]
 B = [3,4,5,6]

حتى تتمكن من العثور على A Union B النحو التالي

 union = set(A).union(set(B))

إذا كنت تريد أيضًا العثور على تقاطع وعدم تقاطع ، فعليك القيام بذلك على النحو التالي

 intersection = set(A).intersection(set(B))
 non_intersection = union - intersection

وهنا وظيفة للأغراض العامة لهذا الغرض. تقوم بإرجاع قائمة مسارات الملفات بدلاً من أسماء الملفات لأنني وجدت أن ذلك أكثر فائدة. لديها عدد قليل من الحجج الاختيارية التي تجعلها متعددة الجوانب. على سبيل المثال ، غالبًا ما أستخدمها مع حجج مثل pattern='*.txt'أو subfolders=True.

(py35x64_test) E:\Work\Dev\\q003207219>"e:\Work\Dev\VEnvs\py35x64_test\Scripts\python.exe" -c "import os;os.system(\"dir /b root_dir\")"
dir0
dir1
dir2
dir3
file0
file1






python set