diff --git a/properties/base.py b/properties/base.py
index <HASH>..<HASH> 100644
--- a/properties/base.py
+++ b/properties/base.py
@@ -385,7 +385,8 @@ class List(basic.Property):
         return 'a list - each item is {info}'.format(info=self.prop.info())
 
     def _unused_default_warning(self):
-        if self.prop.default is not utils.undefined:
+        if (self.prop.default is not utils.undefined and
+                self.prop.default != self.default):
             warn('List prop default ignored: {}'.format(self.prop.default),
                  RuntimeWarning)
 
@@ -507,7 +508,7 @@ class Union(basic.Property):
                 continue
             if prop_def is utils.undefined:
                 prop_def = prop.default
-            else:
+            elif prop_def != prop.default:
                 warn('Union prop default ignored: {}'.format(prop.default),
                      RuntimeWarning)
Do not warn on unused defaults if unused and used values are the same

For example Unions of different list types will not warn any more.
An empty list is the default regardless.