# 子集

<p>给你一个整数数组 <code>nums</code> ，数组中的元素 <strong>互不相同</strong> 。返回该数组所有可能的子集（幂集）。</p><p>解集 <strong>不能</strong> 包含重复的子集。你可以按 <strong>任意顺序</strong> 返回解集。</p><p> </p><p><strong>示例 1：</strong></p><pre><strong>输入：</strong>nums = [1,2,3]<strong><br />输出：</strong>[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]</pre><p><strong>示例 2：</strong></p><pre><strong>输入：</strong>nums = [0]<strong><br />输出：</strong>[[],[0]]</pre><p> </p><p><strong>提示：</strong></p><ul>	<li><code>1 <= nums.length <= 10</code></li>	<li><code>-10 <= nums[i] <= 10</code></li>	<li><code>nums</code> 中的所有元素 <strong>互不相同</strong></li></ul>

## template

```python
class Solution:
    def subsets(self, nums):
        allset = 2 ** len(nums)
        result = []
        for i in range(allset):
            item = []
            for j in range(len(nums)):
                if i & (2 ** j):
                    item.append(nums[j])
            result.append(item)
        return result
if __name__ == "__main__":
	s = Solution()
	print (s.subsets([1,2,3]))
```

## 答案

```python
class Solution:
    def subsets(self, nums):
        allset = 2 ** len(nums)
        result = []
        for i in range(allset):
            item = []
            for j in range(len(nums)):
                if i & (2 ** j):
                    item.append(nums[j])
            result.append(item)
        return result
if __name__ == "__main__":
	s = Solution()
	print (s.subsets([1,2,3]))
```

## 选项

### A

```python
class Solution:
    def subsets(self, nums):
        allset = 2 ** len(nums)
        result = []
        for i in range(allset):
            item = []
            for j in range(len(nums)):
                if 2 ** j:
                    item.append(nums[j])
            result.append(item)
        return result
if __name__ == "__main__":
	s = Solution()
	print (s.subsets([1,2,3]))
```

### B

```python
class Solution:
    def subsets(self, nums):
        allset = 2 ** len(nums)
        result = []
        for i in range(allset):
            item = []
            for j in range(len(nums)):
                if 2 * j:
                    item.append(nums[j])
            result.append(item)
        return result
if __name__ == "__main__":
	s = Solution()
	print (s.subsets([1,2,3]))
```

### C

```python
class Solution:
    def subsets(self, nums):
        allset = 2 ** len(nums)
        result = []
        for i in range(allset):
            item = []
            for j in range(len(nums)):
                if i & (2 * j):
                    item.append(nums[j])
            result.append(item)
        return result
if __name__ == "__main__":
	s = Solution()
	print (s.subsets([1,2,3]))
```