Cách nối nhiều mục trong một dòng bằng Python


91

Tôi có:

count = 0
i = 0
while count < len(mylist):
    if mylist[i + 1] == mylist[i + 13] and mylist[i + 2] == mylist[i + 14]:
        print mylist[i + 1], mylist[i + 2]
    newlist.append(mylist[i + 1])
    newlist.append(mylist[i + 2])
    newlist.append(mylist[i + 7])
    newlist.append(mylist[i + 8])
    newlist.append(mylist[i + 9])
    newlist.append(mylist[i + 10])
    newlist.append(mylist[i + 13])
    newlist.append(mylist[i + 14])
    newlist.append(mylist[i + 19])
    newlist.append(mylist[i + 20])
    newlist.append(mylist[i + 21])
    newlist.append(mylist[i + 22])
    count = count + 1
    i = i + 12

Tôi muốn thực hiện các newlist.append()tuyên bố thành một vài tuyên bố.


Rõ ràng là nó không giống nhau nếu bạn nhận được các kết quả khác nhau.
JJJ

Đây là cú pháp không hợp lệ.
TerryA

4
Giả sử các đối tượng của bạn là danh sách, mã của bạn không phải là Python hợp lệ như bạn đang sử dụng []thay thế (). Vui lòng đăng mã làm việc thực sự.
BrenBarn

Câu trả lời:


225

Không. Phương pháp nối toàn bộ chuỗi là list.extend().

>>> L = [1, 2]
>>> L.extend((3, 4, 5))
>>> L
[1, 2, 3, 4, 5]

'insert' có chức năng như 'append' nhưng thêm vào đầu danh sách. Có một chức năng để thêm nhiều giá trị vào đầu danh sách không?
sparrow,

@sparrow: Không. Thay vào đó, hãy cắt nhỏ-gán.
Ignacio Vazquez-Abrams

bạn có cần đầu vào thứ hai là một danh sách hay chỉ là mỗi phần tử được phân tách bằng dấu phẩy?
Charlie Parker

@CharlieParker: Đối số list.extend()phải là đối số có thể lặp lại.
Ignacio Vazquez-Abrams

5

Không.

Trước hết, appendlà một hàm, vì vậy bạn không thể viết append[i+1:i+4]vì bạn đang cố gắng lấy một phần của một thứ không phải là một chuỗi. (Bạn không thể có được một phần tử của nó, một trong hai: append[i+1]là sai vì lý do tương tự.) Khi bạn gọi một hàm, tham số đi trong dấu ngoặc đơn , tức là những người tròn: ().

Thứ hai, những gì bạn đang cố gắng làm là "lấy một trình tự và đặt mọi phần tử trong đó vào cuối trình tự khác, theo thứ tự ban đầu". Đó là chính tả extend. appendlà "lấy thứ này và đặt nó ở cuối danh sách, dưới dạng một mục duy nhất , ngay cả khi nó cũng là một danh sách ". (Nhớ lại rằng danh sách là một loại trình tự.)

Nhưng sau đó, bạn cần lưu ý rằng đó i+1:i+4là một cấu trúc đặc biệt chỉ xuất hiện bên trong dấu ngoặc vuông (để lấy một lát cắt từ một chuỗi) và dấu ngoặc nhọn (để tạo một dictđối tượng). Bạn không thể chuyển nó cho một hàm. Vì vậy, bạn không thể extendvới điều đó. Bạn cần tạo một chuỗi các giá trị đó và cách tự nhiên để làm điều này là với rangehàm.



2

Dùng cái này :

#Inputs
L1 = [1, 2]
L2 = [3,4,5]

#Code
L1+L2

#Output
[1, 2, 3, 4, 5]

Bằng cách sử dụng toán tử (+), bạn có thể bỏ qua nhiều toán tử nối thêm & mở rộng chỉ trong một dòng mã và điều này hợp lệ cho nhiều hơn hai trong số các danh sách bằng L1 + L2 + L3 + L4 ....... vv.

Học vui vẻ ... :)


1
mylist = [1,2,3]

def multiple_appends(listname, *element):
    listname.extend(element)

multiple_appends(mylist, 4, 5, "string", False)
print(mylist)

ĐẦU RA:

[1, 2, 3, 4, 5, 'string', False]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.