Incredible video ! I love is when he says : 'If you don't know smth' and then explains it, as I am used to getting a link to another video or no explanation at all. I learned so many things !
tee is like a T is a pipe (like with fluid in it). It's an analogy with unix piping. On *nix you can: Command1 | tee file.txt | command2 And it will pipe the output of command1 to tee which will write it to the file 'file.txt' and in turn pipe it to command2.
Hey, Corey, I'm a python beginner and I've started watching your python tutorials a few days ago. And I just wanted to tell you that you're a great teacher. I wish that I had found out about you 3 months ago when I started. I'm a Treehouse student, I like it there but they don't really explain as well as you do. So thank you, Corey, I appreciate your great work.
Hey, just want to say that I self-learned Python and your videos were a great help to me when I first started out. Now, I just remembered the channel and came over to see whether it still continues, and your teaching quality has somehow yet improved! Many thanks, and please keep doing this. I learned a lot in this video even though I already knew itertools. Thanks again, and cheers to many more lessons!
Nobody in this planet could have explained better than you. Keep up your good work. Just a small request, if you could break your python playlist in small categories it would make related videos easy to find.
This is an excellent video. Thank you, Corey! Sure, there are alternative (but more verbose) ways of carrying out many of these operations using "base python" But in the same way that comprehensions allow one to get away with writing less loops, it's the expressiveness of itertools that has me sold. As a pandas user, it was also interesting to pick up some new ideas about how 'groupby'/grouper objects can be used.
Corey, I believe the tee function comes from Unix and the idea of pipes. If you want to split the flow, you put a “T” pipe in the middle which would output 2 streams. Think plumbing. Thanks for the video.
Hi, I’m new to your channel and I’d rlly like to say thank you for making these videos! It has rlly given me the encouragement I needed to continue to learn. The way you walk us through the process, to where it’s easy enough for a beginner like me, I’m grateful.
“Tee” almost certainly comes from the Unix/Linux command of the same name. The name plays on the Unix concept of pipes as I/O plumbing and represents a tee plumbing fitting[1] that divides a single incoming flow into two or more output flows (in plumbing, it can do the opposite, too, and combine multiples into one). In the Unix case, tee takes input on STDIN and outputs it to both STDOUT and the file (or files) given as its arguments. [1] en.m.wikipedia.org/wiki/Piping_and_plumbing_fitting#Tee
thank you for your videos, i learn from them a lot, also i have a question about using zip with count, at 4:30 you wrote: daily_data = zip(itertools.count(), data) why instead not to use enumerate? : daily_data = enumerate(data) the benefit in functionality with the count is that you can make step what is the difference in performance, memory usage, etc?
if you use enumerate it well not be asigned inside a list but using itertools well make that happen enumerate = 0 "good" 1 "bad" itertools = [(0,"good"),(1,"bad")]
itertools.count() is more versatile Note that at 6:15, a "step" argument can be passed into itertools.count(), which is not possible for enumerate(). So, for enumerate(), we can only control the starting index, the step size is fixed to 1 and we cannot pass in any argument to change it. While for itertools.count(), we can change both the starting index and the step size by passing in the corresponding arguments.
Thank you very much for covering this topic. I deeply appreciate it. Everything was covered in detail.. Was thinking about the group by() function lately. It makes no sense that the items have got to be listed in order for the grouping to work.. Wish the they could add more functionality to the groupby
Nice and clear demonstration, as always. Thanks! 44:41 yep, sounds like it comes from the Linux tee program. It comes from the fact that it splits the output into two, like a T shaped pipe.
@@coreyms it actually predates linux, coming from quite early unix, as do most linux commands and internal shell commands. ps This is another truly excellent leaning video.
I really like the way you simplified everything. I have been struggling to understand itertools module for a long time. The truth is, I am new to python and am looking for a mentor. Can you be my mentor. Looking forward to your reply.
Hi Corey! Are you planning on tackling data science stuff like Matplotlib, Pandas, Numpy, Keras, etc? I find your vids of tremendous value. Keep'em coming!
For a very good Keras Tutorial including the math behind machine learning (only if you're interested in, its not necessary) , have a look at the deeplizard playlists! It helped me a lot!
@groupby example: for key, group in person_group: print(f"{key}: {sum(1 for i in group)}") would be way to avoid the list cast (eg if you would like to stick with lazy iterators).
one suggestion I have is to teach the module with some more in depth problem or even project examples. I've gone through the actual docs line by line in the past but the only time I really remember the "feeling" of how to use these tools is when I applied them in actually creating solution to a problem or even a code challenges. I don't think we learn to code by memorization but through implementation and by example.
The tee command is named after the T-splitter in plumbing, which splits water into two directions and is shaped like an uppercase T. Suppose you wish to get the number of files in your directory and also store them in a new file. Intuitively, you may come up with something as this, ls -l > listOfFiles.txt | wc -l But there's a problem. All the output of ls -l is redirected to creating listOfFiles.txt file. So, the first part works really well. And there's for there's nothing 'left' to redirect to the 'wc -l' command, since, redirection to a file doesn't really return anything. To achieve what we wanted to achieve, we pass the output of ls -l to 'tee'. Tee does two things, writes to the file whose name is mentioned after the tee command and also sends it to command that comes after. ls -l | tee listOfFiles.txt | wc -l This would display the number of lines that ls - l outputs, while at the same time writing the list of files to the file 'listOfFiles.txt'. Once you get what it's trying to achieve it becomes easier to apply. Just remember when you send something to tee, it would split it two ways, 1) to the file, 2) to the next command in place.
One remark on the tee function... It does allow one to have "copies" of iterators but it's an illusion. The copies are in fact *buffered* iterators, so be careful with memory because the second "copy" will be using the items that were pushed into memory when you were exhausting the first "copy."
U r seriously a world class teacher
Thanks man
Incredible video ! I love is when he says : 'If you don't know smth' and then explains it, as I am used to getting a link to another video or no explanation at all. I learned so many things !
One thing that I like about this channel is the right pace in which video moves...
The best youtube teacher you can ever think of... Thanks for the Tutorial sir...
tee is like a T is a pipe (like with fluid in it). It's an analogy with unix piping.
On *nix you can:
Command1 | tee file.txt | command2
And it will pipe the output of command1 to tee which will write it to the file 'file.txt' and in turn pipe it to command2.
Best python on youtube ,and even away better than paid courses ,thanks man.
best itertools tutorial, should be in the official page imo
Yes. I'm glad I found that explanation for the groupby function. Official documentation on this is unreadable.
The first thing to do after getting a job: Become a Patreon for this channel
Xàm le
Hands down the best education video on python itertools
Hey, Corey, I'm a python beginner and I've started watching your python tutorials a few days ago. And I just wanted to tell you that you're a great teacher. I wish that I had found out about you 3 months ago when I started. I'm a Treehouse student, I like it there but they don't really explain as well as you do. So thank you, Corey, I appreciate your great work.
Thanks!
yeah bro once you do the treehouse beginner just quit it - it's not worth it
man, I dont' even know how to thank you enough....this is such a good tutorial.
Thanks for the helpful video. English is a foreign language for me, but you speak and explain very clearly.
I'm learning and using courses and tutorials almost all my life. And I can say with certainty - Corey is brilliant at teaching!
This is the best description/explanation of itertools that I have seen.
Thank you so much for this video.
Improvements:
5:07 zip(itertools.count(), data) ---> enumerate(data)
38:57 get_state = operator.itemgetter('state')
the difference between enumerate() and itertools.count() is that you can set a step value for count
the point of the video was to demonstrate itertools. There was no indication in the video that the examples were the best and only way to do things...
This is probably the best itertools instructional on video... What a useful module! Very good job!
One of the most concise lessons about itertools in Python. Thanks Corey!
This Guy is the best Python Teacher ever. I learnt Python from his Videos. I hope you r fine since I don't see any latest videos.
I've seen python videos of many tutors on UA-cam but Corey and Navin (from the Telusko channel) are my favorites. Both are amazing teachers ❤❤
I don't know, why you sharing all this knowledge, but I am extremely, extremely thankful!
You cleared all my doubts in itertools.
Thank You
Hey, just want to say that I self-learned Python and your videos were a great help to me when I first started out. Now, I just remembered the channel and came over to see whether it still continues, and your teaching quality has somehow yet improved! Many thanks, and please keep doing this. I learned a lot in this video even though I already knew itertools. Thanks again, and cheers to many more lessons!
What are up to now bro? I am also in the same boat.
Me too
ur way is simple but greatly effective and the examples just make it look soo easy and help to remember it longer
Dude, simply excellent 🙏🙏
Awesome! I have learned so much on your channel! Thank you!! You have a gift that not many people have!
Apart from being the gold standard python videos, your videos also serve as the video documentation!!
You are actually really good in teaching also the way you talk is so understandable for me and it's simple so keep up
Hi Corey please do videos about async in python
I desperately need this!
Yes please corey, I am also looking for it.
I am really grateful for these tutorials. Thank u.
Nobody in this planet could have explained better than you. Keep up your good work. Just a small request, if you could break your python playlist in small categories it would make related videos easy to find.
i've watched this two times now, its just nicely explained and crafted . Thoroughly enjoyed it .
This is an excellent video. Thank you, Corey! Sure, there are alternative (but more verbose) ways of carrying out many of these operations using "base python" But in the same way that comprehensions allow one to get away with writing less loops, it's the expressiveness of itertools that has me sold. As a pandas user, it was also interesting to pick up some new ideas about how 'groupby'/grouper objects can be used.
This video had great content and every second was worth watching.
Thanks you for the video Corey.
Fantastic, very well explained and I learned something new. Thank you!
Such a high standard video! Appreciated!
Corey, I believe the tee function comes from Unix and the idea of pipes. If you want to split the flow, you put a “T” pipe in the middle which would output 2 streams. Think plumbing. Thanks for the video.
In the UK there is a term where you can ‘tee off’ from a pipe when you add a new pipe branch. Nothing to do with golfing
Thank you so much for your all your work. You are the best teacher ever :)
Wow, thank you...that was the best explanation the itertools ever!
just when you think you got the hang of this stuff you explode my mind lol great video man!!!!!!
Always the best....Good job Corey!
Great presentation of some heavy concepts. Thanks!
Thank you from France!
Just brilliant. Thanks Corey
this language is incredible
Awesome tutorial, your so thorough in your videos, thanks Man 👊
Thanks for the great tutorial and practical examples for each function.
Hi, I’m new to your channel and I’d rlly like to say thank you for making these videos! It has rlly given me the encouragement I needed to continue to learn. The way you walk us through the process, to where it’s easy enough for a beginner like me, I’m grateful.
Wow corey ...Love you from India
comprehensive ,excellent explanation ,, loved it
thanks corey , can t wait your next video
Thank you very much! You are describing so clear and understandable!
Great video! These are some seriously useful tools.
“Tee” almost certainly comes from the Unix/Linux command of the same name. The name plays on the Unix concept of pipes as I/O plumbing and represents a tee plumbing fitting[1] that divides a single incoming flow into two or more output flows (in plumbing, it can do the opposite, too, and combine multiples into one). In the Unix case, tee takes input on STDIN and outputs it to both STDOUT and the file (or files) given as its arguments.
[1] en.m.wikipedia.org/wiki/Piping_and_plumbing_fitting#Tee
Nerd alert
All I can say is that I love you. I'm NOT crying.
Thanks man. we thank you for sharing this invaluable knowledge with us
Thank you a lot for tutorial and timing. It is very useful.
With Corey, perfection is the norm. Thanks!
Golden videos, thank you very much!
thank you for your videos, i learn from them a lot, also i have a question about using zip with count,
at 4:30 you wrote:
daily_data = zip(itertools.count(), data)
why instead not to use enumerate? :
daily_data = enumerate(data)
the benefit in functionality with the count is that you can make step
what is the difference in performance, memory usage, etc?
if you use enumerate it well not be asigned inside a list but using itertools well make that happen
enumerate = 0 "good"
1 "bad"
itertools = [(0,"good"),(1,"bad")]
He uses itertools.count inside of zip, both zip and enumerate give you iterator of tuples.
I didn't understand your point
itertools.count() is more versatile
Note that at 6:15, a "step" argument can be passed into itertools.count(), which is not possible for enumerate().
So, for enumerate(), we can only control the starting index, the step size is fixed to 1 and we cannot pass in any argument to change it.
While for itertools.count(), we can change both the starting index and the step size by passing in the corresponding arguments.
@@emilksenzovski885 because he presented the itertools functions.
You are amazing Corey
Great video as always, buddy.
Thank you very much for this video and for all of your work!
I love iterators!
Excellent video! Thanks for sharing
200k congrats !!!!!
Thank you very much. From VietNam
good job Corey!
Thank you very much for covering this topic. I deeply appreciate it. Everything was covered in detail..
Was thinking about the group by() function lately. It makes no sense that the items have got to be listed in order for the grouping to work..
Wish the they could add more functionality to the groupby
5:20 *enumerate() has left the chat.*
The 'tee' fn may refer to a 'tee' fitting in plumbing, which forks off into two directions.
Lots of Love, Saved my sleep.
Youre a great teacher. Keep the content coming! :)
COREY! YOU'RE AWESOME!!! I'M SUBSCRIBED!!!
takewhile and dropwhile might be useful for dealing with alarms on reading machine sensor data.
Great tutoial
thanks corey .
perfectly explained !!! Thanks a lot sir
Thanks a lot Corey !
T as a letter can be seen from bottom to top. The bottom is the input iterator and the top has two output iterator copies. Hence itertools.tee()
Thanks , very helpful.
Nice and clear demonstration, as always. Thanks!
44:41 yep, sounds like it comes from the Linux tee program. It comes from the fact that it splits the output into two, like a T shaped pipe.
Oh interesting. Thanks!
@@coreyms it actually predates linux, coming from quite early unix, as do most linux commands and internal shell commands. ps This is another truly excellent leaning video.
I really like the way you simplified everything. I have been struggling to understand itertools module for a long time. The truth is, I am new to python and am looking for a mentor. Can you be my mentor. Looking forward to your reply.
Hi Corey!
Are you planning on tackling data science stuff like Matplotlib, Pandas, Numpy, Keras, etc?
I find your vids of tremendous value. Keep'em coming!
For a very good Keras Tutorial including the math behind machine learning (only if you're interested in, its not necessary) , have a look at the deeplizard playlists! It helped me a lot!
thank you for sharing man, very usefull
Amazing teach video! Wow!
wondeful corey, BTW, tee command in unix is used to route the output bothe to stdin and to a file(like logging) at the same time
Love from China
Hi Corey Schafer,you are simply awesome ,Can you please do lectures on searching and sorting algorithms using python
really useful tools, TY
@groupby example:
for key, group in person_group:
print(f"{key}: {sum(1 for i in group)}")
would be way to avoid the list cast (eg if you would like to stick with lazy iterators).
one suggestion I have is to teach the module with some more in depth problem or even project examples. I've gone through the actual docs line by line in the past but the only time I really remember the "feeling" of how to use these tools is when I applied them in actually creating solution to a problem or even a code challenges. I don't think we learn to code by memorization but through implementation and by example.
Ur videos are awsome
it's great ... Thanks man 🍏
The tee command is named after the T-splitter in plumbing, which splits water into two directions and is shaped like an uppercase T.
Suppose you wish to get the number of files in your directory and also store them in a new file.
Intuitively, you may come up with something as this, ls -l > listOfFiles.txt | wc -l
But there's a problem. All the output of ls -l is redirected to creating listOfFiles.txt file. So, the first part works really well. And there's for there's nothing 'left' to redirect to the 'wc -l' command, since, redirection to a file doesn't really return anything.
To achieve what we wanted to achieve, we pass the output of ls -l to 'tee'. Tee does two things, writes to the file whose name is mentioned after the tee command and also sends it to command that comes after.
ls -l | tee listOfFiles.txt | wc -l
This would display the number of lines that ls - l outputs, while at the same time writing the list of files to the file 'listOfFiles.txt'.
Once you get what it's trying to achieve it becomes easier to apply. Just remember when you send something to tee, it would split it two ways, 1) to the file, 2) to the next command in place.
hands down, these are the most in-depth python tutorial materials I've ever gone through. Thanks, buddy.
subscribe++
like++
recommend_to_friends = "ABSOLUTELY YES"
Thanks!
Thanks, Awesome!!
One remark on the tee function... It does allow one to have "copies" of iterators but it's an illusion. The copies are in fact *buffered* iterators, so be careful with memory because the second "copy" will be using the items that were pushed into memory when you were exhausting the first "copy."
Thank you so much!
great content
Thanks you so much Corey Schafer
please can you do a video in Threading, and sockects? Thanks so much for the good works u have been doing