Python 返回最小长度上的字数,并用word+;空间

Python 返回最小长度上的字数,并用word+;空间,python,list,testing,replace,counter,Python,List,Testing,Replace,Counter,对于长度小于最小长度的任何名称,用包含原始名称的新字符串替换该列表项,并在右侧添加空格以达到最小长度 示例:更改后的最小长度=5//'狗'='狗' 并返回列表中最初超过最小长度的名称数量 def pad_names(list_of_names, min_length): '''(list of str, int) -> int Return the number of names that are longer than the minimum length.

对于长度小于最小长度的任何名称,用包含原始名称的新字符串替换该列表项,并在右侧添加空格以达到最小长度
示例:更改后的最小长度=5//'狗'='狗'
并返回列表中最初超过最小长度的名称数量

def pad_names(list_of_names, min_length):  
    '''(list of str, int) -> int  
    Return the number of names that are longer than the minimum length.  
    >>> pad_names(list_of_names, 5)  
        2  
    '''  
    new_list = []  
    counter = 0  
    for word in list_of_names:      
        if len(word) > min_length:  
            counter = counter + 1  

    for word in list_of_names:  
        if len(word) < min_length:  
            new_list.append(word.ljust(min_length))  
        else:  
            new_list.append(word)  
     return(counter)  
def pad_名称(名称列表,最小长度):
''(str列表,int)->int
返回超过最小长度的名称数。
>>>pad_名称(名称列表,5)
2.
'''  
新列表=[]
计数器=0
对于名称列表中的单词:
如果长度(字)>最小长度:
计数器=计数器+1
对于名称列表中的单词:
如果len(word)
我目前在该函数上遇到5个错误:

所有错误都是#返回值不正确

测试\u 02:填充\u名称\u一个\u名称\u多个\u填充\u更改\u列表
原因:对于1个名称需要填充的情况,列表未正确更改

测试\u 04:焊盘名称\u一个\u名称\u需要\u一个\u焊盘更改\u列表
原因:一个名称需要一个焊盘更改列表

测试\u 10:pad\u names\u all\u padded\u by\u 3\u changes\u list
原因:全部由3个更改列表填充

测试\u 12:pad\u names\u all\u padded\u different\u amounts\u changes\u list
原因:所有填充的不同金额更改列表

测试\u 20:pad\u names\u one\u empty\u name\u list\u changed
原因:更改了一个空名称列表

此功能不需要高效,只需要通过这些测试而不会产生更多问题

您的意思是

def pad_names(list_of_names, min_length):  
    counter = 0
    for i, val in enumerate(list_of_names):      
        if len(val) >= min_length:  
            counter += 1  
        elif len(val) < min_length:  
            list_of_names[i] = val.ljust(min_length)
    return counter
def pad_名称(名称列表,最小长度):
计数器=0
对于i,枚举中的val(名称列表):
如果len(val)>=最小长度:
计数器+=1
elif len(val)<最小长度:
名称列表[i]=val.ljust(最小长度)
返回计数器
或:

def pad_名称(单词,最小长度):
i、 计数器=0,0
对于val(大写):
如果len(val)>=最小长度:
计数器+=1
elif len(val)<最小长度:
单词[i]=val.ljust(最小长度)
i+=1
返回计数器
你是说这个

def pad_names(list_of_names, min_length):  
    counter = 0
    for i, val in enumerate(list_of_names):      
        if len(val) >= min_length:  
            counter += 1  
        elif len(val) < min_length:  
            list_of_names[i] = val.ljust(min_length)
    return counter
def pad_名称(名称列表,最小长度):
计数器=0
对于i,枚举中的val(名称列表):
如果len(val)>=最小长度:
计数器+=1
elif len(val)<最小长度:
名称列表[i]=val.ljust(最小长度)
返回计数器
或:

def pad_名称(单词,最小长度):
i、 计数器=0,0
对于val(大写):
如果len(val)>=最小长度:
计数器+=1
elif len(val)<最小长度:
单词[i]=val.ljust(最小长度)
i+=1
返回计数器

按照您编写此文件的精神,我猜您希望修改名称列表,以便检查结果(以及返回计数)


按照你写这篇文章的精神,我猜你想修改名字列表,以便检查结果(以及返回计数)


我不确定我是否完全理解你的问题,但这里有一个相当不错的方法来做我认为你想要的事情:

data = ['cat', 'snake', 'zebra']

# pad all strings with spaces to 5 chars minimum
#  uses string.ljust for padding and a list comprehension
padded_data = [d.ljust( 5, ' ' ) for d in data]

# get the count of original elements whose length was 5 or great
ct = sum( len(d) >= 5 for d in data )

我不确定我是否完全理解你的问题,但这里有一个相当不错的方法来做我认为你想要的事情:

data = ['cat', 'snake', 'zebra']

# pad all strings with spaces to 5 chars minimum
#  uses string.ljust for padding and a list comprehension
padded_data = [d.ljust( 5, ' ' ) for d in data]

# get the count of original elements whose length was 5 or great
ct = sum( len(d) >= 5 for d in data )
是将字符串填充到最小长度的一种快速简单的方法

下面是我编写函数的方法:

def pad_names(list_of_names, min_length):
   # count strings that meets the min_length requirement
   count = sum(1 for s in list_of_names if len(s) > min_length) 
   # replace list with updated content, using ljust() to pad strings
   list_of_names[:] = [s.ljust(min_length) for s in list_of_names]

   return count  # return num of strings that exceeds min_length
虽然简洁,但对于大型数据集来说,这可能不是最有效的方法,因为我们实际上是在创建一个新列表,并在新列表上复制它

如果性能是个问题,我会使用循环,只更新相关条目

def pad_names(list_of_names, min_length):
   count = 0
   for i, s in enumerate(list_of_names):
      if len(s) > min_length:   # should it be >= ??
          count += 1  # increment counter
      else:
         list_of_names[i] = s.ljust(min_length)  # update original list
   return count
是将字符串填充到最小长度的一种快速简单的方法

下面是我编写函数的方法:

def pad_names(list_of_names, min_length):
   # count strings that meets the min_length requirement
   count = sum(1 for s in list_of_names if len(s) > min_length) 
   # replace list with updated content, using ljust() to pad strings
   list_of_names[:] = [s.ljust(min_length) for s in list_of_names]

   return count  # return num of strings that exceeds min_length
虽然简洁,但对于大型数据集来说,这可能不是最有效的方法,因为我们实际上是在创建一个新列表,并在新列表上复制它

如果性能是个问题,我会使用循环,只更新相关条目

def pad_names(list_of_names, min_length):
   count = 0
   for i, s in enumerate(list_of_names):
      if len(s) > min_length:   # should it be >= ??
          count += 1  # increment counter
      else:
         list_of_names[i] = s.ljust(min_length)  # update original list
   return count

为我们提供输出-这样就更容易理解您需要什么返回(smth)是一件坏事)为我们提供输出-这样就更容易理解您需要什么返回(smth)是一件坏事)不确定
sum(len(d)>=5表示数据中的d)
-我将其写成
sum(如果len(d)>=5,则数据中的d为1)
不确定
sum(len(d)>=5表示数据中的d)
-我将其写为
sum(如果len(d)>=5,则数据中的d为1)
我们没有使用enumerate,因此我认为我的老师不会允许使用它。这是一个基本函数-在任何情况下都会使用计数器添加样本我们没有使用enumerate,因此我认为我的老师不会允许使用它。这是一个基本函数-在任何情况下都会使用计数器添加样本这里不需要循环<代码>名称列表[:]=[word.ljust(最小长度)用于名称列表中的单词]
将完成此操作此处不需要循环<代码>名称列表[:]=[word.ljust(最小长度)用于名称列表中的单词]将执行此操作