成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的沂源網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
按位與
|
按位或
^
按位異或
1.
按位與運算
按位與運算符""是雙目運算符。其功能是參與運算的兩數(shù)各對應(yīng)的二進(jìn)位相與。只有對應(yīng)的兩個二進(jìn)位均為1時,結(jié)果位才為1
,否則為0。參與運算的數(shù)以補(bǔ)碼方式出現(xiàn)。
例如:95可寫算式如下:
00001001
(9的二進(jìn)制補(bǔ)碼)00000101
(5的二進(jìn)制補(bǔ)碼)
00000001
(1的二進(jìn)制補(bǔ)碼)可見95=1。
按位與運算通常用來對某些位清0或保留某些位。例如把a(bǔ)
的高八位清
,
保留低八位,
可作
a255
運算
(
255
的二進(jìn)制數(shù)為0000000011111111)。
main(){
int
a=9,b=5,c;
c=ab;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
2.
按位或運算
按位或運算符“|”是雙目運算符。其功能是參與運算的兩數(shù)各對應(yīng)的二進(jìn)位相或。只要對應(yīng)的二個二進(jìn)位有一個為1時,結(jié)果位就為1。參與運算的兩個數(shù)均以補(bǔ)碼出現(xiàn)。
例如:9|5可寫算式如下:
00001001|00000101
00001101
(十進(jìn)制為13)可見9|5=13
main(){
int
a=9,b=5,c;
c=a|b;
printf("a=%d\nb=%d\nc=%d\n",a,b,c);
}
3.
按位異或運算
按位異或運算符“^”是雙目運算符。其功能是參與運算的兩數(shù)各對應(yīng)的二進(jìn)位相異或,當(dāng)兩對應(yīng)的二進(jìn)位相異時,結(jié)果為1。參與運算數(shù)仍以補(bǔ)碼出現(xiàn),例如9^5可寫成算式如下:
00001001^00000101
00001100
(十進(jìn)制為12)
main(){
int
a=9;
a=a^15;
printf("a=%d\n",a);
}
leetcode上有這么一道題:【136. Single Number】
這個題是給出一個非空列表,里面的元素只有一個只出現(xiàn)了一次,其余都出現(xiàn)了兩次,找出這個只出現(xiàn)了一次的元素。
這個題目很簡單,寫了一下直接提交:
翻了一下討論,發(fā)現(xiàn)了一個很簡單快速的方法:
查了一下異或運算,發(fā)現(xiàn)找到唯一值是異或運算在python中的主要用途之一。其原理是這樣的:
輸出:70
當(dāng)a,b都轉(zhuǎn)換為二進(jìn)制:
輸出:0b1010與0b1001100
異或運算是將兩個數(shù)相同位置(長度不一時要對齊)的數(shù)值,不同為1時,結(jié)果為1,否則為0 。比如:(0101) ^ (0011) = 0110。
這里a ^ b = 0b1000110,即70。
當(dāng)兩個數(shù)相同時,異或運算結(jié)果為0.
{ }.format()格式方法的一個指示器
例如:'{0:b}'.format(int(a,2)+int(b,2))
這個的意思就是 按照 2進(jìn)制 a + 2進(jìn)制b的格式 輸出
:?號后面帶填充的字符,只能是一個字符,不指定則默認(rèn)是用空格填充。
Python2.6 開始,新增了一種格式化字符串的函數(shù)?str.format(),它增強(qiáng)了字符串格式化的功能。
基本語法是通過?{}?和?:?來代替以前的?%?。
format 函數(shù)可以接受不限個參數(shù),位置可以不按順序。
str.format() 格式化數(shù)字的多種方法:
Python divmod() 函數(shù)
Python 內(nèi)置函數(shù)
python divmod() 函數(shù)把除數(shù)和余數(shù)運算結(jié)果結(jié)合起來,返回一個包含商和余數(shù)的元組(a // b, a % b)。
在 python 2.3 版本之前不允許處理復(fù)數(shù)。
函數(shù)語法
divmod(a, b)
參數(shù)說明:
a: 數(shù)字
b: 數(shù)字
實例
^ -------異或xor
想復(fù)雜了?
^就是數(shù)學(xué)里的 那個判斷的異或符號
但是python里是按2進(jìn)制算的
就是說
10進(jìn)制的就按照轉(zhuǎn)換為2進(jìn)制 再轉(zhuǎn)換為10進(jìn)制來算
就是比如 5^3 =? 6?
因為:
5 = 0101(b)
3 = 0011(b)
二進(jìn)制之后就是: 01100
再換回10進(jìn)制就是 6
deque是雙邊隊列,具有隊列和棧的性質(zhì)。相當(dāng)于可以在兩端操作的list。
以下是deque的常用方法:
數(shù)組初始化? = [None for _in range(rowNum)]
Python zip() 函數(shù)
zip() ?函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的列表。
如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同,利用 * 號操作符,可以將元組解壓為列表。
res?=?[a?+?b?for?a,?b?in?zip([0]?+?res,?res?+?[0])]
這句琢磨了半天
感覺應(yīng)該跟三元表達(dá)式一樣是個倒裝句
但是其實應(yīng)該是個省略句。。。
1、python自帶punctuation包,可以消除所有中文標(biāo)點符號。
Python itertools模塊combinations方法
itertools模塊combinations(iterable, r)方法可以創(chuàng)建一個迭代器,返回iterable中所有長度為r的子序列,返回的子序列中的項按輸入iterable中的順序排序。
例1:
例2、實現(xiàn)一位數(shù)組的所有排列組合:
例3:利用chain.from_iterable方法將多個迭代器連接起來