Ⅰ python中的list
list是一個函數,將參數強制轉換成列表
list((1,4,7)) 對元組(1,4,7)使用list函數就返回列表[1,4,7]
map(list,zip(*a))表示對zip(*a)的每一個單位都執行list函數
而且這在python 2.6.6中執行正常,執行效果如下
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Ⅱ python 怎麼移除list中含有[]的list
Ⅲ python 怎麼表示一個list中有很多list
實例:
a = [[1, 2], [1], [3, 4], [7]]
這樣a就是一個list,其中的每個元素都是list。
這樣的語法也是很自然的,python的list裡面可以存放任何的數據類型。
Ⅳ python的list和c的數組有什麼區別
始看Python現半月前看Python核編程Dive into
Python兩本書說半月看兩本都知道囫圇吞棗我暫沒需求拿做型發主要平程序test用用所
我策略整體瀏覽用候現查說核編程第版太古講2.2前東西我看翻譯電版翻譯晦澀看完
點雲霧看網家說DIP啄木鳥免費電文檔找看說呢講比核編程適合第看初者我所覺講
看核編程些概念些模糊看本書明白少要初者看本保證理解
面習程翻閱資料程總結些Cpython比較明顯同處向細節肯定沒總結完比態
函數lambda些我都懶往寫實際作兩種完全同語言面些差異冰山角已權拋磚引玉吧至少應該我相同研究
興趣考慮否習另門語言朋友點幫助文算DIP習筆記吧順帶說句要朋友解幫忙推薦實戰性強Python
教材語言東西練手光比劃能
習目
我研究向嵌入式顯C語言我主要語言我語言者我前覺於做研究應用說解門語言
精通門語言所看python主要python更利於快速發些程序現認識研究應用能離要
想計算機工程競爭立足必須懂C語言真要做高性能編程,
能機器體系架構拋腦讓Python虛擬機(或Java虛擬機等)幫搞定所底層越越CPU
core越越恐怖內存性能瓶頸於層發員說所謂高性能程序發員說些透明應用自掌控比較
效些場合匯編C替代光知道C夠掌握門面向象語言相更高層語言僅發展利自技
術認識產幫助
要問我說誰更重要我覺C更重要C習曲線更陡貌似簡單實際處都陷阱看比較簡單低效程序12月
能搞定談優化深層難度嘛需要功底按算旦C語言基礎打計算機理解其語言理解都裨益比
C基礎說1python能寫些短程序面優化算都非基本語句換換
說 Python實際層應用Python比C便層
覺既懂C進步掌握C++應該水渠C++C超集我喜歡C++繁瑣巨所才決定看看Python我喜歡Python優雅與快捷
語言類型
CPython種態類型語言強類型語言類理解呢概按照列說明類:
靜態類型語言
種編譯期間確定數據類型語言數靜態類型語言通要求使用任變數前聲明其數據類型保證點Java C 靜態類型語言
態類型語言
種運行期間才確定數據類型語言與靜態類型相反Python 態類型確定變數類型您第給賦值候
強類型語言
種總強制類型定義語言Java Python 強制類型定義您整數明確進行轉換 能字元串
弱類型語言
種類型忽略語言與強類型相反VBScript 弱類型 VBScript 您字元串 『12′ 整數 3 進行連接字元串』123′看整數 123 所些都需要任何顯示轉換
象機制
具體理解態確定變數類型要PythonObject象機制說起Objects(稱象)Python於數據
抽象Python所數據都由象或者象間關系表示函數象字元串象每東西都象概念每象都三種屬性:
實體類型值理解實體理解象重要步實體旦創建直改變顯式摧毀同通意義講決定象所支持操作
式類型(type包括numberstringtuple及其)改變改變能值要找具體點說明實體相於
象內存址本質存類型值都實體外呈現Python提供些介面讓使用者象交互比id()函數用獲象實體
整形表示(實際址)type()函數獲取其類型
object機制c所具備主要體現面幾點:
1 剛才說c靜態類型語言我定義int a, char
b等等必須源代碼面事先規定比我Python面任意處直接規定a =
lka類型string其賦值候才決定我須代碼明確寫C面我必須顯式規定char *a =
lk工事先規定a類型
2 由於C沒象概念數據表示比說兩int變數ab我想比較用a ==
b判斷兩字元串變數ab我用strcmp比較ab本質指向字元串指針直接用==比較
比較實際指針存儲值——址
Java呢我通使用 str1 == str2 確定兩字元串變數否指向同塊物理內存位置叫做象同性 Java 要比較兩字元串值要使用 str1.equals(str2)
Python前兩者都由於象引入我用is運算符比較兩象實體具體象type沒關系
比象tuplestring甚至class都用is比較本質象同性比較Java
==類似 Cpointer比較類似Python==比較值比較
3
由於象機制引入讓Python使用非靈比我用自省查看內存象形式存其模塊函數獲取信息並進行
操作用種定義沒名稱函數按函數聲明參數順序調用函數甚至引用事先並知道名稱函數 些操作C都想像
4 意思細節類型象行影響各面比說a = 1; b =
1語句Python面引發能ab同指向值1象能別指向兩值1象例語句c = []; d
= []cd肯定指向同新創建空list沒完c = d =
[]語句呢cd指向相同list象些區別都c沒
我說說python慢主要原function call
overhead比較所東西現都象contruct destroy 花費連1 + 1 都 function
call像』12′+』45′ 要 create a third string object, then calls the string
obj』s __add想知速度何能快起
列表數組
析PythonlistC數組總趣相信能些朋友初列表候都作數組初於list數組區別定性主要集兩點首先list包含同數據類型比
["this", 1, "is", "an", "array"]
List放C其實字元串數組相於二維
其呢list其本身象C單純數組同於List操作重載運算符帶些問題比面例:
加入我要產維列表用面語句
A = [[None] * 2] * 3
結A值
[[None, None], [None, None], [None, None]]
初看沒問題典型二維數組形式列表現我想修改第None值用語句
A[0][0] = 5
現我再看看A值:
[[5, None], [5, None], [5, None]]
發現問題沒用 * 復制創建象引用真創建 *3 創建包含三引用列表三引用都指向同度2列表其行改變顯示所行想要解決我創建
A = [None]*3
for i in range(3):
A[i] = [None] * 2
創建包含三同度2列表
所直強調越復雜東西越靈越容易錯
代碼優化
C簡單語言我考慮優化候通想簡單比系統級調用越少越(緩沖區機制)消除循環低效率必要系統引用等
等其實主要都基於系統硬體細節考慮Python完全面說些優化形式於Python仍實用由於
Python語形式千差萬別庫模塊種所於語言本身言值注意優化要點舉幾例吧
比我list L1想要構建新list L2L2包括L14元素按照直接想代碼應該
L2 = []
for i in range[3]:
L2.append(L1[i])
更加優化優美版本
L2 = L1[:3]
再比s1..s7字元串(10K+)join([s1,s2,s3,s4,s5,s6,s7])比
s1+s2+s3+s4+s5+s6+s7快,者計算表達式join()則程完所復制於字元串操作
字元串象使用replace()僅沒固定字元串模式才使用則表達式
所說優化評判標准說C短精悍Python博精深
includeimport
C語言include非簡單形式單意義明確需要用外部函數等資源用includePython相似
機制import乍看兩傢伙挺像都我要用外部資源(見函數或者模塊(Python))用指明其實
兩者處理機制本質區別於Cinclude用於告訴預處理器include指定文件內容都給我作本源文件現
import呢簡單面內容*直接*插入本面玩意更加靈事實幾乎所類似機制Python都比C靈說C
C簡練我其實更喜歡C
簡單說說靈性importpython三種形式import X, from X import *( or a,b,c……),
X = __import__(』x')用第二種比較便像第種用X.mole調用模塊from X
import *import些publicmole(般都__命名模塊)指定a,b,cimport
候用哪種形式呢應該說數模塊文檔都明確告訴應該用哪種形式需要用象from X import
*能更合適些目前看數第三Python庫都推薦使用from molename import *
種格式做使引入者namespace混亂甚至於些專門設計用於種模式模塊(包括Tkinter,
threadingmatplot)都採用種式僅僅需要某象類a用from X import a比用import
X.a更調用a函數直接用a.function()既用加X
連自希望import模塊都知道辦請注意Python優勢體現我用
__import__(mole)調用mole其mole字元串運行再決定底要調用mole舉
例:
def classFromMole (mole, Name):
mod = __import__ (mole)
return getattr (mod, Name)
定義函數classFromMole代碼任何候調用
o = classFromMole (MoleOfTheClass, NameOfTheAttribute)()
需要傳入字元串形式希望import模塊MoleOfTheClass其屬性名字NameOfTheAttribute(數據)能調用名字字元串用事先指定根據運行情況判斷
順帶說句Pythonimport順序默認規定Cinclude點類似我般都先include系統文件再
include自文件(且>區別)Python呢般應該按照順序import模塊:
1. 標准庫模塊 — sys, os, getopt 等
2. 第三模塊
3. 本實現模塊
全局變數
談全局變數呢倒說Pythonc全局變數概念同概念相同使用機制些差異舉例:
– mole.py –
globalvar = 1
def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.
def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable
func函數globalvar讀使用globalvar =
xxx種賦值語句Python重新創造新本象並新值賦給原象值變func2函數由於我事先申明
globalvarglobal更改直接全局變數效
Ⅳ 在python中如何將兩個list合並成一個list,不用for語句
1、運算符:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = list1 + list2
print(list3)
2、extend()方法:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list3 = list1.extend(list2)
print(list3)
3、切片方式:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
list1[len(list1):len(list1)] = list2
print(list1)
(5)pythonl擴展閱讀:
list的方法
L.append(var) #追加元素
L.insert(index,var)
L.pop(var) #返回最後一個元素,並從list中刪除之
L.remove(var) #刪除第一次出現的該元素
L.count(var) #該元素在列表中出現的個數
L.index(var) #該元素的位置,無則拋異常
L.extend(list) #追加list,即合並list到L上
L.sort() #排序
L.reverse() #倒序
list 操作符:,+,*,關鍵字del
a[1:] #片段操作符,用於子list的提取
[1,2]+[3,4] #為[1,2,3,4]。同extend()
[2]*4 #為[2,2,2,2]
del L[1] #刪除指定下標的元素
del L[1:3] #刪除指定下標范圍的元素
Ⅵ python中list表示什麼
list是python語言中的基本數據類型列表,使用[]表示;列表中元素的類型可以不相同,它支持數字,字元串甚至可以包含列表,如下:
ak = [1, '67',true,[23,45,67]]
Ⅶ python 怎麼把一個list類型的字元串數組
首先我們明確,Python的list可以容納任何對象。不管他是什麼格式的。
1)創建list
創建列表的操作非常簡單,只要用中括弧報過一系列逗號分隔的值就可以了。就像第一個圖片上那樣。
2)list 切片
定義新列表後,我們可以列表中的任何一個部分作為新的列表,該技術在dive in python 中稱為切片。
讓我們直接看程序。
Ⅷ python list操作
你不應該用raw_input(),要用input()。
raw_input會把你輸入的內容變成字元串,而input不會
>>> a=input(' ')
[['0'],['0']]
>>> a
[['0'], ['0']]
>>> len(a)
2
Ⅸ 如何獲取Python中list的子集
使用 itertools
importitertools
#有序
printlist(itertools.permutations([1,2,3,4],2))
[(1,2),(1,3),(1,4),(2,1),(2,3),(2,4),(3,1),(3,2),(3,4),(4,1),(4,2),(4,3)]
#無序
printlist(itertools.combinations([1,2,3,4],2))
[(1,2),(1,3),(1,4),(2,3),(2,4),(3,4)]
Ⅹ python list
for i, elem in enumerate(list1):
list4[list5[i]] = elem
f = open('your_output_file.txt','w')
for elem in list4:
f.write('%d %d\n'%(elem[0],elem[1]))
f.close()