Try this. Itereate over a list of lists. Each sublist contains the feature class name and the path to the layer for that feature class. Use the two values with normal list indexing. You can do loops this way that take many inputs that change for each iteration.
import arcpy
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
# loop through layers to get layer names, replace layer file
fcList = [[roads,r'roads.lyr path'], [rivers,r'rivers.lyr path'], [buildings,r'buildings.lyr path']]
for fc in fcList:
fc = arcpy.mapping.ListLayers(mxd, fc[0],df)[0]
updateLayer = arcpy.mapping.ListLayers(mxd,fc,df)[0]
sourceLayer = arcpy.mapping.Layer(fc[1])
arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)
# refresh view and table of contents, save changes to mxd
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
mxd.save()
del sourceLayer, mxd
You could also use a dictionary and .iteritems(). Which ever makes you happy. Neither is better than the other in this case.
fcDict = {roads:r'roads.lyr path', rivers:r'rivers.lyr path', buildings:r'buildings.lyr path'}
for fc,lyr in fcDict.iteritems():
fc = arcpy.mapping.ListLayers(mxd, fc,df)[0]
updateLayer = arcpy.mapping.ListLayers(mxd,fc,df)[0]
sourceLayer = arcpy.mapping.Layer(lyr)
arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)