How to build surface from lists?
Simple bmesh script to create z grid from list of lists..



From what I can see assume: The data is n lists of m members, which can be layed out in an (n - 1) x (m - 1) grid.

Simple test script, paste into blank text, and "run script". Note made no effort to scale this, can be done after running from dimensions / scale properties.

import bpy
import bmesh
from mathutils import Vector
context = bpy.context
me = bpy.data.meshes.new("Surface")
bm = bmesh.new()

# rows x cols list of lists.
data = [[1, 2, 3, 3],
        [0, 1, 2, 3],
        [0, 0, 1, 2],
        [0, 0, 0, 1]]

rows = len(data)
cols = len(data[0])
# make a grid for easy skinning 
bmesh.ops.create_grid(bm,
        x_segments = cols,
        y_segments = rows)
# assign list coords to grid.
bm.verts.ensure_lookup_table()
for row in range(rows):
    i = row * rows
    for col in range(cols):
        index = i + col
        vert = bm.verts[index]
        vert.co = Vector((row, col, data[row][col]))      
bm.to_mesh(me)
# add an object to the scene.
ob = bpy.data.objects.new("Surface", me)
scene = context.scene
scene.objects.link(ob)
scene.objects.active = ob