Hướng dẫn python list not working - danh sách python không hoạt động

2

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

import random

words = ["Football" , "Happy" ,"Sad", "Love", "Human"]

for word in words:
    word = random.choice(words)
    print(word)
    words.remove(word)

Tại sao mã trên chỉ in ra 3 từ thay vì tất cả 5? Tôi đang cố gắng đạt được in các từ từ

random.shuffle(words)
for word in words:
    print(word)
2in một thứ tự ngẫu nhiên một cách không chính xác?

Đã hỏi ngày 4 tháng 3 năm 2014 lúc 0:15Mar 4, 2014 at 0:15

Hướng dẫn python list not working - danh sách python không hoạt động

1

Bạn không thể sửa đổi danh sách (bằng cách thêm hoặc xóa các phần tử) trong khi lặp lại, hành vi không được xác định. Đây là một sự thay thế khả thi cho những gì bạn đang làm mà không có vấn đề đó:

random.shuffle(words)
for word in words:
    print(word)

Đã trả lời ngày 4 tháng 3 năm 2014 lúc 0:17Mar 4, 2014 at 0:17

Hướng dẫn python list not working - danh sách python không hoạt động

Óscar Lópezóscar LópezÓscar López

228K35 Huy hiệu vàng305 Huy hiệu bạc378 Huy hiệu đồng35 gold badges305 silver badges378 bronze badges

Điều này là do bạn không lặp lại chính xác. Thử cái này:

import random

words = ["Football" , "Happy" ,"Sad", "Love", "Human"]

while words:
    word = random.choice(words)
    print(word)
    words.remove(word)

Bạn cần đảm bảo rằng danh sách

random.shuffle(words)
for word in words:
    print(word)
2 không trống vì bạn không thể sửa đổi một mảng trong khi lặp lại nó.

Đã trả lời ngày 4 tháng 3 năm 2014 lúc 0:18Mar 4, 2014 at 0:18

Turntturntturnt

3.1555 huy hiệu vàng23 Huy hiệu bạc37 Huy hiệu đồng5 gold badges23 silver badges37 bronze badges

Mọi người hầu hết đã giải thích lý do tại sao bạn không nhận được hành vi mà bạn muốn, nhưng chỉ để ném một giải pháp thay thế vào hỗn hợp bằng cách sử dụng một thành ngữ khác:

import random
words = ["Football" , "Happy" ,"Sad", "Love", "Human"]
random.shuffle(words)
while words:
    print(words.pop())

Đã trả lời ngày 4 tháng 3 năm 2014 lúc 0:22Mar 4, 2014 at 0:22

Mwaskommwaskommwaskom

42.7K12 Huy hiệu vàng116 Huy hiệu bạc122 Huy hiệu đồng12 gold badges116 silver badges122 bronze badges

bạn không nên sửa đổi danh sách trong khi lặp đi lặp lại nó

for _ in range(len(words)):
    word = random.choice(words)
    words.remove(word)
    print word

Đã trả lời ngày 4 tháng 3 năm 2014 lúc 0:18Mar 4, 2014 at 0:18

TurntturntJoran Beasley

3.1555 huy hiệu vàng23 Huy hiệu bạc37 Huy hiệu đồng12 gold badges149 silver badges174 bronze badges

Mọi người hầu hết đã giải thích lý do tại sao bạn không nhận được hành vi mà bạn muốn, nhưng chỉ để ném một giải pháp thay thế vào hỗn hợp bằng cách sử dụng một thành ngữ khác:

Đã trả lời ngày 4 tháng 3 năm 2014 lúc 0:22

MwaskommwaskomMar 4, 2014 at 0:21

Hướng dẫn python list not working - danh sách python không hoạt động

42.7K12 Huy hiệu vàng116 Huy hiệu bạc122 Huy hiệu đồngGuy

bạn không nên sửa đổi danh sách trong khi lặp đi lặp lại nó5 silver badges21 bronze badges

0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một tệp có tên là danh sách.txt:

['d1','d2','d3']

Tôi muốn lặp qua tất cả các mục trong danh sách. Đây là mã:

deviceList = open("list.txt", "r")
deviceList = deviceList.read()
for i in deviceList:
    print(i)

Đây là vấn đề là, khi tôi chạy mã, nó sẽ phân chia tất cả các ký tự:

% python3 run.py
[
'
d
1
'
,
'
d
2
'
,
'
d
3
'
]

Nó giống như tất cả các mục đã được coi là 1 chuỗi? Tôi nghĩ cần phải được phân tích cú pháp? Xin vui lòng cho tôi biết tôi đang thiếu gì ..

Đã hỏi ngày 29 tháng 5 lúc 20:24May 29 at 20:24

4

Đơn giản là vì bạn không có

random.shuffle(words)
for word in words:
    print(word)
4, bạn đang đọc một văn bản thuần túy ...

Tôi đề nghị viết

random.shuffle(words)
for word in words:
    print(word)
4 mà không cần
random.shuffle(words)
for word in words:
    print(word)
6 để bạn có thể sử dụng hàm
random.shuffle(words)
for word in words:
    print(word)
7.

Viết tệp như thế này:

random.shuffle(words)
for word in words:
    print(word)
8

và sử dụng tập lệnh này để có được

random.shuffle(words)
for word in words:
    print(word)
4

f = open("filename", 'r')
line = f.readlines()
f.close()
list = line.split(";")

Nếu bạn cần

random.shuffle(words)
for word in words:
    print(word)
6 trong tệp, chỉ cần thêm chức năng
import random

words = ["Football" , "Happy" ,"Sad", "Love", "Human"]

while words:
    word = random.choice(words)
    print(word)
    words.remove(word)
1 như thế này

random.shuffle(words)
for word in words:
    print(word)
0

nên hoạt động giống nhau

Đã trả lời ngày 30 tháng 5 lúc 6:34May 30 at 6:34

Hướng dẫn python list not working - danh sách python không hoạt động

Đây không phải là giải pháp sạch nhất, nhưng nó sẽ làm nếu tệp .txt của bạn luôn ở định dạng "[x, y, z]".

random.shuffle(words)
for word in words:
    print(word)
1

Điều này lấy chuỗi của bạn, dải "[" và "]", sau đó tách toàn bộ chuỗi giữa dấu phẩy và biến nó thành một danh sách. Như những người dùng khác đã đề xuất, có lẽ có những cách tốt hơn để lưu trữ danh sách này so với tệp văn bản như vậy, nhưng giải pháp này sẽ làm chính xác những gì bạn đang hỏi. Hi vọng điêu nay co ich!

Đã trả lời ngày 29 tháng 5 lúc 23:26May 29 at 23:26