Jadi saya punya daftar kecil yang saya coba manipulasi dan atur.

data = ["Rose - Flower", "Tulip - Flower", "Lavender - Shrub", "Lilac - Shrub", "Magnolia - Shrub", "Daffodil - Flower"]
flowers=[]
shrubs=[]

for plant in data:
  if "Flower" in plant:
    flowers.append(plant)
  elif "Shrub" in plant:
    shrubs.append(plant)
 
print("Flower Choices:")
for new_flowers in flowers:
  if ", " in new_flowers:
    flowers.split(", ", '\n')
  x = (new_flowers[:-9])
 
for index, flow in enumerate(x):
  print("{0}: {1}".format(index + 1, flow))

Apa yang saya coba lakukan adalah mengatur daftar ini, membagi babak kedua dan hanya menyebut nama tanaman. Ini hanya menghasilkan enumerasi variabel terakhir. Dari pada:

1: Rose
2: Tulip
3: Daffodil

Saya mendapat

1: D
2: A
3: F
4: F
5: O
6: D
7: I
8: L
..........

Adakah yang tahu apa yang saya lakukan salah? Saya tidak mengerti mengapa fungsi enumerate saya hanya akan mencetak variabel terakhir dan mencetaknya menginterrata seperti itu. Jika seseorang dapat menjelaskannya akan menjadi hebat. Terima kasih!

0
DayLy 29 Mei 2021, 00:58

3 jawaban

Jawaban Terbaik

Mencoba :

for idx, flow in enumerate(flowers):
    print("{0}: {1}".format(idx+1, flow.split()[0]))

Output:

1: Rose
2: Tulip
3: Daffodil
2
Charles Dupont 28 Mei 2021, 22:03

Variabel Anda x ditugaskan setiap kali Anda melewati untuk loop. Setelah selesai x ditugaskan ke tuple yang hanya berisi item terakhir dalam daftar flowers.

Seperti yang disarankan di atas, alih-alih iterasi melalui bunga untuk membuat daftar pencocokan dengan nama terpotong, Anda dapat mencetaknya secara langsung.

for index, flower in enumerate(flowers):
    flower_name = flower.split()[0]
    print("{0}: {1}".format(index + 1, flower_name))

Jika Anda ingin membuat array dengan nama bunga terpotong, Anda perlu menambahkan X, tidak menugaskan kembali.

flower_names = [] # array of only flower name to be populated
for flower in flowers:
    flower_name = flower.split()[0] # splits on spaces and returns the first item
    flower_names.append(flower_name) # append to the array instead of reassigning the array

# simple print of the flower_names array for demonstration
for index, flower_name in enumerate(flower_names):
    print("{0}: {1}".format(index + 1, flower_name))
1
iodine 28 Mei 2021, 22:19

Nah, Anda bisa membuat daftar dan menambahkan new_flower ke daftar ini? Maksud saya Anda sudah melakukannya sebelumnya, mengapa tidak mencoba lagi.

x = []
for new_flowers in flowers:
  if ", " in new_flowers:
    flowers.split(", ", '\n')
  x.append(new_flowers[:-9])
print(x)

Keluaran

1: Rose
2: Tulip
3: Daffodil
1
BuddyBob 28 Mei 2021, 22:04