Python list() Function Explained

The built-in list() function creates a new list.

Beginners usually use list() for two main reasons:

  • to make an empty list
  • to convert another iterable, such as a tuple, string, range, set, or dictionary, into a list

This page explains how list() works, what it returns, and when you should use it.

Quick example #

numbers = list((1, 2, 3))
letters = list("abc")

print(numbers)
print(letters)

Output:

[1, 2, 3]
['a', 'b', 'c']

Use list() to create a list from another iterable such as a tuple, string, range, set, or dictionary.

What list() does #

list() is a built-in Python function.

It can:

  • create a new list object
  • make an empty list
  • convert an iterable into a list

A list is a changeable sequence of items. If you are new to lists, see Python lists explained for beginners.

Basic syntax #

There are two common forms:

list()
list(iterable)
  • list() makes an empty list
  • list(iterable) converts an iterable to a list

Common iterable values include:

  • strings
  • tuples
  • sets
  • ranges
  • dictionaries

Create an empty list #

Use list() with no arguments:

items = list()
print(items)

Output:

[]

This is useful when you want to build a list step by step:

items = list()

items.append("apple")
items.append("banana")

print(items)

Output:

['apple', 'banana']

You can also create an empty list with []. Both are valid.

Convert common values to a list #

Tuple to list #

numbers = list((1, 2, 3))
print(numbers)

Output:

[1, 2, 3]

If you also want to compare this with tuples, see Python tuple() function explained.

String to list #

letters = list("cat")
print(letters)

Output:

['c', 'a', 't']

list() takes each character from the string and puts it into the new list.

Range to list #

numbers = list(range(5))
print(numbers)

Output:

[0, 1, 2, 3, 4]

This is common when working with range(), especially when you want to see all the values at once.

Set to list #

values = list({10, 20, 30})
print(values)

Example output:

[10, 20, 30]

This works, but set order is not guaranteed in the way beginners often expect. The items may appear in a different order.

Dictionary to list #

person = {"name": "Ana", "age": 25}
result = list(person)

print(result)

Output:

['name', 'age']

When you pass a dictionary to list(), Python returns the dictionary keys.

If you need more help with dictionaries, see Python dict() function explained.

What counts as an iterable #

An iterable is something Python can loop through.

Common iterables include:

  • lists
  • tuples
  • strings
  • sets
  • ranges
  • dictionaries

For example, this works because a string is iterable:

print(list("hi"))

Output:

['h', 'i']

But this fails because an integer is not iterable:

print(list(5))

Output:

TypeError: 'int' object is not iterable

If you want a deeper explanation, read iterators and iterable objects explained. If you hit this exact error, see how to fix TypeError: int object is not iterable.

list() makes a new list copy #

If you already have a list, list(existing_list) creates a new list with the same items:

original = [1, 2, 3]
copied = list(original)

print(original)
print(copied)
print(original is copied)

Output:

[1, 2, 3]
[1, 2, 3]
False

This means copied is a different list object.

However, this is only a shallow copy. Nested items are still shared:

original = [[1, 2], [3, 4]]
copied = list(original)

copied[0].append(99)

print(original)
print(copied)

Output:

[[1, 2, 99], [3, 4]]
[[1, 2, 99], [3, 4]]

Both lists changed because the inner list was shared.

For more on this, see Python shallow copy vs deep copy explained.

Dictionary behavior #

Dictionaries often confuse beginners when used with list().

Get dictionary keys #

student = {"name": "Mia", "grade": "A"}
print(list(student))

Output:

['name', 'grade']

Get dictionary values #

student = {"name": "Mia", "grade": "A"}
print(list(student.values()))

Output:

['Mia', 'A']

Get key-value pairs #

student = {"name": "Mia", "grade": "A"}
print(list(student.items()))

Output:

[('name', 'Mia'), ('grade', 'A')]

This is helpful when you need the keys, values, or pairs in list form.

When to use list() #

Use list() when:

  • you need list methods like append() or sort()
  • you want to convert range() or zip() results into a visible list
  • another function gives you an iterable, but you need a real list

Example with zip():

names = ["Ana", "Ben"]
scores = [90, 85]

pairs = list(zip(names, scores))
print(pairs)

Output:

[('Ana', 90), ('Ben', 85)]

After you have a list, you can work with list methods such as append(). For a practical next step, see how to add an item to a list in Python.

Common beginner mistakes #

Here are the most common problems with list().

Passing multiple values directly #

This is wrong:

# Wrong
list(1, 2, 3)

list() accepts one iterable, not several separate values.

Use:

print(list((1, 2, 3)))

Expecting list(“hello”) to return [“hello”] #

This is a common surprise:

print(list("hello"))

Output:

['h', 'e', 'l', 'l', 'o']

A string is iterable, so Python takes one character at a time.

If you want a list with one string item, write:

print(["hello"])

Assuming list(dict) returns values #

This:

data = {"a": 1, "b": 2}
print(list(data))

returns the keys, not the values.

Use list(data.values()) if you want values.

Thinking list() makes a deep copy #

list() copies the outer list only.

If the list contains nested mutable items, those inner items are still shared.

FAQ #

What is the difference between [] and list()? #

Both create a new empty list. [] is shorter. list() is often used when converting another iterable.

Why does list(“abc”) split the string into characters? #

A string is iterable, so list() takes each character one at a time.

What does list() return for a dictionary? #

It returns a list of the dictionary keys.

Does list() copy a list? #

Yes, but it makes a shallow copy, not a deep copy.

Why does list(5) fail? #

An integer is not iterable, so list() cannot loop through it.

See also #

Press Esc to close