Jawaban:
|=melakukan operasi di tempat + di antara pasangan objek. Secara khusus, antara:
Dalam kebanyakan kasus, ini terkait dengan |operator. Lihat contoh di bawah.
Set
Misalnya, gabungan dari dua set yang ditetapkan s1dan s2berbagi ekspresi setara berikut:
>>> s1 = s1 | s12 # 1
>>> s1 |= s2 # 2
>>> s1.__ior__(s2) # 3
di mana nilai akhir s1setara dengan:
Contoh
Di sini kami menerapkan OR ( |) dan inplace OR ( |=) ke set :
>>> 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'}
Kamus
Di Python 3.9+ , operator merge ( |) dan update ( |=) baru diusulkan antar kamus. Catatan: ini tidak sama dengan operator set yang disebutkan di atas.
Operasi yang diberikan antara dua penis yang ditugaskan d1dan d2:
>>> d1 = d1 | d2 # 1
>>> d1 |= d2 # 2
dimana d1setara melalui:
d1.update(d2)Contoh
Di sini kami menerapkan merge ( |) dan update ( |=) ke 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}
Penghitung
Ini collections.Counterterkait dengan struktur data matematika yang disebut multiset (mset). Ini pada dasarnya adalah diktekan dari pasangan nilai kunci (objek, multiplisitas).
Operasi yang diberikan antara dua penghitung yang ditetapkan c1dan c2:
>>> c1 = c1 | c2 # 1
>>> c1 |= c2 # 2
dimana c1setara melalui:
Sebuah serikat multisets berisi multiplicities maksimum per entri. Catatan, ini tidak berlaku dengan cara yang sama seperti antara dua set atau di antara dua penis biasa.
Contoh
Di sini kami menerapkan union ( |) dan in-place union ( |=) ke Counter :
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})
Angka
Terakhir, Anda dapat melakukan matematika biner.
Operasi yang diberikan antara dua nomor yang ditetapkan n1dan n2:
>>> n1 = n1 | n2 # 1
>>> n1 |= n2 # 2
dimana n1setara melalui:
Contoh
Di sini kami menerapkan bitwise OR ( |) dan bitwise OR ( ) di tempat |=ke angka :
>>> n1 = 0
>>> n2 = 1
>>> # Bitwise OR, |
>>> n1 | n2
1
>>> n1
0
>>> # Inplace Bitwise OR, |=
>>> n1 |= n2
>>> n1
1
Ulasan
Bagian ini secara singkat mengulas beberapa matematika bitwise. Dalam kasus yang paling sederhana, operasi bitwise OR membandingkan dua bit biner. Itu akan selalu kembali 1kecuali jika kedua bit tersebut 0.
>>> assert 1 == (1 | 1) == (1 | 0) == (0 | 1)
>>> assert 0 == (0 | 0)
Kami sekarang memperluas gagasan ini di luar bilangan biner. Diberikan dua bilangan integral (tidak memiliki komponen pecahan), kami menerapkan bitwise OR dan mendapatkan hasil integral:
>>> a = 10
>>> b = 16
>>> a | b
26
Bagaimana? Secara umum, operasi bitwise mengikuti beberapa "aturan":
Mari terapkan aturan ini ke bilangan bulat reguler di atas.
(1) Bandingkan ekuivalen biner, terlihat di sini sebagai string ( 0bmenunjukkan biner):
>>> bin(a)
'0b1010'
>>> bin(b)
'0b10000'
(2) Terapkan operasi OR bitwise ke setiap kolom ( 0jika keduanya 0, lain 1):
01010
10000
-----
11010
(3) Kembalikan hasil dalam jenis yang diberikan, misalnya basis 10, desimal:
>>> int(0b11010)
26
Perbandingan biner internal berarti kita dapat menerapkan yang terakhir ke bilangan bulat di basis apa pun, misalnya heksa dan oktal:
>>> c = 0xa
>>> d = 0o32
>>> c | d
26
Lihat juga
__ior__()metode untuk mengulang iterable dalam MutableSetkelas dasar abstrak|=untuk memperbarui satu set+ Operator OR bitwise di tempat tidak dapat diterapkan ke literal; menetapkan objek ke nama.
++ Metode khusus mengembalikan operasi yang sama dengan operator terkait.
ints tidak bisa berubah di Python.
Di Python, dan banyak bahasa pemrograman lainnya, |adalah operasi bitwise-OR . |=adalah |sebagaimana +=adanya +, yaitu kombinasi antara operasi dan asignment.
Jadi var |= valuekependekan dari var = var | value.
Kasus penggunaan yang umum adalah menggabungkan dua set:
>>> a = {1,2}; a |= {3,4}; print(a)
{1, 2, 3, 4}
Ini hanyalah operasi OR antara variabel saat ini dan variabel lainnya. Sedang T=Truedan F=False, lihat hasilnya secara grafis:
r s r|=s
--------------
T T T
T F T
F T T
F F F
Sebagai contoh:
>>> r=True
>>> r|=False
>>> r
True
>>> r=False
>>> r|=False
>>> r
False
>>> r|=True
>>> r
True
|adalah operator bitwise-or untuk bilangan bulat, bukan secara spesifik operator boolean, dan untuk apa pun selain bools, ia tidak akan benar-benar menghasilkan Trueatau Falsemengeluarkan. booladalah subkelas dari int, dan untuk menyenangkannya, mereka membebani untuk booltetap memproduksi True/ Falsekeluaran, tetapi dalam banyak kasus, operasi boolean harus dilakukan dengan or, bukan |. Penggunaan normal untuk |adalah bitwise-or, atau set-union. Contoh penggunaan yang lebih baik adalah sesuatu seperti a = 0b1001; a |= 0b0010; print(bin(a))yang menghasilkan 0b1011.
Ini melakukan bitwise biner OR dari sisi kiri dan kanan tugas, kemudian menyimpan hasilnya di variabel kiri.
http://docs.python.org/reference/expressions.html#binary-bitwise-operations
Ini bitwise atau. Misalkan kita punya 32 |= 10, gambar 32 dan 10 adalah biner.
32 = 10 0000
10 = 00 1010
Sekarang karena | adalah atau, lakukan sedikit atau pada dua angka
yaitu 1 atau 0 -> 1, 0 atau 0 -> 0. Lanjutkan proses ini ke bawah rantai
10 0000 | 00 1010 = 10 1010.
Sekarang ubah biner menjadi desimal, 10 1010 = 42.
Untuk | =, pikirkan contoh yang diketahui x +=5,. Artinya, x = x + 5,jika kita punya x |= 5, itu artinya x = x bitwiseor with 5.
32 |= 10melainkan 32 | 10. Hanya untuk mengklarifikasi hal ini untuk pembaca selanjutnya :)
Untuk memberikan kasus penggunaan (setelah menghabiskan waktu dengan jawaban lain):
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
Pada dasarnya anytanpa korsleting: mungkin berguna jika Anda perlu memproses setiap item dan mencatat setidaknya satu keberhasilan, dll.
Lihat juga peringatan dalam jawaban ini
|