উদাহরণস্বরূপ, আমার দুটি তালিকা রয়েছে
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = [6, 9, 12]; # the subset of A
the result should be [7, 8, 10, 11]; the remaining elements
এটি করার জন্য পাইথনের কোনও বিল্ট-ইন ফাংশন রয়েছে?
উত্তর:
অর্ডারটি গুরুত্বপূর্ণ না হলে আপনার ব্যবহার করা উচিত set.difference। তবে, আপনি যদি অর্ডার বজায় রাখতে চান তবে একটি সাধারণ তালিকা বোধগম্যতা এটি লাগে।
result = [a for a in A if a not in subset_of_A]
সম্পাদনা: ডেলানান বলেছেন যে, subset_of_Aআসল হলে পারফরম্যান্সে যথেষ্ট উন্নতি হবে set, যেহেতু setতালিকার ও (এন) এর তুলনায় একটিতে সদস্যপদ পরীক্ষা করা ও (1) হয়।
A = [6, 7, 8, 9, 10, 11, 12]
subset_of_A = set([6, 9, 12]) # the subset of A
result = [a for a in A if a not in subset_of_A]
set(A)-set(subset_of_A)আপনার উদ্দেশ্যে ফলাফল সেট দেয়, কিন্তু এটি মূল ক্রম ধরে রাখতে পারে না। নিম্নলিখিত সংরক্ষণের সংরক্ষণের আদেশ:
[a for a in A if not a in subset_of_A]
কয়েক দিন আগে এটি জিজ্ঞাসা করা হয়েছিল (তবে আমি এটি খুঁজে পাচ্ছি না):
>>> A = [6, 7, 8, 9, 10, 11, 12]
>>> subset_of_A = set([6, 9, 12])
>>> [i for i in A if i not in subset_of_A]
[7, 8, 10, 11]
setপ্রসঙ্গের উপর নির্ভর করে শুরু থেকে গুলি ব্যবহার করা ভাল । তারপরে আপনি অন্যান্য উত্তর শোয়ের মতো সেট অপারেশন ব্যবহার করতে পারেন ।
তবে কেবলমাত্র এই ক্রিয়াকলাপের জন্য তালিকাগুলিকে সেটগুলিতে এবং পিছনে রূপান্তর করা তালিকা বোধের চেয়ে ধীর।
Setপ্রকারটি ব্যবহার করুন :
A_set = Set([6,7,8,9,10,11,12])
subset_of_A_set = Set([6,9,12])
result = A_set - subset_of_A_set
>>> A = [6, 7, 8, 9, 10, 11, 12]
>>> subset_of_A = [6, 9, 12];
>>> set(A) - set(subset_of_A)
set([8, 10, 11, 7])
>>>
subset_of_Aএকটি বাস্তব তৈরি করে ব্যাপকভাবে উন্নতি করা যেতে পারেsetযাO(1)সদস্যপদ পরীক্ষা দেয় (O(n)তালিকার পরিবর্তে )।