title: Argparse append action with default value only if argument doesn't appear
body: <p>I'm parsing CLI arguments in my program with the <code>argparse</code> library. I would like to parse an argument that can repeat, with the following behaviour:</p>
  
  <ul>
  <li>if the argument appears at least once, its values are stored in a list,</li>
  <li>if the argument doesn't appear, the value is some default list.</li>
  </ul>
  
  <p>I have the following code so far:</p>
  
  <pre><code>import argparse
  ap = argparse.ArgumentParser(description="Change channel colours.")
  ap.add_argument('-c', '--channel', action='append', default=['avx', 'fbx'])
  print(ap.parse_known_args(['-c', 'iasdf', '-c', 'fdas']))
  print(ap.parse_known_args())
  </code></pre>
  
  <p>This appropriately sets a default list, however it doesn't start with an empty list when the argument appears. In other words, the second <code>print</code> statement prints the correct value (the default list), but the first one prints</p>
  
  <pre><code>['avx', 'fbx', 'iasdf', 'fdas']
  </code></pre>
  
  <p>instead of</p>
  
  <pre><code>['iasdf', 'fdas']
  </code></pre>
  
  <p>Is there a way in <code>argparse</code> to do what I want without doing something like</p>
  
  <pre><code>if len(args.channel) &gt; 2:
      args.channel = args.channel[2:]
  </code></pre>
  
  <p>after the fact?</p>