Hướng dẫn how do i store multiple values in a list python? - làm cách nào để lưu trữ nhiều giá trị trong một python danh sách?

Tổng quan

Giảng dạy: 30 phút Bài tập: 15 phút 30 min
Exercises: 15 min

Câu hỏi

  • Làm thế nào tôi có thể lưu trữ nhiều giá trị cùng nhau?

Mục tiêu

  • Giải thích danh sách là gì.

  • Tạo và chỉ mục danh sách các giá trị đơn giản.

  • Thay đổi các giá trị của các yếu tố riêng lẻ

  • Nối các giá trị vào một danh sách hiện có

  • Sắp xếp lại và cắt các yếu tố danh sách

  • Tạo và thao tác danh sách lồng nhau

Trong tập trước, chúng tôi đã phân tích một tập tin duy nhất về dữ liệu viêm thử nghiệm lâm sàng. Tuy nhiên, sau khi tìm thấy một số xu hướng đặc biệt và có khả năng đáng ngờ trong dữ liệu thử nghiệm, chúng tôi hỏi Tiến sĩ Maverick nếu họ đã thực hiện bất kỳ thử nghiệm lâm sàng nào khác. Đáng ngạc nhiên, họ nói rằng họ đã và cung cấp cho chúng tôi thêm 11 tệp CSV cho thêm 11 thử nghiệm lâm sàng mà họ đã thực hiện kể từ khi thử nghiệm ban đầu.

Mục tiêu của chúng tôi bây giờ là xử lý tất cả các dữ liệu viêm mà chúng tôi có, điều đó có nghĩa là chúng tôi vẫn còn mười một tệp nữa để đi!

Bước đầu tiên tự nhiên là thu thập tên của tất cả các tệp mà chúng tôi phải xử lý. Trong Python, một danh sách là một cách để lưu trữ nhiều giá trị với nhau. Trong tập này, chúng ta sẽ học cách lưu trữ nhiều giá trị trong danh sách cũng như cách làm việc với các danh sách.

Danh sách Python

Không giống như các mảng Numpy, các danh sách được tích hợp vào ngôn ngữ vì vậy chúng tôi không phải tải thư viện để sử dụng chúng. Chúng tôi tạo một danh sách bằng cách đặt các giá trị vào dấu ngoặc vuông và tách các giá trị bằng dấu phẩy:

odds = [1, 3, 5, 7]
print('odds are:', odds)

Chúng ta có thể truy cập các yếu tố của danh sách bằng các chỉ số - vị trí được đánh số của các yếu tố trong danh sách. Các vị trí này được đánh số bắt đầu từ 0, vì vậy phần tử đầu tiên có chỉ số 0.

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])

first element: 1
last element: 7
"-1" element: 7

Có, chúng ta có thể sử dụng các số âm làm chỉ số trong Python. Khi chúng tôi làm như vậy, chỉ mục

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
9 cung cấp cho chúng tôi yếu tố cuối cùng trong danh sách,
names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
0 thứ hai đến cuối cùng, v.v. Bởi vì điều này,
names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
1 và
names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
2 chỉ vào cùng một yếu tố ở đây.

Có một sự khác biệt quan trọng giữa danh sách và chuỗi: chúng ta có thể thay đổi các giá trị trong danh sách, nhưng chúng ta không thể thay đổi các ký tự riêng lẻ trong một chuỗi. Ví dụ:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']

hoạt động, nhưng:

name = 'Darwin'
name[0] = 'd'

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
 in ()
      1 name = 'Darwin'
----> 2 name[0] = 'd'

TypeError: 'str' object does not support item assignment

không làm.

Ch-Ch-Ch-Ch-Changes

Dữ liệu có thể được sửa đổi tại chỗ được gọi là có thể thay đổi, trong khi dữ liệu không thể sửa đổi được gọi là bất biến. Chuỗi và số là bất biến. Điều này không có nghĩa là các biến có giá trị chuỗi hoặc số là hằng số, nhưng khi chúng tôi muốn thay đổi giá trị của một chuỗi hoặc biến số, chúng tôi chỉ có thể thay thế giá trị cũ bằng một giá trị hoàn toàn mới.

Danh sách và mảng, mặt khác, có thể thay đổi: chúng ta có thể sửa đổi chúng sau khi chúng được tạo ra. Chúng ta có thể thay đổi các yếu tố riêng lẻ, nối các yếu tố mới hoặc sắp xếp lại toàn bộ danh sách. Đối với một số hoạt động, như sắp xếp, chúng ta có thể chọn sử dụng chức năng sửa đổi dữ liệu tại chỗ hay hàm trả về một bản sao đã sửa đổi và để lại bản gốc không thay đổi.

Hãy cẩn thận khi sửa đổi dữ liệu tại chỗ. Nếu hai biến đề cập đến cùng một danh sách và bạn sửa đổi giá trị danh sách, nó sẽ thay đổi cho cả hai biến!

salsa = ['peppers', 'onions', 'cilantro', 'tomatoes']
my_salsa = salsa        # <-- my_salsa and salsa point to the *same* list data in memory
salsa[0] = 'hot peppers'
print('Ingredients in my salsa:', my_salsa)

Ingredients in my salsa: ['hot peppers', 'onions', 'cilantro', 'tomatoes']

Nếu bạn muốn các biến có giá trị có thể thay đổi độc lập, bạn phải tạo một bản sao của giá trị khi bạn gán nó.

salsa = ['peppers', 'onions', 'cilantro', 'tomatoes']
my_salsa = list(salsa)        # <-- makes a *copy* of the list
salsa[0] = 'hot peppers'
print('Ingredients in my salsa:', my_salsa)

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
0

Do những cạm bẫy như thế này, mã sửa đổi dữ liệu có thể khó hiểu hơn. Tuy nhiên, việc sửa đổi cấu trúc dữ liệu lớn thường hiệu quả hơn nhiều so với việc tạo ra một bản sao sửa đổi cho mọi thay đổi nhỏ. Bạn nên xem xét cả hai khía cạnh này khi viết mã của bạn.

Danh sách lồng nhau

Vì một danh sách có thể chứa bất kỳ biến Python nào, nó thậm chí có thể chứa các danh sách khác.

Ví dụ, chúng tôi có thể đại diện cho các sản phẩm trong kệ của một cửa hàng tạp hóa nhỏ:

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
1

Dưới đây là một ví dụ trực quan về cách lập chỉ mục danh sách các danh sách

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
3 hoạt động:

Hướng dẫn how do i store multiple values in a list python? - làm cách nào để lưu trữ nhiều giá trị trong một python danh sách?

Sử dụng danh sách được khai báo trước đó

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
3, đây sẽ là kết quả của các hoạt động chỉ mục được hiển thị trong hình ảnh:

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
2

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
3

Cảm ơn Hadley Wickham cho hình ảnh trên.

Danh sách không đồng nhất

Danh sách trong Python có thể chứa các yếu tố của các loại khác nhau. Thí dụ:

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
4

Có nhiều cách để thay đổi nội dung của danh sách bên cạnh việc gán các giá trị mới cho các yếu tố riêng lẻ:

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
5

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
6

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
7

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
8

print('first element:', odds[0])
print('last element:', odds[3])
print('"-1" element:', odds[-1])
9

first element: 1
last element: 7
"-1" element: 7
0

Mặc dù sửa đổi tại chỗ, rất hữu ích khi nhớ rằng Python xử lý các danh sách theo một cách hơi phản trực giác.

Như chúng ta đã thấy trước đó, khi chúng ta sửa đổi mục danh sách

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
5 tại chỗ, nếu chúng ta lập danh sách, (cố gắng) sao chép nó và sau đó sửa đổi danh sách này, chúng ta có thể gây ra tất cả các loại rắc rối. Điều này cũng áp dụng để sửa đổi danh sách bằng các chức năng trên:

first element: 1
last element: 7
"-1" element: 7
1

first element: 1
last element: 7
"-1" element: 7
2

Điều này là do Python lưu trữ một danh sách trong bộ nhớ và sau đó có thể sử dụng nhiều tên để tham khảo cùng một danh sách. Nếu tất cả những gì chúng tôi muốn làm là sao chép danh sách (đơn giản), chúng tôi có thể sử dụng lại chức năng

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
6, vì vậy chúng tôi không sửa đổi danh sách mà chúng tôi không có ý định:

first element: 1
last element: 7
"-1" element: 7
3

first element: 1
last element: 7
"-1" element: 7
4

Các tập hợp danh sách và chuỗi có thể được truy cập bằng cách chỉ định phạm vi giá trị trong ngoặc, tương tự như cách chúng tôi truy cập phạm vi vị trí trong một mảng numpy. Điều này thường được gọi là cắt lát của người dùng danh sách/chuỗi.

first element: 1
last element: 7
"-1" element: 7
5

first element: 1
last element: 7
"-1" element: 7
6

Cắt từ cuối

Sử dụng cắt để chỉ truy cập bốn ký tự cuối cùng của chuỗi hoặc mục của danh sách.

first element: 1
last element: 7
"-1" element: 7
7

first element: 1
last element: 7
"-1" element: 7
8

Giải pháp của bạn có hoạt động bất kể bạn biết trước độ dài của chuỗi hay danh sách (ví dụ: nếu bạn muốn áp dụng giải pháp cho một tập hợp các danh sách các độ dài khác nhau)? Nếu không, hãy cố gắng thay đổi cách tiếp cận của bạn để làm cho nó mạnh mẽ hơn.

Gợi ý: Hãy nhớ rằng các chỉ số có thể âm tính cũng như tích cực

Dung dịch

Sử dụng các chỉ số tiêu cực để đếm các phần tử từ cuối của một thùng chứa (như danh sách hoặc chuỗi):

first element: 1
last element: 7
"-1" element: 7
9

Những lát không liên tục

Cho đến nay, chúng tôi đã thấy cách sử dụng cắt lát để lấy các khối liên tiếp từ một chuỗi. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn lấy một tập hợp các mục nhập không phải là người cạnh nhau trong chuỗi?

Bạn có thể đạt được điều này bằng cách cung cấp một đối số thứ ba cho phạm vi trong khung, được gọi là kích thước bước. Ví dụ dưới đây cho thấy cách bạn có thể lấy mỗi mục thứ ba trong danh sách:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
0

Lưu ý rằng lát cắt bắt đầu với mục đầu tiên trong phạm vi, sau đó là các mục được thực hiện trong các khoảng cách tương đương (các bước) sau đó. Nếu bạn muốn bắt đầu tập hợp con với mục thứ ba, bạn sẽ cần chỉ định đó là điểm bắt đầu của phạm vi cắt lát:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
1

Sử dụng đối số kích thước bước để tạo ra một chuỗi mới chỉ chứa mọi ký tự khác trong chuỗi Chuỗi trong một khu vườn Octopus trong bóng râm. Bắt đầu với việc tạo một biến để giữ chuỗi:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
2

Những lát nào của

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
7 sẽ tạo ra đầu ra sau (nghĩa là, ký tự thứ nhất, ký tự thứ ba và mọi ký tự khác cho đến cuối chuỗi)?

Dung dịch

Sử dụng các chỉ số tiêu cực để đếm các phần tử từ cuối của một thùng chứa (như danh sách hoặc chuỗi):

Những lát không liên tục

Cho đến nay, chúng tôi đã thấy cách sử dụng cắt lát để lấy các khối liên tiếp từ một chuỗi. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn lấy một tập hợp các mục nhập không phải là người cạnh nhau trong chuỗi?

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
3

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
4

Bạn có thể đạt được điều này bằng cách cung cấp một đối số thứ ba cho phạm vi trong khung, được gọi là kích thước bước. Ví dụ dưới đây cho thấy cách bạn có thể lấy mỗi mục thứ ba trong danh sách:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
5

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
6

Lưu ý rằng lát cắt bắt đầu với mục đầu tiên trong phạm vi, sau đó là các mục được thực hiện trong các khoảng cách tương đương (các bước) sau đó. Nếu bạn muốn bắt đầu tập hợp con với mục thứ ba, bạn sẽ cần chỉ định đó là điểm bắt đầu của phạm vi cắt lát:

Sử dụng đối số kích thước bước để tạo ra một chuỗi mới chỉ chứa mọi ký tự khác trong chuỗi Chuỗi trong một khu vườn Octopus trong bóng râm. Bắt đầu với việc tạo một biến để giữ chuỗi:

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
7

  1. name = 'Darwin'
    name[0] = 'd'
    
    0
  2. name = 'Darwin'
    name[0] = 'd'
    
    1
  3. name = 'Darwin'
    name[0] = 'd'
    
    2
  4. name = 'Darwin'
    name[0] = 'd'
    
    3

Những lát nào của

names is originally: ['Curie', 'Darwing', 'Turing']
final value of names: ['Curie', 'Darwin', 'Turing']
7 sẽ tạo ra đầu ra sau (nghĩa là, ký tự thứ nhất, ký tự thứ ba và mọi ký tự khác cho đến cuối chuỗi)?

Dung dịch

Sử dụng các chỉ số tiêu cực để đếm các phần tử từ cuối của một thùng chứa (như danh sách hoặc chuỗi):

names = ['Curie', 'Darwing', 'Turing']  # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin'  # correct the name
print('final value of names:', names)
8

Những lát không liên tục

Cho đến nay, chúng tôi đã thấy cách sử dụng cắt lát để lấy các khối liên tiếp từ một chuỗi. Nhưng điều gì sẽ xảy ra nếu chúng ta muốn lấy một tập hợp các mục nhập không phải là người cạnh nhau trong chuỗi?

  • Bạn có thể đạt được điều này bằng cách cung cấp một đối số thứ ba cho phạm vi trong khung, được gọi là kích thước bước. Ví dụ dưới đây cho thấy cách bạn có thể lấy mỗi mục thứ ba trong danh sách:

  • Lưu ý rằng lát cắt bắt đầu với mục đầu tiên trong phạm vi, sau đó là các mục được thực hiện trong các khoảng cách tương đương (các bước) sau đó. Nếu bạn muốn bắt đầu tập hợp con với mục thứ ba, bạn sẽ cần chỉ định đó là điểm bắt đầu của phạm vi cắt lát:

  • Sử dụng đối số kích thước bước để tạo ra một chuỗi mới chỉ chứa mọi ký tự khác trong chuỗi Chuỗi trong một khu vườn Octopus trong bóng râm. Bắt đầu với việc tạo một biến để giữ chuỗi:

  • Những lát nào của

    names is originally: ['Curie', 'Darwing', 'Turing']
    final value of names: ['Curie', 'Darwin', 'Turing']
    
    7 sẽ tạo ra đầu ra sau (nghĩa là, ký tự thứ nhất, ký tự thứ ba và mọi ký tự khác cho đến cuối chuỗi)?

  • Để có được mọi ký tự khác, bạn cần cung cấp một lát cắt có kích thước bước 2:

Danh sách có thể lưu trữ nhiều giá trị?

Chúng ta sẽ bắt đầu bằng cách hiểu giá trị của danh sách. Danh sách chỉ đơn giản là một công cụ chúng tôi sử dụng để lưu trữ nhiều giá trị. Ví dụ: nếu chúng tôi muốn lưu trữ tên của năm máy khách hàng đầu của chúng tôi, chúng tôi có thể lưu trữ chúng trong một danh sách duy nhất. Sau đó, chúng ta có thể tạo một biến có tên là Top_Clents lưu trữ danh sách đó.A list is simply a tool we use for storing multiple values. For example, if we want to store the names of our top five clients, we can store them in a single list. We can then create a variable called top_clients that stores that list.

Làm thế nào để bạn nối nhiều giá trị vào một danh sách trong Python?

Mở rộng để mở rộng danh sách bằng nhiều giá trị từ bất kỳ loại khác, là một danh sách khác hoặc bất kỳ điều gì khác cung cấp một chuỗi các giá trị.Vì vậy, bạn có thể sử dụng danh sách.nối () để nối một giá trị duy nhất và list.extend () để nối nhiều giá trị.list. extend() to append multiple values.

Chúng ta có thể lưu trữ nhiều loại dữ liệu trong danh sách Python không?

Không có vấn đề gì, bạn có thể lưu trữ bất kỳ loại nào trong danh sách không giống như "Ngày xưa" khi các ngôn ngữ khác có các mảng chỉ muốn một loại dữ liệu được lưu trữ trong đó.you can store any type inside a list unlike in the "olden days" when other languages had arrays that only wanted one type of data stored in them.

Làm thế nào để bạn lưu trữ dữ liệu trong một danh sách trong Python?

5.1 Biến một chuỗi thành một danh sách..
Tạo một danh sách trống được gọi là my_list ..
Mở một vòng lặp cho biến được khai báo "Xin chào" trong các trích dẫn ..
Sử dụng từ khóa Char làm biến vòng lặp.....
Sử dụng thuộc tính Phụ lục được tích hợp trong tất cả Danh sách Python để thêm char ở cuối danh sách ..
Khi vòng lặp kết thúc, danh sách cuối cùng được in ..