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