Question: When using the interpreter, the expression `'a' in ('abc')` returns True, while `'a' in ['abc']` returns False. Can somebody explain this behaviour?

Answer: 
`('abc')` is the same as `'abc'`. `'abc'` contains the substring `'a'`, hence `'a' in 'abc' == True`.

If you want the tuple instead, you need to write `('abc', )`.

`['abc']` is a list (containing a single element, the string `'abc'`). `'a'` is not a member of this list, so `'a' in ['abc'] == False`
For `('abc')` you get 'a' in `('abc')` return true.

But for `['abc']` as it is a array list you get 'a' in `['abc']` return false.

**Example:**

*Input:* `('abc') == 'abc'`

*Output:* `True`

So if we call 'a' in ('abc') it is same as 'a' in 'abc' because ('abc') is not a tuple but 'abc' is a array of character where character 'a' is in index 0 of string 'abc'. 

On the other hand ['abc'] is array list where 'abc' is a single string which is at index 0 of array ['abc'].

**Tupple Example:** *`x = ('abc', 'def', 'mnop')`*

**Array Example:** *`x = ['abc', 'def', 'mnop']`*

or 

```
x = ('abc'), y = 'abc'

```

Here always `x == y`.

But in case of `'a' in ['abc']` =>

```
x = ['abc'], y = 'abc'

```

Here `x != y` but `x[0] == y`