Pythonism
رفتن به کانال در Telegram
We use Python in various industries. SXL : https://www.linkedin.com/in/amirakbarisxl-py
نمایش بیشتر2 236
مشترکین
اطلاعاتی وجود ندارد24 ساعت
-67 روز
-4230 روز
آرشیو پست ها
2 236
سلام به همگی ، امیدوارم حالتون خوب باشه..
فصل سوم تموم شد و امیدوارم که مطالب مفید بوده باشه براتون ، قبل از اینکه فصل چهارم رو شروع کنم میخوام که چندتا کوییز ازتون بگیرم ، و سریع بریم سراغ فصل چهارم. ☺️
#Fxl
2 236
دوتا دیگه از Method ها هم بگم .
یکیش pop هست ، یعنی بیرون کشیدن ، پاپ آخرین عنصر تو لیست رو بهتون میده.
>>> L1
[ 1 , 2 , 2 , 5 , 6 , 7 ]
>>> L1.pop( )
7
هفت رو به من داد .
وقتی دوباره بزنم L1 :
>>> L1
[ 1 , 2 , 2 , 5 , 6 ]
هفت دیگه داخلش نیست ، بیرونش کرده.
⭐️کاربردش چیه؟
خیلی وقتا پیش میاد که مثلا ما داریم یک چیزیو از یک جایی میخونیم ، و می خواییم یک کارایی روش انجام بدیم .
یک لیست درست میکنم ، هر دونه ای که میخونم به لیستم append میکنم ، در نتیجه میره ته لیستم .
یک جای دیگه از ته لیسم pop میکنم ، و روش کاری که میخوام رو انجام میدم .
به تهش اضافه میکنه ⬅️ append
از تهش ور میداره و برمی گردونه ⬅️ pop
یعنی من اگه L1 ام این بود :
>>> L1
[ 1 , 2 , 2 , 5 , 6 ]
میزدم:
>>> next = l1.pop( )
>>> next
6
حالا next برابر 6 شده.
>>> L1
[ 1 , 2 , 2 , 5 ]
مثل یکسری پوشه نگاش کنید که کاربردی هارو میذارید رو و از اونطرف برمیدارید!!
خب بعدی remove هستش.
من L1 ام اینه :
>>> L1
[ 1 , 2 , 2 , 5 ]
>>> L1.remove(2)
>>> L1
[ 1, 2 , 5 ]
دو اولی که دید ریمو کرد ، اگه بخوام اون یکی دو هم ریمو کنم باید دوباره بنویسم :
>>> L1.remove(2)
>>> L1
[ 1 , 5 ]
فرقش با del چی بود؟؟
تو del می گفتم مثلا دیلیت کن از لیست یکم عنصر صفر :
>>> del l1[0]
>>> L1
[ 5 ]
ولی توی ریمو میگم دیلیت کن از از لیست اول مقدار پنج رو :
>>> L1.remove(5)
>>> L1
[ ]
مقدار پنج رو بر می داشت ، این متد های خیلی اصلی بود که بهتون گفتم .
#Fxl
#list
#remove
#del
#pop
#append
#sort
#extend
2 236
خب چندتا دیگه میخوام از Method ها مثال بزنم ، اولیش append هست .
من داشتم :
>>> L1
[ 1 , 2 ]
بعد میخوام اینجا append رو وارد بازی کنم ، میگم :
>>> L1.append ( ' new ' )
>>> L1
[ 1 , 2 , ' new ' ]
چیکار میکنه append? یعنی اون کلکه یا استرینگی که بعد append مینویسیم ، یعنی به ته لیست ما اضافش کن.
دومی extend هست.
چجوریه؟ :
>>> L1.extend( [5 , 6 , 7] )
گفتم اکستندش کن با این لیست ، عین جمع هست .
ران که بشه :
>>> L1
[ 1 , 2 , ' new ' , 5 , 6 , 7 ]
سومین متد sort هستش.
>>> L1.sort( )
Error
چرا ارور داد؟!؟!
چون ما تو L1 ، استرینگ new داریم ، نمیدونه این new رو کجا بذاره ، پس باید چیکار کنیم؟؟پاکش میکنیم.
برای پاک کردم کافیه از del استفاده کنیم ، می نویسم در ادامه :
>>> del L1[2]
>>> L1
[ 1 , 2 , 5 , 6 , 7 ]
گفتم L1 , بخش دومشو [2] دیلیت کن.
حالا میتونم بگم :
>>> L1.sort( )
>>> L1
[ 1 , 2 , 5 , 6 , 7 ]
به ترتیب عددی در میاره ولی خب از شانس ما قبلا به ترتیب نوشته شده بود .
اگه بخوام تهش چیزی اضافه کنم اینطوری میشه :
>>> L1.append(2)
>>> L1
[ 1 , 2 , 5 , 6 , 7 , 2 ]
حالا دوباره میخوام sort کنم :
>>> L1.sort( )
>>> L1
[ 1 , 2 , 2 , 5 , 6 , 7 ]
#FXL
#list
#Method
#sort
#append
#del
#extend
2 236
ما Operators هم داریم .
اگه بزنم :
L1 = [ 1 , 2 ]
L 2 = [ ' fxl ' , ' sxl ' ]
چی میشه ؟؟
>>> L1
[ 1 , 2 ]
>>> L2
[ ' fxl ' , ' sxl ' ]
میتونستم بگم :
>>> L1 + L2
[ 1 , 2 , ' fxl ' , ' sxl ' ]
وقتی جمع ببندی ، همه رو میذاره تو یک لیست.
میتونم ضربش کنم :
>>> L2 * 2
[ ' fxl ' , ' sxl ' , ' fxl ' , ' sxl ' ]
ولی نمیشه در هم ضرب کرد ، یعنی چی؟
یعنی L1 * L2 ارور میده.
📌فقط جمع و ضربدر یک عدد ممکنه.
#Fxl
#list
#operators
2 236
خب حرکت کردن رو لیست رو دیدین که چجوری بود ، در واقع میتونیم بگیم:
for i in range(0 , len(l)):
. . . print(i , l [ i ] )
. . .
0 8
1 5
2 9
3 -1
4 1.5
5 Fxl
میتونستم شیوه ساده تر هم برم ، همونجوری که تو استرینگ ها رفتم :
for item in l:
. . . print ( item )
. . .
8
5
9
-1
1.5
fxl
به ترتیب مینویسه.
L ام چی بود؟
>>> l
[ 8 , 5 , 9 , -1 , 1.5 , ' fxl ' ]
#Fxl
#list
#len
#range
2 236
نکته : یک فرقش با استرینگ اینه که .
>>> l
[ 4 , 5 , 9 , -1 , 1.5 , ' fxl ' ]
اگر بنویسم :
>>> l [0] = 8
>>> l
[ 8 , 5 , 9 , -1 , 1.5 , ' fxl ' ]
چیشد؟ شماره گذاری کرد ، صفر که بود چهار ، هشت رو جایگزین چهار کرد.
#Fxl
#list
2 236
می تونیم بنویسیم:
for i in range(0 , len (l2)):
. . . print ( l2[ i ] )
. . .
[ 4 , 5 , 9 , -1 , 1.5 , 'fxl' ]
5
[ 1 , 2 ]
#Fxl
#list
#for
#range
2 236
خب الان میخوام راجع به List ها صحبت کنم ، لیست ها به ما این اجازه رو میدن که یکسری لیستی از یکسری مقدار تهیه کنیم ، لیست ها در پایتون با [ ] هستند.
یعنی من اگه یک L داشته باشم و داخلش یکسری اعداد بنویسم در واقع یک لیست درست کردم :
l = [ 4 , 5 , 9 , -1 , 1.5 , ' fxl ' ]
اگه بنویسم :
l [ 0 ]
4
دقیقا اینارو تو پست های قبل گفتم که به چه صورته .
میتونم بنویسم از شروع تا چهارمی:
l [ : 4 ]
[ 4 , 5 , 9 , -1 ]
تا سر چهارمی رو به من میده.
یا مثلاً بگم دوتا مونده اخر رو به من بده :
l [ -2 ]
1.5
در واقع لیست ها اینطوری کار می کنند ، می تونن شامل هرچیزی باشند.
یک لیست تو پایتون میتونه شامل : یک عدد صحیح ، اعداد اعشاری و استرینگstr
حتی لیست ها میتونن شامل لیست های دیگه هم باشن!!
یعنی من میتونم یک لیست L2 درست کنم بگم عنصر اولش L1 هستش بعد یکدونه 5 داره و...
l2 = [ l1 , 5 , [ 1 , 2 ]]
حالا اگه بزنم L2 اینو برای من ران میکنه :
[ [ 4 , 5 , 9 , -1 , 1.5 , ' fxl ' ] , 5 , [ 1 , 2 ]]
حالا اگه بنویسم len(12) :
3 میده
چرا؟ چون این خودش میشه یک : [ 4 , 5 , 9 , -1 , 1.5 , ' fxl ' ]
این میشه دو : 5
اینم میشه سه : [ 2 ,1 ]
#Fxl
#list
#List
#str
2 236
یک بحث دیگه هم مونده اونم اینه که ، فرمت دهی داریم از طریق درصد.
تو حالت عادی من چطوری پرینت می کردم؟ :
print( ' hello ' )
hello
اگر داشتم :
name = ' fxl '
میتونستم بنویسم :
print ( ' hello ' , name )
hello fxl
یا :
print ( ' hello ' , name , 3 )
hello fxl 3
یکی یکی می تونیم بهش اضافه کنیم.
ولی اگه چیز پیچیده تری بخوام شروع می کنه به شلوغ شدن.
پایتون برای شما یک مکانیزمی گذاشته که به جای اینکه شما کاما بزنید ، می تونید درصد بذارید .
به این صورت :
print ( ' hello ٪s ' name )
اس s ، اول استرینگ هستش ، و تهش هم یک درصد بذارید :
print ( ' hello %s ' %name )
در واقع این داره میگه بیا این رو :
' hello %s '
یک استرینگ ازش درست کن ، هرجا رسیدی به درصد s ، اون ته یا name ببین چه متغیری هست ، استرینگش کن تو اینجا ' hello %s '
میشه :
hello fxl
این خوبیش اینه که خیلی تمیز میتونم اینطوری بنویسم :
print ( ' hello %s chetori? ' %name )
hello fxl chetori?
این در واقع یک مکانیزم خیلی تمیزتریه که به جای کامل میشه ازش استفاده کرد 😌
به خصوص اگر بخواییم چیز های بیشتری بنویسیم ، مثلا بخواییم سن رو هم بنویسیم:
sen = 30
print ( ' hello %s chetori? midooni %s salet shode? ' % (name , sen ) )
چون چندتا شده بهترین تو پرانتز بذاریم اسم و سن رو .
چیشد پس؟ ما یک استرینگی داریم توش از درصد استفاده کردیم ، چون می خواستیم این درصد هارو بهش بفهمونیم یک درصد قبل name گذاشتیم و توی دوتا پرانتز متغیرهایی که لازم بود رو قرار دادیم.
اگه ران بشه :
hello fxl chetori? midooni 30 salet shode?
تنها نکته اینه که : درصد s یعنی استرینگ ، سن درسته که عدده ولی تبدیلش میکنه به str , من می تونستم درصد i بذارم که int بخونه و چیزهای دیگه...
#Fxl
#str
#int
#name
2 236
یک starts with هم داریم ، مثلا میتونم بگم :
' hello '. startswith( ' h ' )
True
بهش گفتم اولش با h شروع میشه؟ گفت اره درسته
خیلی مهم نیست همه ی متد هارو بلد باشید ، توی کار یاد میگیرین و متوجه میشین که چیو کجا و کی استفاده کنید.
یک نکته هم بهتون بگم ، که می تونیم اینارو باهم ترکیب هم کنیم ، چطوری ؟ من میگم hello بعد میخوام بدونم اولش h داره یا نه :
'Hello' . startswith( ' h ' )
False
خب اشکالش چیه؟؟ من با h کوچیک نوشته بودم این H بزرگ هست ، واسه رفع مشکل همچین چیزی میتونم بهش بگم بیا اول کوچیکش کن بعد دستور بعدی رو اجرا کن ، به این صورت میشه :
' Hello ' . lower( ) . startswith( ' h ' )
True
خود Hello یک استرینگ هستش ، من اومد خود استرینگ رو ، متد lower روش اجرا کردم و به یک چیز جدید رسیدم :
' Hello ' . lower ( )
' hello '
بعد گفت که startswith با h کوچیکه؟ که میگه بله درسته.
#Fxl
#lower
#Hello
#hello
#startswith
#True
#False
2 236
لازم نیست که همشون رو یاد بگیرید ، من چندتا از مهمتریناشو بهتون میگم ، مثلا می نویسم :
s.upper( )
' HELLO '
باید حتما پرانتز بذارین ، اگر نذارید میگه این یک متدی هست که برای str دارم .
پس چیشد ؟ باید مثل یک فانکشن صداش کنیم.
معلومه که lower هم داریم ، می تونه حروف رو کوچیک کنه:
s.lower( )
' hello '
میتونم find کنم بهش بگم L رو مثلا پیدا کن:
s.find( ' l ' )
2
دقت کنید: تعداد L رو نشمرده ، شماره گذاری کرده از صفر یک دو ، سر دومی به L رسیده.
میتونستم بهش بگم از سه به بعد واسم پیداش کن :
s.find( ' l ', 3 )
3
میگه تو همون سه هستش.
مثلا strip هم خیلی مرسومه ، مثلا یک چیزی بنویسم که دو طرفش فاصله داشته باشه با strip حذف میشه ، به این صورت :
' fxllllll. '.strip( )
' fxllllll '
پس ما تا اینجا چه چیزهایی رو یاد گرفتیم؟؟
1.find
2.upper
3.lower
4.strip
#Fxl
#Method
#upper
#strip
#find
#lower
#hello
2 236
مثلا بگم :
s = ' hello '
type(s)
str
اس یک استرینگ در اومد ، پس می تونم بگم :
dir(s)
تو اس میبینم که چه نوع Method هایی دارم.
#Fxl
#strings
#type
#class
#dir
2 236
مثلا میگم که :
' salam fxl ' . count('a')
2
میگه دوبار تکرار شده .
دونستن اینا خیلی بهتون کمک می کنه ، بعد از مدتی که سرچ کردین و ببیندشون کامل یاد می گیرید.
#Fxl
#count
#salam
2 236
اگر خواستین ببینید که هرچیزی چه Method هایی داره ، می تونید ازش dir بگیرید.
من میتونم dir فکسل رو بگیرم ، چون یک class str هست ، به من میگه تو میتونی تو استرینگت این کارارو بکنی.
مثلا میتونی یک چیزی رو count کنی ، مثلا میتونی doc کنی ، می تونی format کنی و ...
#Fxl
#dir
#strings
2 236
ما در دنیای پایتون یک چیزی داریم به اسم Method ها ، در پایتون همه چیز class یا کلاس هستش.
به اصلاح خیلی کلاس داره
.
من وقتی می گفتم که تایپ hello رو به من بده ، چی میداد؟؟
< class ' str ' >
در واقع می گفت hello یک کلاس استرینگ هستش.
کلاس ها چیزهای مختلف دارن که حالا تو دوره دوم این ماجرا میبینیمش.
اما فعلا این رو یاد بگیریم که کلاس یک چیزی دارن به اسم Method ، خیلی نزدیکه به همون function ها ، تقریبا شبه اونان.
تفاوتشون رو بعدا بهتون میگم .
اینا یا همون Method های این شکلی هستند که من بعد از یک چیزی که Method داره می تونم یک نقطه بذارم و اون متدشو صدا کنم مثل فانکشن.
مثلا کلاس استرینگ یک Method داره.
اگر من میگم که :
' fxl ' . upper( )
' FXL '
آپر یعنی حروف بزرگتر .
فکسل دات آپر ، FXL رو برمی گردونه ، در واقع من دارم روی یک استرینگ ، یک متد به اسم آپر کار می کنم ، درست مثل یک فانکشن.
#Fxl
#strings
#Method
#functions
2 236
نکته بامزه اینه که بزرگتر کوچیکتر هم داره ، مثلا :
' bia berim ' > ' adade aval '
True
چجوری حساب می کنه؟ مثل دیکشنری ، یعنی فکر می کنه اگه این کلمات تو دیکشنری نوشته شده بودن ترتیبشون چجوری بود .
نکته : بزرگتر ها کوچیکتر هستن ، اینجا b حروف اول بیا ، بزرگتر از عدد a هستش .
بزرگ و کوچیک چجوریه؟
' A ' > ' a '
false
تو دنیای کامپیوتر ، حروف کوچیک ، بزرگترن.
#Fxl
#strings
2 236
از مساوی هم میشه استفاده کرد ، مثلا :
name = ' dara '
name == ' dara '
True
= این مقدار می داد.
== این چک می کرد.
اما :
name == ' daraa '
false
چرا غلطه؟ چون اینجا آخر اسم دارا دوتا a داره ، name ما مساوی با dara بود.
#Fxl
#name
#strings
2 236
توی بخش دوم استرینگ ها ، از چیزهای دیگه هم استفاده میکنیم ، اولیش :
' a ' in ' dara '
True
چرا درسته؟ چون دارا a داره.
شما می تونید کارکتر بیشتری هم بنویسید ، مثلا:
' da ' in dara
True
چرا درسته؟ چون da بخشی از استرینگ ما هستش.
ولی اگه daa میذاشتم :
' daa ' in ' dara '
false
یک مدلش اینه ، یعنی من یک حروفی یا چیزی رو می تونم بنویسم که ببینم در استرینگ وجود داره یانه.
این مدل در in کار می کنه.
#Fxl
#in
#strings
2 236
نکته : توی پایتون مقدار های استرینگ هارو نمیشه به سادگی عوض کنیم .
مثلا اگه s شما اینه :
s [ 0 ] = ' M '
Error : ' str ' object does not support item assignment
میگه استرینگ آبجکت رو نمی تونین عوض کنید ، نمی تونید برابر چیزی قرار بدین.
پس باید چیکار کنیم؟
می تونیم اینطوری بنویسم که s مساوی با یک چیز جدید به علاوه ی اسی که قبلا بود .
s = ' M ' + s [ 1 : ]
در اصل میاد چیکار می کنه؟؟
پیش خودش میگه اوکی ، s چی بوده🤔
آها ! man daram miram
حالا میگه s اینجا چی میشه ؟؟
an daram miram
حالا گفته که M بزرگ رو بهش اضافه کن .
در نتیجه اینطوری میشه :
' Man daram miram '
#Fxl
#slice
#strings
#s
2 236
مثلا اگه بخواییم کلمه اول یک استرینگ رو حذف کنیم ، می تونیم اینطوری بگیم :
s [ 1 : ]
از یک تا اخر که کلمه اول حذف میشه.
#Fxl
#slice
#strings
