Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Python多列表max()_String_Python 3.x_List_Max - Fatal编程技术网

String Python多列表max()

String Python多列表max(),string,python-3.x,list,max,String,Python 3.x,List,Max,在python中,我有一个满是字符串的列表,我希望它按长度查找最大值。如果有一些字符串共享相同的长度,它们将同时打印出来。我有,但它似乎不起作用 if len(in_list)>1: while len(in_list) == a: a = max(in_list, key=len) print("Pair", pair,":", a) in_list.remove(a) elif len(in_list)<1: print("Pair", pair

在python中,我有一个满是字符串的列表,我希望它按长度查找最大值。如果有一些字符串共享相同的长度,它们将同时打印出来。我有,但它似乎不起作用

if len(in_list)>1:
  while len(in_list) == a:
    a = max(in_list, key=len)
    print("Pair", pair,":", a)
    in_list.remove(a)

elif len(in_list)<1:
  print("Pair", pair, ": No Common Sequence Found")
如果len(在列表中)>1:
而len(在列表中)=a:
a=最大值(在列表中,键=len)
打印(“对”,对,:”,a)
在列表中。删除(a)

elif len(在列表中)给定的
字符串

maxes = [string for string in strings if len(string) == max(map(len, strings))]
更容易理解(而且这种方法效率更高;多亏Shadow Ranger指出了这一点):


如果字符串的长度与最长字符串的长度相同,则返回所有字符串。

给定字符串列表:

# word strings -> string to create a three way tie:

strings = "In python I have a list full of string and I want it to find the max by length".split()
我们可以做到简洁、合理、高效:

maxlen = max(len(s) for s in strings)

longest = filter(lambda s: len(s) == maxlen, strings)

print(list(longest))
但是,这种效率更多地是由于将事情向下推到C级别,而不是由于一个好的算法,当我们只需要遍历字符串列表一次时,我们遍历了字符串列表两次

longest = strings[:1]
length = len(longest)

for string in strings:
    string_length = len(string)

    if string_length >= length:

        if string_length > length:
            longest = []
            length = string_length

        longest.append(string)

print(longest)
在编译语言中,这种更详细的方法可能会更快,因为它避免了重复。如果我们想要优雅和速度,那就需要一本字典:

counter = {}

for string in strings:
    counter.setdefault(len(string), []).append(string)

longest = counter[max(counter)]

print(longest)
在这三种情况下,我们都得到了回报:

['python', 'string', 'length']

当len(在列表中)=a时,你想用
做什么?我不知道,确切地说。我是新手,但我只是想得到字符串的最大值。如果字符串的两个元素共享相同的长度,我希望它同时打印这两个元素。这有意义吗?哦,这对是我做的一个循环:“更可读的版本”(仍然可以使用
map
,就在前一行)也更有效;在条件中内联
max
计算将每次重新计算它,将
O(n)
工作转换为
O(n**2)
工作。Python不会为您优化这类事情。@ShadowRanger这也是真的。我将把它写下来作为旁注。我来自PPCG,在那里效率在大多数时候都是无关紧要的;):P
['python', 'string', 'length']