分割Python后枚举列表

2024-06-28 20:10:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一个小名单,我正试图操纵和组织

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))

我想做的是整理这份清单,将下半部分分开,只列出工厂的名称。这只会导致枚举最后一个变量。而不是:

1: Rose
2: Tulip
3: Daffodil

我明白了

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

有人知道我做错了什么吗?我不明白为什么我的枚举函数只打印出最后一个变量,然后像那样打印出来。如果有人能解释,那就太好了。谢谢


Tags: innewfordataifprintflowerplant
3条回答

每次通过for循环时,都会重新分配变量x。完成后x被分配给只包含flowers列表中最后一项的元组

如上所述,您可以直接打印它,而不是通过遍历flowers来创建带有截断名称的匹配列表

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

如果要创建具有截断花名称的数组,则需要将其追加到x,而不是重新分配

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))

试用:

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

输出:

1: Rose
2: Tulip
3: Daffodil

那么,您可以创建一个列表并将new_flower附加到此列表中吗?我是说你以前做过,为什么不再试一次呢

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

输出

1: Rose
2: Tulip
3: Daffodil

相关问题 更多 >