将每2个字符串组合为1个字符串

Cha*_*n33 9 python list

我有一个清单a

list = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']
Run Code Online (Sandbox Code Playgroud)

我想得到一个字符串列表,比如["247400015203223811, DPF", "247400015203223813, ZPF"] 将每2个字符串组合成1个字符串

我尝试过

list2 = []
list = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']

        for i in range(0, len(list), 2):
            list2.append(list[i] + list[i])
Run Code Online (Sandbox Code Playgroud)

这有可能吗?

sac*_*cuL 15

你几乎拥有它,你可以使用这个列表理解:

mylist = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']

mylist2 = [mylist[i]+', '+mylist[i+1]for i in range(0,len(mylist),2)]

>>> mylist2
['247400015203223811, DPF', '247400015203223813, ZPF']
Run Code Online (Sandbox Code Playgroud)

确保不要将关键字list用作变量名,因为它掩盖了python内置类型(我改为将其更改为mylist)


Reu*_*ani 6

我认为切片zip可以在这里很好地工作:

# assuming list of stringals is named `strings`
even_indexed = strings[::2]
odd_indexed = strings[1::2]

# create pairs to join
pairs = zip(even_indexed, odd_indexed)

# join all pairs
result = list(map(', '.join, pairs))
Run Code Online (Sandbox Code Playgroud)

无法测试,但这可以解决这个问题.


Gsk*_*Gsk 5

当然是可能的,你几乎得到了答案:
你只需要在第二个单词的索引中加1:

list2 = []

list1 = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']

for i in range(0, len(list1), 2):
    list2.append(list1[i] + list1[i+1])

print(list2) # OUTPUT: ['247400015203223811DPF', '247400015203223813ZPF']
Run Code Online (Sandbox Code Playgroud)

但你也许想要在两个单词之间加一个点:

list2.append(list1[i] + '.' + list1[i+1]) # OUTPUT: ['247400015203223811.DPF', '247400015203223813.ZPF']
Run Code Online (Sandbox Code Playgroud)


Pat*_*ugh 5

在列表中配对项的一种常见模式是在列表上获取迭代器,然后zip在迭代器中使用自身.从那里开始,加入对", "就像打电话一样容易str.join

# Don't reuse the name list, it already has a meaning
list_ = ['247400015203223811', 'DPF', '247400015203223813', 'ZPF']

it = iter(list_)

print([", ".join(pair) for pair in zip(it, it)])
# ['247400015203223811, DPF', '247400015203223813, ZPF']
Run Code Online (Sandbox Code Playgroud)