8 ответов:
это может быть сделано с пониманием списка. Они в основном принимают форму
[function-of-item for item in some-list]. Например, чтобы создать новый список, в котором все элементы имеют нижний регистр (или верхний регистр во втором фрагменте), вы должны использовать:>>> [x.lower() for x in ["A","B","C"]] ['a', 'b', 'c'] >>> [x.upper() for x in ["a","b","c"]] ['A', 'B', 'C']вы также можете использовать :
>>> map(lambda x:x.lower(),["A","B","C"]) ['a', 'b', 'c'] >>> map(lambda x:x.upper(),["a","b","c"]) ['A', 'B', 'C']
кроме того, что легче читать (для многих людей), список понимания выиграть гонку скорости, тоже:
$ python2.6 -m timeit '[x.lower() for x in ["A","B","C"]]' 1000000 loops, best of 3: 1.03 usec per loop $ python2.6 -m timeit '[x.upper() for x in ["a","b","c"]]' 1000000 loops, best of 3: 1.04 usec per loop $ python2.6 -m timeit 'map(str.lower,["A","B","C"])' 1000000 loops, best of 3: 1.44 usec per loop $ python2.6 -m timeit 'map(str.upper,["a","b","c"])' 1000000 loops, best of 3: 1.44 usec per loop $ python2.6 -m timeit 'map(lambda x:x.lower(),["A","B","C"])' 1000000 loops, best of 3: 1.87 usec per loop $ python2.6 -m timeit 'map(lambda x:x.upper(),["a","b","c"])' 1000000 loops, best of 3: 1.87 usec per loop
понимание списка - это то, как я это сделаю, это "Питонический" способ. В следующей расшифровке показано, как преобразовать список в верхний регистр, а затем обратно в Нижний:
pax@paxbox7:~$ python3 Python 3.5.2 (default, Nov 17 2016, 17:05:23) [GCC 5.4.0 20160609] on linux Type "help", "copyright", "credits" or "license" for more information. >>> x = ["one", "two", "three"] ; x ['one', 'two', 'three'] >>> x = [element.upper() for element in x] ; x ['ONE', 'TWO', 'THREE'] >>> x = [element.lower() for element in x] ; x ['one', 'two', 'three']
для этого образца понимание является самым быстрым
$ python -m timeit -s 's=["one","two","three"]*1000' '[x.upper for x in s]' 1000 loops, best of 3: 809 usec per loop $ python -m timeit -s 's=["one","two","three"]*1000' 'map(str.upper,s)' 1000 loops, best of 3: 1.12 msec per loop $ python -m timeit -s 's=["one","two","three"]*1000' 'map(lambda x:x.upper(),s)' 1000 loops, best of 3: 1.77 msec per loop
mylist = ['Mixed Case One', 'Mixed Case Two', 'Mixed Three'] print map(lambda x: x.lower(), mylist) print map(lambda x: x.upper(), mylist)
студент спрашивает, другой студент с той же проблемой отвечает :))
fruits=['orange', 'grape', 'kiwi', 'apple', 'mango', 'fig', 'lemon'] newList = [] for fruit in fruits: newList.append(fruit.upper()) print(newlist)
устранение:
>>> s = [] >>> p = ['This', 'That', 'There', 'is', 'apple'] >>> [s.append(i.lower()) if not i.islower() else s.append(i) for i in p] >>> s >>> ['this', 'that', 'there', 'is','apple']это решение создаст отдельный список, содержащий строчные элементы, независимо от их исходного регистра. Если исходный регистр является верхним, то
list sбудет содержать нижний регистр соответствующего элемента вlist p. Если исходный регистр элемента списка уже строчный вlist pтутlist sсохранит регистр элемента и сохранит его в нижнем регистре. Теперь вы можете использоватьlist sвместоlist p.
Comments