গুগল আমাকে অনুসন্ধান করতে দেবে না |=যাতে প্রাসঙ্গিক ডকুমেন্টেশন খুঁজে পেতে আমার সমস্যা হচ্ছে। কেউ জানেন?
গুগল আমাকে অনুসন্ধান করতে দেবে না |=যাতে প্রাসঙ্গিক ডকুমেন্টেশন খুঁজে পেতে আমার সমস্যা হচ্ছে। কেউ জানেন?
উত্তর:
|=জোড়া বস্তুর মধ্যে একটি ইন-প্লেস + অপারেশন সম্পাদন করে। বিশেষত: এর মধ্যে:
বেশিরভাগ ক্ষেত্রে, এটি |অপারেটরের সাথে সম্পর্কিত । নীচে উদাহরণ দেখুন।
সেট
উদাহরণস্বরূপ, দুটি নির্ধারিত সেটগুলির ইউনিয়ন s1এবং s2নিম্নলিখিত সমমানের এক্সপ্রেশনগুলি ভাগ করুন:
>>> s1 = s1 | s12 # 1
>>> s1 |= s2 # 2
>>> s1.__ior__(s2) # 3
যেখানে এর চূড়ান্ত মান s1উভয় দ্বারা সমতুল্য:
উদাহরণ
এখানে আমরা সেটগুলিতে OR ( |) এবং ইনপ্লেস OR ( |=) প্রয়োগ করব :
>>> s1 = {"a", "b", "c"}
>>> s2 = {"d", "e", "f"}
>>> # OR, |
>>> s1 | s2
{'a', 'b', 'c', 'd', 'e', 'f'}
>>> s1 # `s1` is unchanged
{'a', 'b', 'c'}
>>> # Inplace OR, |=
>>> s1 |= s2
>>> s1 # `s1` is reassigned
{'a', 'b', 'c', 'd', 'e', 'f'}
অভিধানের
ইন পাইথন 3.9+ , নতুন একত্রীকরণ ( |) এবং আপডেট করুন ( |=) অপারেটরদের অভিধান মধ্যে প্রস্তাব করা হয়। দ্রষ্টব্য: এগুলি উপরে উল্লিখিত সেট অপারেটরগুলির মতো নয়।
দুটি নির্ধারিত ডিক্ট d1এবং এর মধ্যে দেওয়া অপারেশন d2:
>>> d1 = d1 | d2 # 1
>>> d1 |= d2 # 2
যেখানে d1মাধ্যমে সমতুল্য:
d1.update(d2)উদাহরণ
এখানে আমরা একত্রীকরণ (প্রযোজ্য |) এবং আপডেট করুন ( |=করা) dicts :
>>> d1 = {"a": 0, "b": 1, "c": 2}
>>> d2 = {"c": 20, "d": 30}
>>> # Merge, |
>>> d1 | d2
{"a": 0, "b": 1, "c": 20, "d": 30}
>>> d1
{"a": 0, "b": 1, "c": 2}
>>> # Update, |=
>>> d1 |= d2
>>> d1
{"a": 0, "b": 1, "c": 20, "d": 30}
কাউন্টার
collections.Counterএকটি গাণিতিক datastructure একটি নামক সঙ্গে সম্পর্কযুক্ত multiset (mset)। এটি মূলত (বস্তু, বহুগুণ) কী-মান জোড়ার একটি ডিক।
দুটি নির্ধারিত কাউন্টার c1এবং এর মধ্যে দেওয়া অপারেশন c2:
>>> c1 = c1 | c2 # 1
>>> c1 |= c2 # 2
যেখানে c1মাধ্যমে সমতুল্য:
মাল্টিসেটগুলির একটি ইউনিয়নে প্রতি প্রবেশে সর্বাধিক গুণ রয়েছে। দ্রষ্টব্য, এটি দুটি সেট এর মধ্যে বা দুটি নিয়মিত ডিস্কের মধ্যে একইভাবে আচরণ করে না।
উদাহরণ
এখানে আমরা ইউনিয়ন ( |) এবং অন্তর্ভুক্ত ইউনিয়ন ( |=) কাউন্টারগুলিতে প্রয়োগ করি :
import collections as ct
>>> c1 = ct.Counter({2: 2, 3: 3})
>>> c2 = ct.Counter({1: 1, 3: 5})
>>> # Union, |
>>> c1 | c2
Counter({2: 2, 3: 5, 1: 1})
>>> c1
Counter({2: 2, 3: 3})
>>> # Inplace Union, |=
>>> c1 |= c2
>>> c1
Counter({2: 2, 3: 5, 1: 1})
নাম্বার
শেষ অবধি, আপনি বাইনারি গণিত করতে পারেন।
দুটি নির্ধারিত সংখ্যা n1এবং n2:
>>> n1 = n1 | n2 # 1
>>> n1 |= n2 # 2
যেখানে n1মাধ্যমে সমতুল্য:
উদাহরণ
এখানে আমরা সংখ্যায় বিটওয়াইড OR ( |) এবং ইন-প্লেস বিটওয়াইস OR ( |=) প্রয়োগ করব :
>>> n1 = 0
>>> n2 = 1
>>> # Bitwise OR, |
>>> n1 | n2
1
>>> n1
0
>>> # Inplace Bitwise OR, |=
>>> n1 |= n2
>>> n1
1
পুনঃমূল্যায়ন
এই বিভাগটি সংক্ষিপ্তভাবে কিছু বিটওয়াসার গণিত পর্যালোচনা করে। সহজ ক্ষেত্রে, বিটওয়াইস বা অপারেশন দুটি বাইনারি বিটের তুলনা করে। 1উভয় বিটগুলি বাদে এটি সর্বদা ফিরে আসবে 0।
>>> assert 1 == (1 | 1) == (1 | 0) == (0 | 1)
>>> assert 0 == (0 | 0)
আমরা এখন বাইনারি সংখ্যার বাইরে এই ধারণাটি প্রসারিত করি। দুটি দুটি অবিচ্ছেদ্য সংখ্যা দেওয়া (ভগ্নাংশ উপাদান অভাব) দেওয়া, আমরা বিটওয়াইড OR প্রয়োগ করি এবং একটি অবিচ্ছেদ্য ফলাফল পাই:
>>> a = 10
>>> b = 16
>>> a | b
26
কিভাবে? সাধারণভাবে, বিটওয়াইজ অপারেশনগুলি কিছু "বিধি" অনুসরণ করে:
উপরের আমাদের নিয়মিত পূর্ণসংখ্যার উপর এই নিয়মগুলি প্রয়োগ করি।
(1) বাইনারি সমতুল্য তুলনা করুন, এখানে স্ট্রিং হিসাবে দেখা ( 0bবাইনারি বোঝায়):
>>> bin(a)
'0b1010'
>>> bin(b)
'0b10000'
(২) প্রতিটি কলামে কিছুদিকের 0দিকের বা অপারেশন প্রয়োগ করুন ( যখন উভয়ই থাকে 0, অন্যথায় 1):
01010
10000
-----
11010
(3) প্রদত্ত প্রকারের ফলাফল, যেমন, বেস 10, দশমিক:
>>> int(0b11010)
26
অভ্যন্তরীণ বাইনারি তুলনা মানে আমরা পরবর্তীগুলি কোনও বেসে উদাহরণস্বরূপ পূর্ণসংখ্যায় প্রয়োগ করতে পারি, যেমন হেক্স এবং অষ্টাল:
>>> c = 0xa
>>> d = 0o32
>>> c | d
26
আরো দেখুন
__ior__() একটি উদাহরণMutableSet|=+ ইন-প্লেস বিটওয়াইজ বা অপারেটর আক্ষরিক ক্ষেত্রে প্রয়োগ করা যায় না; নামে বস্তু নির্ধারণ করুন।
++ বিশেষ পদ্ধতিগুলি তাদের সংশ্লিষ্ট অপারেটরগুলির মতো একই ক্রিয়াকলাপগুলি ফিরিয়ে দেয়।
intপাইথনগুলিতে s পরিবর্তনীয় নয়।
পাইথন, এবং অনেক অন্যান্য প্রোগ্রামিং ভাষা ইন, |হয় , bitwise-বা প্রক্রিয়া । |=হয় |যেমন +=হয় +, অর্থাত্ একটি অপারেশন এবং asignment সমন্বয়।
তাই var |= valueজন্য সংক্ষিপ্ত var = var | value।
একটি সাধারণ ব্যবহারের ক্ষেত্রে দুটি সেট মার্জ করা হয়:
>>> a = {1,2}; a |= {3,4}; print(a)
{1, 2, 3, 4}
এটি বর্তমান চলক এবং অন্যটির মধ্যে কেবল একটি OR অপারেশন। সত্তা T=Trueএবং F=False, আউটপুটটি গ্রাফিকভাবে দেখুন:
r s r|=s
--------------
T T T
T F T
F T T
F F F
উদাহরণ স্বরূপ:
>>> r=True
>>> r|=False
>>> r
True
>>> r=False
>>> r|=False
>>> r
False
>>> r|=True
>>> r
True
|পূর্ণসংখ্যার জন্য বিটওয়াইস-বা অপারেটর, বিশেষত কোনও বুলিয়ান অপারেটর নয়, এবং boolএস ব্যতীত অন্য কোনও কিছুর জন্য এটি আসলে উত্পাদন Trueবা Falseআউটপুট দেয় না। boolএটি একটি সাবক্লাস int, এবং সুন্দর হওয়ার জন্য, তারা boolউত্পাদন True/ Falseআউটপুট রাখার জন্য এটিকে ওভারলোড করে ফেলেছিল, তবে বেশিরভাগ ক্ষেত্রে, বুলিয়ান অপারেশনগুলি দিয়ে করা উচিত or, নয় |। সাধারণ ব্যবহারগুলি |হ'ল বিটওয়াইস-বা, বা সেট-ইউনিয়ন। ব্যবহারের আরও ভাল উদাহরণ হতে পারে a = 0b1001; a |= 0b0010; print(bin(a))যা উত্পন্ন করে 0b1011।
এটি অ্যাসাইনমেন্টের বাম-হাত এবং ডান-হাতের বাইনারি বিটওয়াইস অর্ডার করে বা তারপরে ফলাফলটি বাম-হাতের ভেরিয়েবলের মধ্যে সঞ্চয় করে।
http://docs.python.org/reference/expressions.html#binary-bitwise-operations
এটি কিছুটা বা। ধরা যাক আমাদের আছে 32 |= 10, 32 এবং 10 টি চিত্র বাইনারি।
32 = 10 0000
10 = 00 1010
এখন কারণ | হয় বা, কিছুটা দিক বা দুটি সংখ্যায় করুন
অর্থাত্ 1 বা 0 -> 1, 0 বা 0 -> 0 এটিকে শৃঙ্খলে রেখে চালিয়ে যান
10 0000 | 00 1010 = 10 1010.
এখন বাইনারিটি দশমিক দশমিক 1010 = 42 এ পরিবর্তন করুন।
| = এর জন্য, পরিচিত উদাহরণগুলি সম্পর্কে ভাবেন x +=5,। এটি এর অর্থ x = x + 5,যদি আমাদের থাকে x |= 5তবে এর অর্থ x = x bitwiseor with 5।
32 |= 10বরং 32 | 10। কেবল ভবিষ্যতের পাঠকদের জন্য এটি স্পষ্ট করার জন্য :)
ব্যবহারের ক্ষেত্রে (অন্যান্য উত্তরের সাথে সময় কাটিয়ে) দেওয়ার জন্য:
def process(item):
return bool(item) # imagine some sort of complex processing taking place above
def any_success(data): # return True if at least one is successful
at_least_one = False
for item in data:
at_least_one |= process(item)
return at_least_one
>>> any_success([False, False, False])
False
>>> any_success([True, False, False])
True
>>> any_success([False, True, False])
True
মূলত any শর্ট সার্কিট ছাড়া: আপনার যদি প্রতিটি আইটেম প্রসেস করতে হয় এবং কমপক্ষে একটি সাফল্য রেকর্ড করতে হয় তবে এটি কার্যকর হতে পারে etc.
এই উত্তরে সতর্কতাও দেখুন
|