def get_shells(data):
	"""
	:param data: an iterable
	:return: a list holding tuples. Each tuple holds the shells in outer-to-inner order.
				If the data holds an odd number of elements, the central element is returned
				as a singleton.
	:rtype: list

	>>> l = [1, 2, 3, 4]
	>>> get_shells(l)
	[(1, 4), (2, 3)]
	>>> l2 = [('bob', 1), ('sue', 2), ('andrew', 3), ('luke', 4), ('alex', 5)]
	>>> get_shells(l2)
	[(('bob', 1), ('alex', 5)), (('sue', 2), ('luke', 4)), (('andrew', 3),)]
	"""
	mid_elem = len(data) // 2
	i = 0
	shells = []
	while i < mid_elem:
		shells.append((data[i], data[-1 * (i + 1)]))
		i += 1

	if not(len(data) % 2 == 0):
		shells.append((data[mid_elem],))
	return shells