【问题标题】:creating a list with separating by character in Python在Python中创建一个按字符分隔的列表
【发布时间】:2011-10-09 11:17:36
【问题描述】:

我正在尝试使用来自其他词典的数据列出前 4 个最大值的列表,但我得到的结果不断将每个术语分成单独的字符。完整代码为:

max_list = []    
MaxSimilarity = 0
for d in year:
    f = FavActorFunction(max_films[c], d)    
    if d != MaxGrossFinder(c):
        if year[d] == c:
            if f > MaxSimilarity:
                MaxSimilarity = f
                max = d
max_list.append(max)

MaxSimilarity2 = 0            
for d in year:
    g = FavActorFunction(max_films[c], d)    
    if d != MaxGrossFinder(c):
        if d != max:
            if year[d] == c:
                if g > MaxSimilarity2:
                    MaxSimilarity2 = g
                    max2 = d
max_list.append(max2)

MaxSimilarity3 = 0            
for d in year:
    h = FavActorFunction(max_films[c], d)    
    if d != MaxGrossFinder(c):
        if d != max and d != max2:
            if year[d] == c:
                if h > MaxSimilarity3:
                    MaxSimilarity3 = h
                    max3 = d
max_list.append(max3)


MaxSimilarity4 = 0            
for d in year:
    i = FavActorFunction(max_films[c], d)    
    if d != MaxGrossFinder(c):
        if d != max and d != max2 and d != max3:
            if year[d] == c:
                if i > MaxSimilarity4:
                    MaxSimilarity4 = i
                    max4 = d
max_list.append(max4)
print max_list

我得到的结果是 ['3', '0', '0', 'T', 'r', 'a', 'n', 's', 'f', 'o', ' r'、'm'、'e'、'r'、's'、'S'、'p'、'i'、'd'、'e'、'r'、'-'、'M' , 'a', 'n', ' ', '3', '3', '0', '0']

如何更改此代码以获取 ['300'、Transformers 等]

【问题讨论】:

  • 不知道这是什么语言,但是append函数好像取的是一个字符串,是一个数组,连接数组。请张贴语言名称:)
  • 我搜索了你所有的问题,这些问题属于你的作业吗?
  • 我不明白这是怎么回事。你能拿你的原始代码,尽量删除它仍然显示相同的问题,然后发布一个小版本,显示你的问题,并且完整(我可以运行它)
  • PEP 8 希望您使用snake_case 变量名而不是CamelCase。
  • 哦,不要使用 max 作为变量名 - 你会隐藏内置函数 max。每当您执行此类操作时,如果/当您/其他人尝试在该位置使用内置函数时,您的代码可能会以奇怪的方式中断。

标签: python list for-loop


【解决方案1】:

您的函数FavActorFunction 似乎返回的是字符列表而不是单词列表。

如果你迭代一个字符串,而不是迭代一个 list 字符串,就会发生这种情况。例如,注意当我将字符串转换为列表时会发生什么:

>>> print list("Hello, world")
print list("Hello, world")
['H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd']

由于您刚刚学习,请考虑以下建议:使用描述性变量名称。 dchg 之类的名称使您的代码几乎无法理解。使用actordirector 等变量。简洁不会赢得加分(除非你有一个糟糕的教练)。

【讨论】:

  • 如果是这样的话,他会有一个列表列表。但情况似乎并非如此。 (当然也有可能是这里的输出复制错了)
  • @Bryan d 被附加,而不是 hFavActorFunction 的结果。所以我们需要知道year是什么。我完全同意变量名...
  • year 似乎是一本字典,d 持有它的键。真正难以理解的是所谓的“结果”。发布的代码正好 4 附加到max_list,但这显然会产生 30 个字符串的列表?!我能看到产生该结果的唯一方法是使用list.extend而不是list.append
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-26
  • 2018-06-18
相关资源
最近更新 更多