\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{user111} \pdfinfo{ /Title (python-basics.pdf) /Creator (Cheatography) /Author (user111) /Subject (Python Basics Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{237872} \definecolor{LightBackground}{HTML}{F1F6F6} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Python Basics Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{user111} via \textcolor{DarkBackground}{\uline{cheatography.com/37570/cs/11802/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}user111 \\ \uline{cheatography.com/user111} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 18th May, 2017.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{2.18988 cm} x{2.78712 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Basic of Basic}} \tn % Row 0 \SetRowColor{LightBackground} comment & \#comment \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} print & print() \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} assignment sign & = \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} equal sign & == \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} case sensitive & YES \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} indenting matters & YES \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} help(x) or ?x & INFO on x \tn % Row Count 7 (+ 1) % Row 7 \SetRowColor{white} IF condition & if elif else \tn % Row Count 8 (+ 1) % Row 8 \SetRowColor{LightBackground} empty\_list = {[}{]} & initiate an empty list \tn % Row Count 9 (+ 1) % Row 9 \SetRowColor{white} !ls & list files in wd \tn % Row Count 10 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{3.33459 cm} x{1.64241 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Math Operators}} \tn % Row 0 \SetRowColor{LightBackground} basic 4 & + - * / \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} exponentiation & ** \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} modulo & \% \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} floor division & // \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{0.89586 cm} x{4.08114 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{ZERO Indexing}} \tn % Row 0 \SetRowColor{LightBackground} x{[}0{]} & 1st element of x \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} x{[}-1{]} & last element of x \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} x{[}a:b{]} & from position "a" to "b-1" \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} x{[}a:{]} & from position "a" to the last \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} x{[}:b{]} & from position "b-1" to the first \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} x{[}::-1{]} & read backward 1 step back \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.64241 cm} x{3.33459 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Basic functions}} \tn % Row 0 \SetRowColor{LightBackground} Type \& conversion & type() str() int() float() bool() \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} & len() \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} define function & def \seqsplit{function\_name(parameter):} \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} output & return new\_value \tn % Row Count 6 (+ 1) % Row 4 \SetRowColor{LightBackground} docstrings & """ foo """ after function declared \tn % Row Count 8 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.63781 cm} x{2.33919 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{LIST}} \tn % Row 0 \SetRowColor{LightBackground} list = {[}a, b, c{]} & compound data type \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} add to list & foo + list \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} remove from list & del(list{[}x{]}) \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} copy list (explicit) & list() or list{[}:{]} \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{List \& Dict comprehension}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{new\_nums = {[}num + 1 for num in nums{]}} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{new\_pairs = {[}(num1, num2) for num1 in range1 for num2 in range2{]}} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{new\_dict = \{num: num+1 for num in range(x)\}} \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.14011 cm} x{2.83689 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Most common packages}} \tn % Row 0 \SetRowColor{LightBackground} Pandas & Dataframe \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Numpy & Array \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} Matplotlib & Visualisation \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} Scikit-learn & Machine learning \tn % Row Count 4 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.54747 cm} x{4.42953 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{STRING methods}} \tn % Row 0 \SetRowColor{LightBackground} find & \textless{}str\textgreater{}.find(\textless{}str\textgreater{}, \textless{}number\textgreater{}) \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} & 1st find position; -1 if not found starting from \textless{}number\textgreater{} \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} case & upper() lower() \tn % Row Count 4 (+ 1) % Row 3 \SetRowColor{white} count & count("foo") \tn % Row Count 6 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.63781 cm} x{2.33919 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{LIST methods}} \tn % Row 0 \SetRowColor{LightBackground} append & list.append(foo) \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} index & list.index(foo) \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} count & list.count(foo) \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} remove (1st match) & list.remove(foo) \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} reverse (order) & list.reverse() \tn % Row Count 5 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.74195 cm} x{3.23505 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Dataframe methods}} \tn % Row 0 \SetRowColor{LightBackground} df.columns & df.head(), df.tail() \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} df.shape, df.info() & df{[}'foo'{]}.value\_counts(dropna=FALSE) \tn % Row Count 3 (+ 2) % Row 2 \SetRowColor{LightBackground} df.describe() & summary statistic of numeric data \tn % Row Count 5 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.24425 cm} x{3.73275 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Iterating}} \tn % Row 0 \SetRowColor{LightBackground} list & for index, item in enumerate(list\_name) \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} string & for chr in "name" \tn % Row Count 3 (+ 1) % Row 2 \SetRowColor{LightBackground} \seqsplit{dictionary} & for key, val in dict\_name.items() \tn % Row Count 5 (+ 2) % Row 3 \SetRowColor{white} Numpy array & for val in \seqsplit{numpy.nditer(array\_name)} \tn % Row Count 7 (+ 2) % Row 4 \SetRowColor{LightBackground} Pandas series & for label, row in pandas\_name.iterrows() \tn % Row Count 9 (+ 2) % Row 5 \SetRowColor{white} data & for chunk in pd.read\_csv('data.csv', chunksize = 1000) \tn % Row Count 11 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{iterate through rows in pandas is not efficient. avoid if possible. \newline i \newline an iterable is an object that can return an iterator, while an iterator is an object that keeps state and produces the next value when you call next() on it \newline \newline iterable -\textgreater{} iter() -\textgreater{} next() \newline \newline print(*x) to print all elements} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Quirks}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Different types of value} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}string*number is OK but string+number is error} \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Multiple assignment} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}a, b = 3, 4 the value of a is 3 and the value of b is 4} \tn % Row Count 5 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{tuple vs. list vs. dictionary} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}( ) vs. {[} {]} vs. \{\}, immutable vs. mutable vs. immutable key} \tn % Row Count 8 (+ 3) % Row 3 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{declare non-local var} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}in local functions} \tn % Row Count 10 (+ 2) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{declare global var} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}in enclosing functions} \tn % Row Count 12 (+ 2) % Row 5 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{generator} \tn \mymulticolumn{1}{x{5.377cm}}{\hspace*{6 px}\rule{2px}{6px}\hspace*{6 px}not stored in memory like list, iterable} \tn % Row Count 14 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{BEWARE}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{edge case: s{[}0{]} causes ERROR if s is empty} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{list is ordered vs dictionary is un-ordered} \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.04517 cm} x{3.93183 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Functions on function}} \tn % Row 0 \SetRowColor{LightBackground} map() & applies function over an object \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \seqsplit{reduce()} & filter() \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Used together with lambda} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}