Hướng dẫn how do you multiply a 2d list in python? - làm thế nào để bạn nhân một danh sách 2d trong python?

M là ma trận 2D, một cái gì đó như:

[[1,2,3],[3,4,5],[6,7,1]]

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
2 không hoạt động. Nó lặp lại các mục trong mỗi hàng 5 mục. Tôi muốn mọi mục được nhân lên với vô hướng 5.

Không muốn sử dụng Numpy. Làm cách nào để giải quyết điều này bằng cách sử dụng toàn bộ danh sách? Cảm ơn bạn!

Hướng dẫn how do you multiply a 2d list in python? - làm thế nào để bạn nhân một danh sách 2d trong python?

Gilch

Huy hiệu vàng 10k11 gold badge21 silver badges28 bronze badges

Đã hỏi ngày 23 tháng 1 năm 2019 lúc 2:41Jan 23, 2019 at 2:41

Hướng dẫn how do you multiply a 2d list in python? - làm thế nào để bạn nhân một danh sách 2d trong python?

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])

output:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]

Đã trả lời ngày 23 tháng 1 năm 2019 lúc 2:44Jan 23, 2019 at 2:44

Tôi thấy bạn yêu cầu hiểu danh sách, nhưng chỉ để hiển thị tùy chọn với

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
3:

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]

Đã trả lời ngày 23 tháng 1 năm 2019 lúc 11:46Jan 23, 2019 at 11:46

Hướng dẫn how do you multiply a 2d list in python? - làm thế nào để bạn nhân một danh sách 2d trong python?

IgianigianiGian

10,7k3 Huy hiệu vàng19 Huy hiệu bạc34 Huy hiệu đồng3 gold badges19 silver badges34 bronze badges

1

Danh sách Python luôn luôn là một chiều. "Ma trận" của bạn chỉ là danh sách ba danh sách, không phải là danh sách 2D. Do đó, danh sách bên ngoài của bạn cần hiểu để tạo danh sách như các yếu tố của nó.

[[i*5 for i in row] for row in m]

Nó giúp nghĩ về các toàn bộ danh sách như cho các vòng lặp với bộ tích lũy, tức là

output = []
for row in m:
    output.append([i*5 for i in row])

Đã trả lời ngày 23 tháng 1 năm 2019 lúc 2:44Jan 23, 2019 at 2:44

Hướng dẫn how do you multiply a 2d list in python? - làm thế nào để bạn nhân một danh sách 2d trong python?

Tôi thấy bạn yêu cầu hiểu danh sách, nhưng chỉ để hiển thị tùy chọn với

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
3:gilch

Huy hiệu vàng 10k11 gold badge21 silver badges28 bronze badges

0


  • Học thuyết
  • Các bước
  • Các vấn đề

1. Danh sách lồng nhau: Xử lý và in ấn

Trong thế giới thực thường các nhiệm vụ phải lưu trữ bảng dữ liệu hình chữ nhật. [Nói thêm về điều này!] Các bảng như vậy được gọi là ma trận hoặc mảng hai chiều. Trong Python, bất kỳ bảng nào cũng có thể được biểu diễn dưới dạng danh sách danh sách (một danh sách, trong đó mỗi phần tử được lần lượt một danh sách). Ví dụ: đây là chương trình tạo ra một bảng số với hai hàng và ba cột, và sau đó thực hiện một số thao tác với nó:

a = [[1, 2, 3], [4, 5, 6]]
print(a[0])
print(a[1])
b = a[0]
print(b)
print(a[0][2])
a[0][1] = 7
print(a)
print(b)
b[2] = 9
print(a[0])
print(b)

Yếu tố đầu tiên của

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
4 ở đây -
import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
5 - là danh sách các số
import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
6. Yếu tố đầu tiên của danh sách mới này là
import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
7; Hơn nữa,
import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
8,
import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
9,
[[i*5 for i in row] for row in m]
0,
[[i*5 for i in row] for row in m]
1,
[[i*5 for i in row] for row in m]
2.

Để xử lý mảng 2 chiều, bạn thường sử dụng các vòng lặp lồng nhau. Vòng lặp đầu tiên lặp qua số hàng, vòng thứ hai chạy qua các phần tử bên trong một hàng. Ví dụ: đó là cách bạn hiển thị danh sách số hai chiều trên dòng màn hình từng dòng, phân tách các số với khoảng trắng:

a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()

Chúng tôi đã cố gắng giải thích rằng một biến số vòng trong Python có thể lặp lại không chỉ trên

[[i*5 for i in row] for row in m]
3, mà nói chung là trên tất cả các yếu tố của bất kỳ chuỗi nào. Trình tự trong Python là danh sách và chuỗi (và một số đối tượng khác mà chúng ta chưa gặp). Hãy xem cách bạn có thể in một mảng hai chiều, sử dụng tính năng tiện dụng này của Loop
[[i*5 for i in row] for row in m]
4:

a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for row in a:
    for elem in row:
        print(elem, end=' ')
    print()

Đương nhiên, để xuất ra một dòng bạn có thể sử dụng phương thức

[[i*5 for i in row] for row in m]
5:

for row in a:
    print(' '.join([str(elem) for elem in row]))

Đây là cách bạn có thể sử dụng 2 vòng lồng nhau để tính tổng của tất cả các số trong danh sách 2 chiều:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
0

Hoặc giống nhau với việc lặp lại bởi các phần tử, không phải bởi các biến

[[i*5 for i in row] for row in m]
6 và
[[i*5 for i in row] for row in m]
7:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
1

Quảng cáo của Google, có thể dựa trên sở thích của bạn

2. Danh sách lồng nhau: Tạo

Giả sử rằng hai số được đưa ra: số lượng hàng của

[[i*5 for i in row] for row in m]
8 và số lượng cột
[[i*5 for i in row] for row in m]
9. Bạn phải tạo một danh sách kích thước ____ 48 × ____ 49, chứa đầy, nói, số không.

Giải pháp rõ ràng dường như là sai:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
2

Điều này có thể dễ dàng nhìn thấy nếu bạn đặt giá trị của

output = []
for row in m:
    output.append([i*5 for i in row])
2 thành
output = []
for row in m:
    output.append([i*5 for i in row])
3, sau đó in giá trị của ________ 54 & nbsp; - nó cũng sẽ bằng 5. Lý do là,
output = []
for row in m:
    output.append([i*5 for i in row])
5 trả về chỉ một tham chiếu đến danh sách
[[i*5 for i in row] for row in m]
9 một danh sách. Việc lặp lại tiếp theo của phần tử này tạo ra một danh sách các mục
[[i*5 for i in row] for row in m]
8 mà tất cả tham chiếu đến cùng một danh sách (cũng như hoạt động
output = []
for row in m:
    output.append([i*5 for i in row])
8 cho danh sách không tạo danh sách mới), vì vậy tất cả các hàng trong danh sách kết quả thực sự là cùng một chuỗi.

Sử dụng trình hiển thị của chúng tôi, hãy theo dõi ID của danh sách. Nếu hai danh sách có cùng một số ID, thì thực tế thì cùng một danh sách trong bộ nhớ.

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
3

Do đó, một danh sách hai chiều không thể được tạo đơn giản bằng cách lặp lại một chuỗi. Làm gì? ..

Một cách có thể: bạn có thể tạo một danh sách các yếu tố

[[i*5 for i in row] for row in m]
8 (giả sử, của
[[i*5 for i in row] for row in m]
8 không

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
4

Một cách khác (nhưng tương tự): Tạo một danh sách trống và sau đó

a = [[1, 2, 3], [4, 5, 6]]
print(a[0])
print(a[1])
b = a[0]
print(b)
print(a[0][2])
a[0][1] = 7
print(a)
print(b)
b[2] = 9
print(a[0])
print(b)
2 một yếu tố mới cho nó
[[i*5 for i in row] for row in m]
8 lần (phần tử này phải là danh sách độ dài
[[i*5 for i in row] for row in m]
9):

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
5

Nhưng cách dễ nhất là sử dụng Trình tạo, tạo một danh sách các yếu tố

[[i*5 for i in row] for row in m]
8, mỗi phần tử là danh sách các số không ____49:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
6

Trong trường hợp này, mỗi yếu tố được tạo độc lập với các yếu tố khác. Danh sách

output = []
for row in m:
    output.append([i*5 for i in row])
5 là
[[i*5 for i in row] for row in m]
8 lần được cung cấp là cái mới và không có sao chép tài liệu tham khảo nào xảy ra.

Quảng cáo của Google, có thể dựa trên sở thích của bạn

3. Làm thế nào để bạn nhập một mảng hai chiều?

Giả sử, một chương trình đảm nhận mảng hai chiều đầu vào dưới dạng các hàng

[[i*5 for i in row] for row in m]
8, mỗi hàng chứa các số
[[i*5 for i in row] for row in m]
9 được phân tách bằng không gian. Làm thế nào để bạn buộc chương trình đọc nó? Một ví dụ về cách bạn có thể làm điều đó:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
7

Hoặc, mà không sử dụng các cuộc gọi lồng nhau tinh vi:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
8

Bạn có thể làm tương tự với các máy phát điện:

a = [[1,2,3],[3,4,5],[6,7,1]]
print([[j*5 for j in i] for i in a])
9

Quảng cáo của Google, có thể dựa trên sở thích của bạn

3. Làm thế nào để bạn nhập một mảng hai chiều?

Giả sử, một chương trình đảm nhận mảng hai chiều đầu vào dưới dạng các hàng

[[i*5 for i in row] for row in m]
8, mỗi hàng chứa các số
[[i*5 for i in row] for row in m]
9 được phân tách bằng không gian. Làm thế nào để bạn buộc chương trình đọc nó? Một ví dụ về cách bạn có thể làm điều đó:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
0

Hoặc, mà không sử dụng các cuộc gọi lồng nhau tinh vi:

Bạn có thể làm tương tự với các máy phát điện:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
1

4. Xử lý một mảng hai chiều: một ví dụ

Giả sử bạn được cung cấp một mảng vuông (một mảng gồm các hàng

[[i*5 for i in row] for row in m]
8 và cột
[[i*5 for i in row] for row in m]
8). Và giả sử bạn phải đặt các phần tử của đường chéo chính bằng 1 (nghĩa là các phần tử
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
3 mà
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
4), để đặt các phần tử trên so với đường chéo bằng 0 và để đặt các phần tử bên dưới đường chéo bằng 2. đó là , bạn cần tạo ra một mảng như vậy (ví dụ cho
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
5):

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
2

.

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
3

Chúng tôi rất háo hức chỉ cho bạn một số cách để giải quyết vấn đề này. Đầu tiên, lưu ý rằng các yếu tố nằm trên đường chéo chính & nbsp; - là các yếu tố

a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
3 mà
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
9 và đối với các phần tử dưới đường chéo chính
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for row in a:
    for elem in row:
        print(elem, end=' ')
    print()
0. Do đó, chúng ta có thể so sánh các giá trị
[[i*5 for i in row] for row in m]
6 và
[[i*5 for i in row] for row in m]
7, xác định giá trị của
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
3. Chúng tôi nhận được thuật toán sau:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
4

Thuật toán này chậm: Nó sử dụng hai vòng và cho mỗi cặp

a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for row in a:
    for elem in row:
        print(elem, end=' ')
    print()
4 thực thi một hoặc hai hướng dẫn
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for row in a:
    for elem in row:
        print(elem, end=' ')
    print()
5. Nếu chúng ta làm phức tạp thuật toán, chúng ta sẽ có thể làm điều đó mà không cần một tuyên bố có điều kiện.

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
5

Đầu tiên, hãy điền vào đường chéo chính mà chúng ta sẽ cần một vòng lặp:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
6

Sau đó điền vào số 0 tất cả các phần tử phía trên đường chéo chính. Để thực hiện điều này, với mỗi hàng với số

[[i*5 for i in row] for row in m]
6, bạn cần gán giá trị cho
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
3 cho ________ 47 = ________ 89, ...,
for row in a:
    print(' '.join([str(elem) for elem in row]))
0. Để làm điều đó, bạn cần các vòng lặp lồng nhau:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
7

Quảng cáo của Google, có thể dựa trên sở thích của bạn

3. Làm thế nào để bạn nhập một mảng hai chiều?

Giả sử, một chương trình đảm nhận mảng hai chiều đầu vào dưới dạng các hàng

[[i*5 for i in row] for row in m]
8, mỗi hàng chứa các số
[[i*5 for i in row] for row in m]
9 được phân tách bằng không gian. Làm thế nào để bạn buộc chương trình đọc nó? Một ví dụ về cách bạn có thể làm điều đó:

Hoặc, mà không sử dụng các cuộc gọi lồng nhau tinh vi:

Bạn có thể làm tương tự với các máy phát điện:

[[5, 10, 15], [15, 20, 25], [30, 35, 5]]
9

4. Xử lý một mảng hai chiều: một ví dụ

Giả sử bạn được cung cấp một mảng vuông (một mảng gồm các hàng

[[i*5 for i in row] for row in m]
8 và cột
[[i*5 for i in row] for row in m]
8). Và giả sử bạn phải đặt các phần tử của đường chéo chính bằng 1 (nghĩa là các phần tử
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
3 mà
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
4), để đặt các phần tử trên so với đường chéo bằng 0 và để đặt các phần tử bên dưới đường chéo bằng 2. đó là , bạn cần tạo ra một mảng như vậy (ví dụ cho
a = [[1, 2, 3, 4], [5, 6], [7, 8, 9]]
for i in range(len(a)):
    for j in range(len(a[i])):
        print(a[i][j], end=' ')
    print()
5):

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
0

.

Như mọi khi, bạn có thể sử dụng Trình tạo để tạo một mảng như vậy:

import numpy as np

v = [[1,2,3],[3,4,5],[6,7,1]]
vv = np.array(v)

print(vv*5)
# [[ 5 10 15]
#  [15 20 25]
#  [30 35  5]]
1

Quảng cáo của Google, có thể dựa trên sở thích của bạn

Làm thế nào để bạn nhân các mảng 2D trong Python?

Bước 1: Nhập hai ma trận. Bước 2: lồng nhau cho các vòng lặp để lặp qua mỗi hàng và mỗi cột. Bước 3: Lấy một ma trận kết quả ban đầu chứa tất cả 0. Sau đó, chúng tôi nhân từng phần tử hàng của ma trận thứ nhất với mỗi phần tử của ma trận thứ hai, sau đó thêm tất cả giá trị nhân.

Làm thế nào để bạn nhân mọi yếu tố trong danh sách Python 2?

Để nhân mỗi phần tử trong một danh sách với một số:..
Tuyên bố một biến mới lưu trữ một danh sách trống ..
Sử dụng một vòng lặp để lặp qua danh sách ban đầu ..
Trên mỗi lần lặp, nhân mục Danh sách hiện tại với số ..
Nối kết quả vào danh sách mới ..

Làm thế nào để bạn nhân danh sách theo giá trị trong Python?

Chúng ta có thể sử dụng numpy.prod () từ nhập khẩu numpy để có được sự nhân của tất cả các số trong danh sách.Nó trả về một số nguyên hoặc giá trị float tùy thuộc vào kết quả nhân.use numpy. prod() from import numpy to get the multiplication of all the numbers in the list. It returns an integer or a float value depending on the multiplication result.

Làm thế nào để bạn làm một hai

MYLIST = [0,1,2,3,4,5,6,7,8,8];Đối với Index in Len (Mylist): Mylist [index] = 0 # SET phần tử ở "INDEX" thành 0. Đối với danh sách hai chiều, để tham chiếu mọi phần tử, chúng ta phải sử dụng hai vòng lặp lồng nhau.Điều này cung cấp cho chúng tôi một biến bộ đếm cho mỗi cột và mỗi hàng trong ma trận.in order to reference every element, we must use two nested loops. This gives us a counter variable for every column and every row in the matrix.