Skip to content

Instantly share code, notes, and snippets.

@classmember
Last active August 31, 2020 02:37
Show Gist options
  • Save classmember/9efa76122d21645b54d3f15e6a44a355 to your computer and use it in GitHub Desktop.
Save classmember/9efa76122d21645b54d3f15e6a44a355 to your computer and use it in GitHub Desktop.
python cheatsheet

convert data

csv to json

from csv import DictReader as reader
import json

with open('file.json', 'w') as jsonfile:
    with open('file.csv', 'r') as csvfile:
        fieldnames = ("FirstName","LastName","BirthYear","Message")
        for row in reader(csvfile, fieldnames):
            json.dump(row, jsonfile)
            jsonfile.write('\n')

large files

read csv file

def csv_reader(file_name):
    for row in open(file_name, "r"):
        yield row

get memory usage of object

import sys

print('sys.getsizeof()')

list = [i * 2 for i in range(10000)]
print(sys.getsizeof(list))
# 87616

generator = (i ** 2 for i in range(10000))
print(sys.getsizeof(generator))
# 112

flatten list of arrays

from itertools import chain

list_3d = [[[0, 1], [2, 3]], [[4, 5], [6, 7]]]

list(chain.from_iterable(list_3d))
# [[0, 1], [2, 3], [4, 5], [6, 7]]

list(chain.from_iterable(chain.from_iterable(list_3d)))
# [0, 1, 2, 3, 4, 5, 6, 7]

flatten = lambda x: list(chain.from_iterable(x))

flatten(list_3d)
# [[0, 1], [2, 3], [4, 5], [6, 7]]

flatten(flatten(list_3d))
# [0, 1, 2, 3, 4, 5, 6, 7]

mathy / functional python

Capitalize the last character in a string

# Solution with short variable names
hh = lambda ww, cc: [ww, cc, ww.rfind(cc)]
gg = lambda ss, rr, cc: ss[:cc] + rr.upper() + ''.join([i for i in ss[cc+1:]])
[i for i in map(lambda x: gg(*hh('abcdabcdabcd', x)), list('abcd'))]
# ['abcdabcdAbcd', 'abcdabcdaBcd', 'abcdabcdabCd', 'abcdabcdabcD']
# solution with readable variable names
str_char_rfind = lambda word, char: [word, char, word.rfind(char)]
cap_last_char = lambda word, char, rfound_pos: word[:rfound_pos] + char.upper() + ''.join([i for i in word[rfound_pos+1:]])
[i for i in map(lambda x: cap_last_char(*str_char_rfind('abcdabcdabcd', x)), list('abcd'))]
# ['abcdabcdAbcd', 'abcdabcdaBcd', 'abcdabcdabCd', 'abcdabcdabcD']
# solution with readable variable names and a convenience function
str_char_rfind = lambda word, char: [word, char, word.rfind(char)]
cap_last_char = lambda word, char, rfound_pos: word[:rfound_pos] + char.upper() + ''.join([i for i in word[rfound_pos+1:]])
repeat_string_and_cap_last_char = lambda word, t: [i for i in map(lambda x: gg(*str_char_rfind(word * t, x)), list(word))]
repeat_string_and_cap_last_char('abcd', 3)
# ['abcdabcdAbcd', 'abcdabcdaBcd', 'abcdabcdabCd', 'abcdabcdabcD']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment