任務:
你想對乙個字串列表排序,並忽略掉大小寫資訊。舉個例子,你想要小寫的a排在大寫的b前面。預設的情況下,字串比較大小寫敏感的(比如所有的大寫字元排在小寫字元之前)。
解決方案:
string_list = ['d','s','a','i','j','a','s','d','u','n']
auxiliary_list = [(x.lower(), x) for x in string_list]
print auxiliary_list
auxiliary_list.sort()
print auxiliary_list
new_list = [x[1] for x in auxiliary_list]
print new_list
輸出:
[('d', 'd'), ('s', 's'), ('a', 'a'), ('i', 'i'), ('j', 'j'), ('a', 'a'), ('s', 's'), ('d', 'd'), ('u', 'u'), ('n', 'n')]
[('a', 'a'), ('a', 'a'), ('d', 'd'), ('d', 'd'), ('i', 'i'), ('j', 'j'), ('n', 'n'), ('s', 's'), ('s', 's'), ('u', 'u')]
['a', 'a', 'd', 'd', 'i', 'j', 'n', 's', 's', 'u']
python 2.4已經提供了對dsu(decorate-sort-undecorate)的原生支援,因此(假設str_list的元素都是真正的普通字串,而不是unicode物件之類),可以用更簡單更快的方式:
輸出:new_list = sorted(str_list, key=str.lower)
print new_list
['a', 'a', 'd', 'd', 'i', 'j', 'n', 's', 's', 'u']
討論:dus方法建立了乙個輔助列表,每個元素都是元組,元組的元素則來自原列表並被當作"鍵"處理。這個排序是基於鍵的排序,因為python的元組排序比較是根據條目順序進行的(比如,它會首先比較元組的第乙個元素)。要將乙個長度為n的字串列表排序,配合dsu的使用,lower方法只需要被呼叫n次,因而在第一步,decorate階段,以及最後階段,undecorate階段節省了很多時間。
mysql linux不區分大小寫
本文 1 linux下mysql安裝完後是預設 區分表名的大小寫,不區分列名的大小寫 2 用root帳號登入後,在 etc my.cnf中的 mysqld 後新增新增lower case table names 1,重啟mysql服務,這時已設定成功 不區分表名的大小寫 lower case tab...
C IndexOf 不區分大小寫
字串的 indexof 方法是對大小寫敏感的,要想從乙個字串中查詢另外乙個字串 不區分大小寫 就不好處理了。很多人應該會說,先轉換成大寫或者小寫,再查詢,但是不確定別人會怎麼輸入,難道乙個乙個的去轉換?在globalization 命名空間下包含compareinfo類,它包含乙個對大小寫不敏感的 ...
ASP中的區分大小寫與不區分大小寫
asp中的變數,關鍵字不區分大小寫,這誰都知道。但在有些地方又是區分大小的。在下面這種密碼驗證時就不區分大小寫,這樣就增加了asp不安全因素 select from admin where username username and password password 這時的 password 的值...