Python의 문자열 목록에 동일한 문자열 추가
하나의 문자열을 목록에 포함된 모든 문자열에 추가하고 완성된 문자열과 함께 새 목록을 작성하려고 합니다.예제:
list1 = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
*magic*
list2 = ['foobar', 'fobbar', 'fazbar', 'funkbar']
루프를 시도하고 목록을 이해하려고 했지만 헛수고였어요언제나처럼, 어떤 도움이라도 고마워요.
가장 간단한 방법은 목록 이해입니다.
[s + mystring for s in mylist]
.list
왜냐하면 그것은 빌트인 이름을 가리거나 숨기는데, 이것은 매우 좋지 않습니다.
또한 실제로 목록이 필요하지 않고 반복자만 필요한 경우 생성자 식이 더 효율적일 수 있습니다(단, 짧은 목록에서는 문제가 되지 않습니다).
(s + mystring for s in mylist)
이들은 매우 강력하고 유연하며 간결합니다.모든 훌륭한 비단뱀 프로그래머들은 그것들을 휘두르는 법을 배워야 한다.
my_list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
my_new_list = [x + string for x in my_list]
print my_new_list
인쇄:
['foobar', 'fobbar', 'fazbar', 'funkbar']
map
네, 네, 네.
my_list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
list2 = list(map(lambda orig_string: orig_string + string, my_list))
의 자세한 예는 기능 프로그래밍 도구에 대한 이 섹션을 참조하십시오.map
.
있다, 하다, 하다, 하다, 하다를 대답하겠습니다.pandas
.
import pandas as pd
list1 = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
list2 = (pd.Series(list1) + string).tolist()
list2
# ['foobar', 'fobbar', 'fazbar', 'funkbar']
추가 옵션으로 업데이트
다음은 제가 따라온 방법 중 몇 가지이며, 더 많은 방법이 있을 것이라고 확신합니다.
방법 1:
list1 = ['foo', 'fob', 'faz', 'funk']
list2 = [ls+"bar" for ls in list1] # using list comprehension
print(list2)
방법 2:.
list1 = ['foo', 'fob', 'faz', 'funk']
list2 = list(map(lambda ls: ls+"bar", list1))
print(list2)
방법 3:
list1 = ['foo', 'fob', 'faz', 'funk']
addstring = 'bar'
for index, value in enumerate(list1):
list1[index] = addstring + value #this will prepend the string
#list1[index] = value + addstring #this will append the string
방법 4:
list1 = ['foo', 'fob', 'faz', 'funk']
addstring = 'bar'
list2 = []
for value in list1:
list2.append(str(value) + "bar")
print(list2)
방법 5:
list1 = ['foo', 'fob', 'faz', 'funk']
list2 = list(map(''.join, zip(list1, ["bar"]*len(list1))))
print(list2)
키워드를 'list'와 같은 변수로 사용하지 마십시오. 대신 'list'는 'list1'로 이름이 변경됩니다.
다음 실험을 비토닉 방식으로 실행합니다.
[s + mystring for s in mylist]
다음과 같은 for 루프의 명백한 사용보다 최대 35 % 고속인 것 같습니다.
i = 0
for s in mylist:
mylist[i] = s+mystring
i = i + 1
실험.
import random
import string
import time
mystring = '/test/'
l = []
ref_list = []
for i in xrange( 10**6 ):
ref_list.append( ''.join(random.choice(string.ascii_lowercase) for i in range(10)) )
for numOfElements in [5, 10, 15 ]:
l = ref_list*numOfElements
print 'Number of elements:', len(l)
l1 = list( l )
l2 = list( l )
# Method A
start_time = time.time()
l2 = [s + mystring for s in l2]
stop_time = time.time()
dt1 = stop_time - start_time
del l2
#~ print "Method A: %s seconds" % (dt1)
# Method B
start_time = time.time()
i = 0
for s in l1:
l1[i] = s+mystring
i = i + 1
stop_time = time.time()
dt0 = stop_time - start_time
del l1
del l
#~ print "Method B: %s seconds" % (dt0)
print 'Method A is %.1f%% faster than Method B' % ((1 - dt1/dt0)*100)
결과.
Number of elements: 5000000
Method A is 38.4% faster than Method B
Number of elements: 10000000
Method A is 33.8% faster than Method B
Number of elements: 15000000
Method A is 35.5% faster than Method B
★★의 map
★★★★★★★★★★★★★★★★★」format
:
>>> list(map('{}bar'.format, ['foo', 'fob', 'faz', 'funk']))
['foobar', 'fobbar', 'fazbar', 'funkbar']
따라서 루프 변수는 없습니다.
3에서 할 수 (에서는 Python 2 에 3 에 3 에 에 it python 。(피톤 3호)[*map(...)]
에서는 Python 2만,map(...)
.
"문자열 목록에 문자열 목록 추가"로 비트 확장:
import numpy as np
lst1 = ['a','b','c','d','e']
lst2 = ['1','2','3','4','5']
at = np.full(fill_value='@',shape=len(lst1),dtype=object) #optional third list
result = np.array(lst1,dtype=object)+at+np.array(lst2,dtype=object)
결과:
array(['a@1', 'b@2', 'c@3', 'd@4', 'e@5'], dtype=object)
dtype udject는 str을 추가로 변환할 수 있다.
python에서 lamda inside map을 사용할 수 있습니다.라고 회색 코드 생성기는 썼다.https://github.com/rdm750/rdm750.github.io/blob/master/python/gray_code_generator.py # 코드는 여기에 있습니다.n-1 비트코드는 각 워드에 0이 부가되고, 그 다음 n-1 비트코드가 각 워드에 1이 부가됩니다.'''
def graycode(n):
if n==1:
return ['0','1']
else:
nbit=map(lambda x:'0'+x,graycode(n-1))+map(lambda x:'1'+x,graycode(n-1)[::-1])
return nbit
for i in xrange(1,7):
print map(int,graycode(i))
list2 = ['%sbar' % (x,) for x in list]
이 말은 쓰지 list
이름으로서, 빌트인 타입의 그림자가 되어 있습니다.
new_list = [word_in_list + end_string for word_in_list in old_list]
변수 이름에 "list"와 같은 이름을 사용하면 기본 제공 항목을 덮어쓰거나 덮어쓰게 되므로 좋지 않습니다.
혹시 모르니까
list = ['foo', 'fob', 'faz', 'funk']
string = 'bar'
for i in range(len(list)):
list[i] += string
print(list)
언급URL : https://stackoverflow.com/questions/2050637/appending-the-same-string-to-a-list-of-strings-in-python
'sourcecode' 카테고리의 다른 글
고유하지 않은 테이블/에일리어스 (0) | 2022.09.15 |
---|---|
Composer: file_put_contents(./composer.json): 스트림을 열지 못했습니다.권한 거부 (0) | 2022.09.15 |
마리아답의 직업.제어 프로세스가 오류 코드와 함께 종료되었기 때문에 서비스가 실패했습니다. (0) | 2022.09.15 |
왜 MariaDBB는 smallint에 텍스트를 삽입할 수 있습니까? (0) | 2022.09.14 |
장고에 민달팽이 어떻게 만들어요? (0) | 2022.09.14 |