My main problem with this method is that you don't make a useful docstring and consequently it's unclear what should or shouldn't pass.
You say that you're checking if the input is a lost of lists of pairs of numbers, but not explaining how. If I had a class with
__len__ defined and could be iterated over, that would pass your test. That might sound unlikely, but consider someone passing a set of generators:
>>> coords = [xrange(2)] * 10
...no errors. But
xrange most certainly does not return lists. If you only need the pairs to iterate over you'll be fine, but if you want to index them to get the two values then a generator will throw errors. This method should be testing what aspects of the data you need, such as indexing, not just using methods that indicate they're collections or collection like objects.
Once you know what does need to be tested this way, it would be beter to document it clearly in the docstring, so that if unusual data passes, the user can be sure that's because it's acceptable for your purposes and not just something you didn't account for.
Some other quick notes,
assert is a statement not a function. You don't need to use brackets for it:
assert len(coord) == 2
You build the error string up front, which seems unnecessary and slightly wasteful as you may never need it. If you want to create it on its own line then you should still put it in the
Your names could be clearer. I don't know what a
args could be better names, since this function isn't really co-ordinate specific so much as it is format specific. I'd recommend either
pairs for the longer lists and
pair for the 2 item collections. The choice depends on how broad or narrow you intend this to be, but the docstring currently sounds more generic.
Last nitpick, in your error message you refer to lists only. If you want it to be broad you may want to use
Collection as that refers to the range of list and dict like objects. Though if your intent is to encourage the user to use lists then it's a good error message.