Sorry, don’t do that, let me correct myself.
You would only need to use the id of the category you want, not the id of the category you don’t want. Specifying the id of the category you do not want would cause it to not display posts that are in BOTH categories).
This is all you need:
// post's first category id is 9
[catlist id=9]
On another note…
I have not fully tested the following code, but it should work. If you are comfortable with editing the theme code, you can do something similar in the loop in single.php (or other desired template). This way you would not need to know the category id, but it would display a catlist on all posts (unless you add some conditionals).
This code would get the categories that a post is in and only display the catlist for the first category
$theCategories = get_the_category();
$category1 = $theCategories[0]->term_id;
echo do_shortcode("[catlist id=$category1]");
Like my first code examples, this code will do the same, and excludes posts that are also in the other categories.
$theCategories = get_the_category();
$category1 = $theCategories[0]->term_id;
if(isset($theCategories[1])) $category2 = $theCategories[1]->term_id;
if(isset($theCategories[2])) $category3 = $theCategories[2]->term_id;
...
echo do_shortcode("[catlist id=$category1,-$category2,-$category3...]");
Make sure those last two codes blocks are used inside the loop.