diff --git a/schema.py b/schema.py
index b8abee4..f4f5460 100644
--- a/schema.py
+++ b/schema.py
@@ -109,7 +109,7 @@ class Schema(object):
         if flavor == ITERABLE:
             data = Schema(type(s), error=e).validate(data)
             o = Or(*s, error=e)
-            return type(s)(o.validate(d) for d in data)
+            return type(data)(o.validate(d) for d in data)
         if flavor == DICT:
             data = Schema(dict, error=e).validate(data)
             new = type(data)()  # new - is a dict of the validated values

Inconsistent return types for validate: type(schema) or type(data)?
I've noted a small inconsistency when validating with iterable and dict schemas:

```python
        if flavor == ITERABLE:
            data = Schema(type(s), error=e).validate(data)
            return type(s)(Or(*s, error=e).validate(d) for d in data)
        if flavor == DICT:
            data = Schema(dict, error=e).validate(data)
            new = type(data)()  # new - is a dict of the validated values
            ...
            return new
```

Briefly, when validating with iterable schemas the return type is that of the schema, when validating with dict schemas it's that of the input.

Personally I think that it's more flexible to have the return type match the one of the input.

Ideas, preferences?
diff --git a/test_schema.py b/test_schema.py
index 967dec0..e124fc9 100644
--- a/test_schema.py
+++ b/test_schema.py
@@ -408,3 +408,10 @@ def test_exception_handling_with_bad_validators():
         except SchemaError as e:
             assert "TypeError" in e.args[0]
             raise
+
+
+def test_issue_83_iterable_validation_return_type():
+    TestSetType = type("TestSetType", (set,), dict())
+    data = TestSetType(["test", "strings"])
+    s = Schema(set([str]))
+    assert isinstance(s.validate(data), TestSetType)

pip install -e .
parse_log_pytest
requirements.txt
pytest pytest-cov coverage
3.5
pytest --doctest-glob=README.rst --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
attrs==22.2.0
certifi==2021.5.30
coverage==6.2
importlib-metadata==4.8.3
iniconfig==1.1.1
packaging==21.3
pluggy==1.0.0
py==1.11.0
pyparsing==3.1.4
pytest==7.0.1
pytest-cov==4.0.0
-e git+https://github.com/keleshev/schema.git@eb7670f0f4615195393dc5350d49fa9a33304137#egg=schema
tomli==1.2.3
typing_extensions==4.1.1
zipp==3.6.0

name: schema
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - certifi=2021.5.30=py36h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.3=he6710b0_2
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=1.1.1w=h7f8727e_0
  - pip=21.2.2=py36h06a4308_0
  - python=3.6.13=h12debd9_1
  - readline=8.2=h5eee18b_0
  - setuptools=58.0.4=py36h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - wheel=0.37.1=pyhd3eb1b0_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - attrs==22.2.0
      - coverage==6.2
      - importlib-metadata==4.8.3
      - iniconfig==1.1.1
      - packaging==21.3
      - pluggy==1.0.0
      - py==1.11.0
      - pyparsing==3.1.4
      - pytest==7.0.1
      - pytest-cov==4.0.0
      - tomli==1.2.3
      - typing-extensions==4.1.1
      - zipp==3.6.0
prefix: /opt/conda/envs/schema

test_schema.py::test_issue_83_iterable_validation_return_type
test_schema.py::test_schema test_schema.py::test_validate_file test_schema.py::test_and test_schema.py::test_or test_schema.py::test_validate_list test_schema.py::test_list_tuple_set_frozenset test_schema.py::test_strictly test_schema.py::test_dict test_schema.py::test_dict_keys test_schema.py::test_dict_optional_keys test_schema.py::test_dict_optional_defaults test_schema.py::test_dict_subtypes test_schema.py::test_complex test_schema.py::test_nice_errors test_schema.py::test_use_error_handling test_schema.py::test_or_error_handling test_schema.py::test_and_error_handling test_schema.py::test_schema_error_handling test_schema.py::test_use_json test_schema.py::test_error_reporting test_schema.py::test_schema_repr test_schema.py::test_validate_object test_schema.py::test_issue_9_prioritized_key_comparison test_schema.py::test_issue_9_prioritized_key_comparison_in_dicts test_schema.py::test_missing_keys_exception_with_non_str_dict_keys test_schema.py::test_issue_56_cant_rely_on_callables_to_have_name test_schema.py::test_exception_handling_with_bad_validators
schema.py
schema.py