The above snippet was a little dated so I modified it to run on Python27 and Python32:
# experimenting with Python's list
# tested with Python23 vegaseat 21feb2005
# modified via 2to3.py utility to work with Python3
# case insensitive sort has been updated
# import module os for method listdir()
import os
# create an empty list
iL = []
print("\nThese are the attributes and methods of a list:")
print(dir(iL))
print("\nA list of America's Most Popular Lawyers:")
print(iL)
print("\nLoad the list with 0 to 9")
for number in range(10):
iL.append(number)
print("\nShow the loaded list:")
print(iL)
print("\nSame but simpler:")
iL2 = list(range(10))
print(iL2)
print("\nThere are %d elements, min = %d, max = %d" % (len(iL), min(iL), max(iL)))
print("\nShow the first element (lists are zero based):")
print(iL[0])
print("\nShow the final element:")
print(iL[-1])
print("\nSum up all the integers in the list:")
print(sum(iL))
# this is called slicing
# [starting-at-index : but-less-than-index [ : step]]
# start defaults to 0, end to len(sequence), step to 1
print("\nShow the first 3 elements:")
print(iL[:3])
print("\nShow every second element starting with index 1:")
print(iL[1::2])
# cloning, assign one list to another list from start to end
iL2 = iL[:]
# aliasing is simpler, but iL3 retains the address of iL
# so if you change iL you also change iL3, oops!!!
iL3 = iL
print("\nList assigned to another list:")
print("original", iL, "id =", id(iL))
print("clone ", iL2, "id =", id(iL2))
print("alias ", iL3, "id =", id(iL3))
# search the list for integer 7
print("\nValue 7 is at index = %d\n" % iL.index(7))
# insert an element
print("Insert another 7 at that index:")
iL.insert(iL.index(7),7)
print(iL)
print('')
# check if there are two sevens
if iL.count(7) == 2 :
print("There are two sevens in the list")
elif iL.count(7) == 1 :
print("There is one seven in the list")
else:
print("There are %d sevens in the list" % iL.count(7))
print("\nRemove the extra 7 :")
if iL.count(7) > 1 :
iL.remove(7)
print(iL)
print("\nReverse the list:")
iL.reverse()
print(iL)
print("\nSort the list:")
iL.sort()
print(iL)
# insert a list
list1 = ['a', 'b', 'c', 'd', 'e']
print("\nOriginal list:")
print(list1)
print("Insert another list at index 3:")
list1.insert(3, ['n1', 'n2', 'n3'])
print(list1) # ['a', 'b', 'c', ['n1', 'n2', 'n3'], 'd', 'e']
# using slicing to insert several elements into a list
# this inserts elements of ['n1', 'n2', 'n3'] at index 3:
list2 = ['a', 'b', 'c', 'd', 'e']
print("\nInsert elements of another list at index 3:")
list2[3:3] = ['n1', 'n2', 'n3']
print(list2) # ['a', 'b', 'c', 'n1', 'n2', 'n3', 'd', 'e']
# using slicing to replace an element with other elements
# this replaces element at index 3 with elements of ['n1', 'n2', 'n3']:
list3 = ['a', 'b', 'c', 'd', 'e']
print("\nReplace element at index 3 with elements of another list:")
list3[3:4] = ['n1', 'n2', 'n3']
print(list3) # ['a', 'b', 'c', 'n1', 'n2', 'n3', 'e']
# you can create a list of mixed types ...
mixedList = []
mixedList.append(1.23)
mixedList.append('a')
mixedList.append('mixed')
mixedList.append('type')
mixedList.append('list')
mixedList.append(77777)
mixedList.append(0xff) # hex turns to decimal
mixedList.append(355/113.0) # approximation of pi
print("\nA list of mixed types:")
print(mixedList)
print('')
# show the difference between two lists using zip() and list comprehension
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2 = [1, 2, 3, 4, 4, 6, 7, 8, 9, 11]
print("list1 =", list1)
print("list2 =", list2)
print('-' * 60) # vanity line of dashes
print("These are the items different in the two lists:")
print([(x, y) for (x, y) in zip(list1, list2) if x != y])
# let's go from integers to strings ...
print("\nOriginal string:")
s = "I'm dreaming of a white precipitate"
print(s)
# create a list of strings
print("\nSeparate string at any whitespace to a list of words:")
sL = []
sL = s.split()
print(sL)
print("\nAdd 2 more words:")
sL.append("in")
sL.append("class")
print(sL)
# search the list for dreaming
print("\n'dreaming' is at index = %d\n" % sL.index('dreaming'))
print("Insert an item at index 1 (moves rest of elements up):")
sL.insert( 1, "merrily")
print(sL)
print("\nInsert an item one index in from the end:")
sL.insert( -1, "chemistry")
print(sL)
print("\nPrint the list one item on a line:")
# new line as delimiter
print("\n".join(sL))
print("\nJoin the list of words to form a string again:")
# single space = " " as a delimiter
s2 = " ".join(sL)
print(s2)
print("\nRemove 'white' from the list:")
sL.remove('white')
print(sL)
# treat this list like a stack (last in first out)
# like a stack of dinner plates
print("\nOperate the present list like a stack (LIFO):")
print("pop last element = " + sL.pop())
print("pop second last = " + sL.pop())
print("pop third last = " + sL.pop())
print("this is left:")
print(sL)
print('')
# treat this list like a queue (first in first out)
# like the line at the store check-out
print("Operate the present list like a queue (FIFO):")
print("pop first element = " + sL.pop(0))
print("pop second element = " + sL.pop(0))
print("this is left:")
print(sL)
print("\nSort this list:")
sL.sort()
print(sL)
print("\nIs 'of' in this list?")
if 'of' in sL:
print('yes')
# let's look at sorting a list of strings
mystr = "I really love Monty Python's Flying Circus"
wordList = []
wordList = mystr.split()
print("\nThe original list of words:")
print(wordList)
print("\nSort this list (the default sort is case sensitive):")
wordList.sort()
print(wordList)
print("\nHere is a sort that is case insensitive:")
wordList.sort(key=str.lower) # updated
print(wordList)
print('')
# a way to weed out duplicate words from a list
rawList = ['just', 'a', 'test', 'a', 'test', 'of', 'an', 'ordinary', 'string']
# create an empty list
uniqueList = []
# use a list comprehension statement (takes a while to understand)
[uniqueList.append(wrd) for wrd in rawList if not uniqueList.count(wrd)]
print("The raw list containing duplicates:")
print(rawList)
print("The unique list (no duplicates):")
print(uniqueList)
# find all the .bmp files in the Windows folder
print("\nAdd all the bitmap files in the Windows folder to a list:")
path = 'c:/windows/'
ext = '.bmp'
# create an empty list
fileList = []
for filename in os.listdir(path):
if filename.endswith(ext):
fileList.append(filename)
# show the list of files
print(fileList)
print("\nShow one filename on each line:")
for filename in fileList:
print(filename)