Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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
Python 将列表值合并为一个字符串_Python - Fatal编程技术网

Python 将列表值合并为一个字符串

Python 将列表值合并为一个字符串,python,Python,我有这样的清单: subsets = ["T10", "T12", "T13", "A15", "T23"] 我需要在这个列表中循环检查T,然后是A,如果发现它合并了T&A,即 这是我需要的新列表: newset = ["T10", "T12", "T13, A15", "T23"] 我试图找出如何循环遍历列表并检查最左边的值。我只需要{下一个列表项的字符串的左字符}的表达式-我想 for i in range(len(subsets)): if {left char of string

我有这样的清单:

subsets = ["T10", "T12", "T13", "A15", "T23"]
我需要在这个列表中循环检查T,然后是A,如果发现它合并了T&A,即

这是我需要的新列表:

newset = ["T10", "T12", "T13, A15", "T23"]
我试图找出如何循环遍历列表并检查最左边的值。我只需要{下一个列表项的字符串的左字符}的表达式-我想

for i in range(len(subsets)):
  if {left char of string for next list item} = "A":
    newset.append(subset[i]+", "+ subset[i+1])
    i+=1
  else:
    newset.append(subset[i]) 

下面是一个简单的
for loop
方法,它返回一个新列表:

f = []
for item in subsets:
    if f and (item[:1], f[-1][:1]) == ('A', 'T'):
        f[-1] = '{}, {}'.format(f[-1], item)
    else:
        f.append(item)

print(f)

['T10', 'T12', 'T13, A15', 'T23']
it = iter(subsets)
result = [next(it)]
for elem in it:
    if elem[:1] == 'A' and result[-1][:1] == 'T':
        # preceding element is T.., this is A.., combine into a single string
        result[-1] = f'{result[-1]}, {elem}'
    else:
        result.append(elem)

下面是一个简单的
for loop
方法,它返回一个新列表:

f = []
for item in subsets:
    if f and (item[:1], f[-1][:1]) == ('A', 'T'):
        f[-1] = '{}, {}'.format(f[-1], item)
    else:
        f.append(item)

print(f)

['T10', 'T12', 'T13, A15', 'T23']
it = iter(subsets)
result = [next(it)]
for elem in it:
    if elem[:1] == 'A' and result[-1][:1] == 'T':
        # preceding element is T.., this is A.., combine into a single string
        result[-1] = f'{result[-1]}, {elem}'
    else:
        result.append(elem)

从项目中创建一个新列表,并检查列表中的最后一个项目是否以
T
开头,当前项目是否以
a
开头。如果是,请替换新列表中的最后一项:

f = []
for item in subsets:
    if f and (item[:1], f[-1][:1]) == ('A', 'T'):
        f[-1] = '{}, {}'.format(f[-1], item)
    else:
        f.append(item)

print(f)

['T10', 'T12', 'T13, A15', 'T23']
it = iter(subsets)
result = [next(it)]
for elem in it:
    if elem[:1] == 'A' and result[-1][:1] == 'T':
        # preceding element is T.., this is A.., combine into a single string
        result[-1] = f'{result[-1]}, {elem}'
    else:
        result.append(elem)
我使用
iter()
next()
有效地用第一个元素填充输出列表,并且省去了测试
result
是否至少有一个元素的麻烦

演示:


注意:这也会将连续的
A*
元素合并到前面的
T
元素中,因此
[…,“T13”,“A15”,“A16”,“T17”,…]
会导致
[…,“T13,A15,A16”,“T17”,…]
从您的项目构建一个新列表,并检查该列表中的最后一个项目是否以
T
开头,而电流为
A
。如果是,请替换新列表中的最后一项:

f = []
for item in subsets:
    if f and (item[:1], f[-1][:1]) == ('A', 'T'):
        f[-1] = '{}, {}'.format(f[-1], item)
    else:
        f.append(item)

print(f)

['T10', 'T12', 'T13, A15', 'T23']
it = iter(subsets)
result = [next(it)]
for elem in it:
    if elem[:1] == 'A' and result[-1][:1] == 'T':
        # preceding element is T.., this is A.., combine into a single string
        result[-1] = f'{result[-1]}, {elem}'
    else:
        result.append(elem)
我使用
iter()
next()
有效地用第一个元素填充输出列表,并且省去了测试
result
是否至少有一个元素的麻烦

演示:


注意:这也会将连续的
A*
元素合并到前面的
T
元素中,因此
[…,“T13”,“A15”,“A16”,“T17”,…]
导致
[…,“T13,A15,A16”,“T17”,…]

for循环中的
i+=1
恐怕无法工作。下一次迭代,
i
再次设置为
range
给定的值,因此您丢失了增量。您需要一个
while
循环来执行此操作。如果有两个连续的
a
元素,会发生什么情况?例如,
[…,“T13”,“A15”,“A16”,“T17”,“…]
?是否忽略
A16
,或者将其与
T13、A15
组合?恐怕
for
循环中的
i+=1
不起作用。下一次迭代,
i
再次设置为
range
给定的值,因此您丢失了增量。您需要一个
while
循环来执行此操作。如果有两个连续的
a
元素,会发生什么情况?例如,
[…,“T13”,“A15”,“A16”,“T17”,“…]
?是否忽略了
A16
,或者将其与
T13、A15
组合?使用
join
组合两个项目是过分的<代码>上一个+”,“+项快得多<代码>加入在同时有许多项要合并时效率更高。在这里,如果有很多字符串要组合,您只需对
join
进行多个调用,而不是单个调用。与其使用
startswith
,不如只使用
item[:1]='A'和
prev[:1]='T',甚至
(item[:1],prev[:1])==('A',T')
@chepner:和
f{prev},{item}
会更快。接下来,您实际上不需要
prev
。只需使用
f[-1]
@MartijnPieters啊,我忘了计时。使用
join
组合两个项目太过分了<代码>上一个+”,“+项
快得多<代码>加入
在同时有许多项要合并时效率更高。在这里,如果有很多字符串要组合,您只需对
join
进行多个调用,而不是单个调用。与其使用
startswith
,不如只使用
item[:1]='A'和
prev[:1]='T',甚至
(item[:1],prev[:1])==('A',T')
@chepner:和
f{prev},{item}
会更快。接下来,您实际上不需要
prev
。只要使用
f[-1]
@MartijnPieters啊,我忘了计时了。